1. 概述
1.1 目的
结合客户实际的配置文档信息,介绍插件具体的配置步骤和参数。希望降低插件使用用户的配置成本,助力用户自行完成相关配置
1.2 应用场景
介绍Oauth 2认证和自定义认证两种模式下,具体的参数配置方法
2. Oauth2认证模式实例
Oauth 2认证作为一种通用的认证协议,客户侧需要有统一认证平台。可实现在统一认证平台中,所有完成认证的业务系统之间,进行跨域的单点登录和单点登出,无需重复登录
2.1 具体配置
Oauth 2认证模式下:
首先,需要在插件的初始参数步骤配置中,获取到登录统一认证平台后,携带的code参数;
接下来,在令牌申请步骤中,通过上一步获取的code参数,得到access_token参数;
最后,在用户信息步骤中,通过上一步获取的access_token参数,得到用户信息。
由于信息安全的缘故,以下配置中,部分参数用XXX代替
2.1.1 初始参数
1、客户文档信息
获取code
请求说明
请求方式:get 方式
请求路径:http://[ip]:[port]/sso/oauth/authorize?response_type=code&client_id=[client_id]&redirect_uri=[redirect_uri]
参数说明
参数 | 参数类型 | 必须 | 说明 |
response_type | String | 是 | 固定值:code |
redirect_uri | String | 是 | 回调地址 |
client_id | String | 是 | 自建应用编号 |
返回说明
参数 | 参数类型 | 必须 | 说明 |
code | String | 是 | 认证授权码 |
2、插件实际配置
配置 | 说明 |
Client id、Client Secret,客户给出,此处用XXX代替 Token name:code。与配置文档中的response_type一致 认证接口地址:${"http://IP/sso/oauth/authorize?response_type=code&client_id="+client_id +"&redirect_uri=IP2"} | 1、认证接口地址中的IP和IP2分别为客户提供的实际业务中的统一认证平台地址和重定向地址; 2、具体配置中的写法规则: (1)认证接口地址整体结构与配置文档信息中的请求路径一致; (2)${}的写法,表示{}中的内容,有参数引用或者公式计算; (3)“”中的内容,为固定内容(如地址中的"http://IP/sso/oauth/authorize?response_type=code&client_id="、"&redirect_uri=IP2") (4)参数引用,格式为:+参数(如地址中+client_id ;client_id后面的“+”,用于拼接后面的内容) 按照上述写法规则,认证接口地址也可以写成: ${"http://IP/sso/oauth/authorize?response_type=code&client_id=XXX&redirect_uri=IP2"} ——将client_id写成了确定值XXX,所以可以囊括在“”中 ${"http://IP/sso/oauth/authorize?response_type=code="+client_id +"&redirect_uri”=+requestURL} ——将redirect_uri写成了引用值requestURL,格式为:+requestURL。可以动态识别客户首先访问的决策系统或报表地址 |
2.1.2 令牌申请
1、客户文档信息
通过code获取access_token
请求方式:get方式
请求路径:http:///[ip]:[port]/sso/oauth/accessToken?client_id=[client_id]&client_secret=[client_secret]&grant_type=authorization_code&redirect_uri= [redirect_uri]&code=[code]
参数说明
参数 | 参数类型 | 必须 | 说明 |
---|---|---|---|
grant_type | String | 是 | 授权模式,固定值:authorization_code |
redirect_uri | String | 是 | 回调地址 |
client_id | String | 是 | 自建应用编号 |
client_secret | String | 是 | 自建应用客户端密钥 |
code | String | 是 | 认证请求成功返回的code |
返回说明
参数 | 参数类型 | 说明 |
---|---|---|
access_token | String | 访问令牌 |
token_type | String | 令牌类型,bearer类型,大小写不敏感 |
expires_in | String | 过期时间,单位/毫秒,页面可设置 |
refresh_token | String | 更新令牌,可选,用即将过期token换取新token |
scope | String | 指权限范围,可选,此处为read |
2、插件实际配置
配置 | 说明 |
请求地址: get ${"http://IP/sso/oauth/accessToken?client_id=XXX&client_secret=XXX&grant_type=authorization_code&redirect_uri=IP2&code="+code} 请求头、请求体无需配置 请求结果:access_token:access_token | 1、请求地址整体结构与配置文档信息中的请求路径一致; 2、“”中的内容,为固定内容,此处为:http://IP/sso/oauth/accessToken?client_id=XXX&client_secret=XXX&grant_type=authorization_code&redirect_uri=IP2&code= 3、code为引用初始参数步骤中获取的参数值,此处写法为:+code |
2.1.3 用户信息
1、客户文档信息
通过access_token获取用户信息
请求方式:get方式
请求路径:http://[ip]:[port]/sso/oauth/userInfo?access_token=[access_token]
参数说明
参数 | 参数类型 | 必须 | 说明 |
---|---|---|---|
access_token | String | 是 | 访问令牌 |
返回说明
参数 | 参数类型 | 说明 |
---|---|---|
loginName | String | 登录用户账号 |
更多用户信息 | String | 通过页面自定义配置返回 |
2、插件实际配置
配置 | 说明 |
请求地址: get ${"http://IP/sso/oauth/userInfo?access_token="+access_token} 请求头、请求体无需配置 请求结果:fr_login_name:uid,其中参数值uid,为客户侧提供的登录用户值 | 1、请求地址整体结构与配置文档信息中的请求路径一致; 2、“”中的内容,为固定内容,此处为:http://IP/sso/oauth/userInfo?access_token=" 3、code为引用令牌申请步骤中获取的参数值,此处写法为:+access_token |
2.2 效果展示
访问帆软决策系统时,跳转至客户侧的统一认证平台。登录成功后,再跳转回帆软决策系统
3.自定义认证模式实例
自定义认证模式应用于,客户与帆软约定一套加解密逻辑。通过插件配置,解密token参数,得到用户名
3.1 实例一
3.1.1 期望效果
客户部署了蓝凌OA平台,希望可以直接打开OA系统中集成的报表,无需再次输入帆软系统的账号密码;
背景:客户的帆软决策平台和蓝凌OA的访问地址主域名一致,且蓝凌OA中部署了SSO组件,支持 ltaptoken 认证。
3.1.2 具体配置
客户登录蓝凌OA后,会在域名的cookie中,记录一个用户名生成的token。在主域名一致的情况下,可以通过插件读取并解析出用户名;
通过参数获取的方式实现
配置 | 说明 |
参数名:fr_login_name 参数值:${LtpaToken(cookie(request, "LtpaToken"))} | 里层的 LtpaToken 表示从cookie中,获取的参数名。 外层的 LtpaToken 表示,按照 Ltpatoken 逻辑解析出用户名。 |
不同客户有不同的参数加解密逻辑,视客户的具体情况,进行参数值的配置
3.2 实例二
3.2.1 期望效果
客户门户系统与帆软系统集成,在门户中点击相应链接,跳转到帆软系统,无需再次输入帆软系统的账号密码
3.2.2 具体配置
通过数据请求的方式实现
客户文档信息 | 插件实际配置 |
接口地址:http://192.168.1.1:8080/com.sso.login 参数提交方式:http get 访问示例: http://192.168.1.1:8080/com.sso.login?token=13dad-987gej-ww3223&Name=amstd 返回值: Json字符串: 例子: 成功返回 {"result":{"login":true,"userId":"aabbcc}} 参数说明: token:门户访问系统登录时附带的token串,该token验证成功后失效 Name:amstd(固定值) | 请求地址:get/${ "http://192.168.1.1:8080/com.sso.login?token="+token+"&Name=amstd"} 请求头、请求体:不配置 请求结果: fr_login_name:result.userId 注意:1、请求地址中,token配置成动态参数+token; 2、请求结果中,参数值的写法,参考客户文档,为result.userId |