紫光工业互联网平台应用服务开发
(统一用户认证对接)
修订历史记录
日期 |
版本 |
说明 |
作者 |
2019/05/16 |
V1.0 |
初版 |
紫光云引擎项目组 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 引言
1.1 文档目的
为紫光工业互联网平台编写统一用户认证对接方案,其目的为实现本平台纳管其他子平台用户,最终实现从本平台跳转登录其他子平台时实现用户免登陆并且用户信息同步的原则。
1.2 方案背景
n 本平台发起登录,登录成功,过后跳转其他子平台。
n 第三方平台发起登录,至本平台验证用户,验证成功,第三方平台登录成功。
2 统一用户认证对接
2.1 方案一
本平台发起登录,登录成功,过后跳转其他子平台。
目前子平台主要包括物联网平台、大数据平台、态势感知平台等。对接方案主要为用户登录使用本平台后,希望访问子平台,本平台根据用户信息生成一串加密后的Token,携带Token跳转子平台,子平台接收Token后反向使用Token至本平台换取用户信息,子平台得到用户信息后,需要验证子平台是否有该用户信息,如没有则保存该用户信息同时赋予初始角色与权限,如有则使用该用户在子平台的角色和权限。
携带Token
登录使用
Token换取用户信息
2.2 接口设计
公共参数说明:
success:接口状态,true-正常,false-异常
message:接口返回值描述
data:返回数据,默认为空字符串
接口1:使用Token换取用户信息
接口地址:http://ip:port/devops-auth/token
请求方式:POST
入参:RequestBody方式
token-必需,跳转传递的token信息,一串加密字符串
例如
{"token": "e6c54491-b565-4eed-8e5d-ed62343f895a"}
返回值:
{
"success": 1,
"message": "成功",
"data": {
"userMail": "hellolibo@yeah.net",
"userName": "ziyun-sz",
"userPhone": "18888888888"
}
}
2.3 方案二
第三方平台发起登录,至本平台验证用户,验证成功,第三方平台登录成功。
目前第三方平台方主要为生态合作伙伴。统一用户认证对接主要目的为本平台用户可以正常登录第三方平台。
对接方案为:
一、在本平台对接第三方平台进行注册,提供第三方平台的关键信息给本平台,包括应用名称、应用URL、应用描述等。
获得client_id和client_secret,这两个值是后续进行应用接口调用的关键;
client_id:3a66a4f6-38b0-42cd-9f95-d3024d5b4ce8
client_secret: e6c54491-b565-4eed-8e5d-ed62343f895a
二、第三方平台发起登录请求,携带client_id和client_secret以及用户名、密码至本平台进行用户验证,本平台返回授权码Code给第三方平台。
三、第三方平台使用授权码Code再次至本平台换取用户有效AccessToken。
四、第三方平台最后使用用户有效AccessToken至本平台换取用户信息,第三方平台得到用户信息后,需要验证第三方平台是否有该用户信息,如没有则保存该用户信息同时赋予初始角色与权限,如有则使用该用户在第三方平台的角色和权限。
携带用户名密码
返回Code
登录 携带Code
返回Token
携带Token
Token换取用户信息
接口2:使用用户名密码获取授权码Code
接口地址:http://ip:port/devops-auth/oauth2/code
请求方式:POST
入参:RequestBody方式
clientId-必需,注册的客户端ID
clientSecret-必需,注册的客户端Secret
username-必需,用户名
password-必需,密码
例如
{"clientId":"e6c54491-b565-4eed-8e5d-ed62343f895a","clientSecret":"e6c54491-b565-4eed-8e5d-ed62343f895a","username":"zhangsan","password": "123456"}
返回值:
{
"success": 1,
"message": "成功",
"data": {
"oauthCode":"4eed-8e5d-ed62343f895a"
}
接口3:使用授权码Code换取AccessToken
接口地址:http://ip:port/devops-auth/oauth2/token
请求方式:POST
入参:RequestBody方式
clientId-必需,注册的客户端ID
clientSecret-必需,注册的客户端Secret
oauthCode-必需,授权码Code
例如
{"clientId":"e6c54491-b565-4eed-8e5d-ed62343f895a","clientSecret":"e6c54491-b565-4eed-8e5d-ed62343f895a","oauthCode":"4eed-8e5d-ed62343f895a"}
返回值:
{
"success": 1,
"message": "成功",
"data": {
"accessToken":"4eed-8e5d-ed62343f895a"
}
接口4:使用AccessToken换取用户信息
接口地址:http://ip:port/devops-auth/oauth2/info
请求方式:POST
入参:RequestBody方式
clientId-必需,注册的客户端ID
clientSecret-必需,注册的客户端Secret
accessToken-必需,用户有效AccessToken
例如
{"clientId":"e6c54491-b565-4eed-8e5d-ed62343f895a","clientSecret":"e6c54491-b565-4eed-8e5d-ed62343f895a","accessToken":"4eed-8e5d-ed62343f89"}
返回值:
{
"success": 1,
"message": "成功",
"data": {
"userMail": "hellolibo@yeah.net",
"userName": "ziyun-sz",
"userPhone": "18888888888"
}
}