单点登录到有度
流程示意

参数配置
a. 打开有度服务器MySQL(帐号:root,密码:root,端口:13307,默认只允许本机访问)
b. 进入库emoa_auth,打开表t_trust
c. 新增一条配置,设置客户端登录的服务器信息
-
buin:总机号码
-
dnshost:有度服务器地址
-
dnsport:有度服务端口(默认:7080)
d. secret:接口调用时验证的授权密匙,可自定义字符串
Token(loginKey)获取接口
接口说明
该接口不属于任何应用类型,不需要通过AppId访问。
本文的token指的是loginKey,用于登录有度客户端。
接口地址
请求方式:仅GET请求
https://[SERVER:7443]/v3/api/jginfo/getloginkey
[SERVER:7443]指连接的服务器地址。
参数说明
参数 | 必须 | 说明 |
---|---|---|
secret | 是 | 数据库配置的授权密匙 |
account | 是 | 账号 |
返回格式
{
"status": {
"code": 0,
"message": "Action completed successful",
"createdAt": "2019-01-15 11:38:08"
},
"token": "7b226275696e223a37323930373132392c22646e73686f7374223a22796f7564752e696d222c22646e73706f7274223a38302c226c6f67696e6b6579223a223233323837303330464644413433393039383839423034323335454536393843227d"
}
该接口响应数据无加密
参数说明
参数 | 说明 |
---|---|
status | 接口调用状态说明 |
code | 状态码(0:成功,1003:认证失败,1026:用户名不存在) |
message | 状态码相关的信息描述 |
createdAt | 结果返回时间 |
token | 用于单点登录Token值 |
客户端登录
通过JS调起有度客户端
有度PC客户端安装时,向注册表写入“imlogin://”关联到有度PC进程。
有度客户端调起URL为 imlogin://ssologin?token=$TOKEN$
WEB后台获取到token后,替换(imlogin://ssologin?token=$TOKEN$)模版参数$TOKEN$,js打开此链接,浏览器自动唤起有度PC并单点登录。
单点登录有度PC客户端场景
PC客户端最常见的应用场景是用户在浏览器登录了业务系统(如:OA),OA页面有一个“有度”图标,点击时自动调起有度PC端,并自动完成登录,步骤如下:
① 用户在OA系统点击有度图标。
② OA后台向有度服务器获取该用户的登录token(此token跟有度单点登录其他系统的token不同,不能混用)。
③ 有度服务器返回登录的token。
④ OA后台将token返回给前台页面,前台页面调用PC接口,传token传入,调起PC客户端。
⑤ PC客户端解析token包含的服务器地址和登录key。
⑥ PC客户端登录到有度服务器。
登录示例代码
本示例依赖于JAVA运行环境,在使用前请安装JAVA运行环境。
本示例仅提供集成示例,在正式环境请根据本实例集成到您运行的环境中去。
为节省成本,本示例将多个类写入在同一个Java文件中。
下载JAVA源码
通过cmd控制台操作
注意:你需要在AppServer.java存放目录打开cmd控制台。以下仅适用Windows操作系统,其余系统请参照Java编译自行测试运行。
代码会向"https://127.0.0.1:7443/v3/api/jginfo/getloginkey"获取登录token,如果有度服务器不是安装在本机,需要修改服务器地址。
编译JAVA环境
javac -encoding utf-8 AppServer.java
没有输出即为编译成功
运行class文件
将.\加入到classpath,将当前目录设置为java classpath:
set classpath=%classpath%;.\;
运行java程序
java AppServer
运行成功后会有输出信息:YD AppServer linsten on: 9001
在浏览器上测试
在测试前,你需要将account、secret值进行替换。account为有度用户名,secret为在数据库设置的值。
测试地址:http://localhost:9001/login?account=youdu&secret=123456
结果
验证失败输出提示。
验证成功调起有度PC客户端并登录成功。
开发配置
PC 协议格式
有度PC客户端安装时,向注册表写入“imlogin://”关联到有度PC进程。
WEB后台获取到token后,替换(imlogin://ssologin?token=$TOKEN$)模版参数$TOKEN$,js打开此链接,浏览器自动唤起有度PC并单点登录。
iOS协议格式
NSString *prefix = @"youdu://reverse_login/";
NSString *content = [[[NSString stringWithFormat:@"{\"token\":\"%@\",\"backurl\":\"reverselogin://\"}", self.tokenField.text] dataUsingEncoding:NSUTF8StringEncoding] hexStringRepresentationUppercase:NO];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", prefix, content]]];
Android协议格式
Intent intent = new Intent();
intent.setPackage("im.xinda.youdu");
intent.setAction("im.xinda.youdu.ui.Reverselogin"); intent.putExtra("token","7B226275696E223A37323930373132392C22646E73686F7374223A22222C22646E73706F7274223A38302C226C6F67696E6B6579223A22736466736466736466227D");
startActivity(intent);
其他说明
有度单点登录其他系统token:该token有效期3分钟,通过此token可以获取对应的用户信息。
其他系统单点登录有度token:该token也叫loginKey,包含了有度服务器地址、端口、登录key,客户端接收此token后会解密,获取里面的参数去执行登录,两个token不能混用。