跳转至

单点登录到第三方系统

在有度即时通客户端企业应用面板,通过点击应用图标实现单点登录至第三方系统。需要第三方系统集成有度的加密token,从而实现无需用户再次输入用户名密码即可进入到业务系统。

流程说明

单点登录集成示例:https://github.com/youduim/youdu-sso-demo-java

有度单点登录到第三方系统流程示意图:

b01_00006

主要步骤:

① 用户点击带有$TOKEN$模版参数的链接。

② 客户端向服务器获取token。

③ 服务器返回token。

④ 客户端将token替换模版参数$TOKEN$,并打开浏览器访问此链接。

⑤ OA服务器收到请求,取出token,将token发到有度服务器验证。

⑥ 有度服务器验证成功,返回用户身份信息。

⑦ OA服务器允许用户登录。

使用SDK验证Token

在有度管理后台-->企业应用-->应用管理-->主页型应用配置的URL中使用模板参数$TOKEN$,有度客户端在请求时会自动将该模板参数替换成identifytoken。

如过还没准备好接收URL请求的Web服务器,可以将浏览器地址栏identifytoken值复制出来先进行单元测试。

token仅三分钟有效,失效后需要重新获取。

初始化客户端

String ydServerHost = "127.0.0.1:7080";
IdentifyClient identifyClient = new IdentifyClient(YDSERVER_HOST);

功能说明

使用SDK验证identifytoken是否有效

方法原型

public UserInfo idetify(String ydToken) throws HttpRequestException, ParamParserException, ServiceException;

参数说明

参数名称 描述 类型
ydToken identifytoken凭证 String

返回结果说明

成功:返回UserInfo实体

失败:发生错误(如请求失败),抛出异常。

请求示例

UserInfo userInfo = identifyClient.idetify(YD_IDENTIFY_TOKEN);
System.out.println(userInfo);

使用API验证

参见单点登录API

特殊情况

场景1

Web服务器代码无法修改,但提供了登录进入系统的接口,针对此场景,可以写一个中间插件,插件负责验证token,然后调用Web服务器接口登录系统。

提供给有度客户端的链接地址是插件的url,参数带上将要跳转的目标url,如:http://plugin_ip:8080/token=$TOKEN$&redirect=http://oa_ip:8080

场景2

Web服务器代码无法修改,并且没有提供登录系统的接口,针对此场景,可以写一个中间插件,用户首次访问,插件提供页面让用户填写访问Web系统的帐号和密码,插件将帐号密码保存起来(建议加密保存)。

下次访问时:

① 准备好一个页面(如:jump.html),此页面在onload事件自动提交表单给目标Web服务器。jump.html的表单从正式登录页面拷贝过来,用户名和密码做成模版参数$UserName$、$Pwd$,待插件替换。

② 插件收到跳转登录请求时先验证token,获取用户名。

③ 通过用户名获取之前保存的密码,将用户名和密码替换jump.html表单模版参数,将此html返回给浏览器。

④ 浏览器收到jump.html后onload事件自动提交带有用户名和密码的表单给Web服务器,实现登录。