跳转至

单点登录到有度

流程示意

参数配置

a. 打开有度服务器MySQL(帐号:root,密码:root,端口:13307,默认只允许本机访问)

b. 进入库emoa_auth,打开表t_trust

c. 新增一条配置,设置客户端登录的服务器信息

  • buin:总机号码

  • dnshost:有度服务器地址

  • dnsport:有度服务端口(默认:7080)

d. secret:接口调用时验证的授权密匙,可自定义字符串

img

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源码

AppServer.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不能混用。