问卷/试卷服务
成长值服务
短信服务

单点登录Oauth2

一、授权简介

集成了Spring security Oauth2,开发者可以通过国际标准的 OAuth2.0 授权机制,在用户授权的情况下,得到code用于换取用户信息的令牌。在拿到用户的授权令牌后可访问用户中心服务上相关接口,如用户信息接口。

二、使用步骤

1.向用户中心申请client_id、client_secret

2.开始使用

三、术语

认证中心:用户中心

第三方平台:接入方

四、域名地址

http://{{用户中心域名}}

用户中心域名开发环境 tcc-dev.interlib.com.cn

用户中心域名生产环境 ofa.wenyouyun.com

五、认证流程

lombok

第一步:

先向用户中心申请一个第三方应用ID和应用密钥,(注意保存该重要信息,不支持找回,可重置密钥)

第二步:获取code

用户跳转后,用户中心会要求用户登录,然后询问是否同意给予该请求的网站授权。用户表示同意,这时用户中心就会跳回redirect_uri参数指定的网址并在地址栏返回code

第三步:获取token

当请求的网站拿到授权码以后,就可以在后端,向授权中心请求令牌(token有效时间为7天,如果未过期还是生成同一个token)

第四步:访问自己的资源服务

用户中心收到请求以后,就会颁发令牌.

六、接口

1、获取授权code:

请求方式:GET

请求地址:http://{{用户中心域名}}/api/tcc-user-center/oauth/authorize

请求参数:

参数 类型 必填 说明
response_type String 认证类型,固定传code
client_id String 注册到授权中分配的参数
redirect_uri String 登录后的应用跳转地址
scope String 授权权限read

请求示例:

http://localhost:20005/oauth/authorize?response_type=code&client_id=user-client&redirect_uri=http://www.baidu.com&scope=read

返回示例:

https://www.baidu.com/?code=YuTOfU

2、根据code获取token:

请求方式:POST

请求地址:http://{{用户中心域名}}/api/tcc-user-center/oauth/token

请求参数:

参数 类型 必填 说明
code String 接口一返回的code
client_id String 应用ID
grant_type String 授权类型默认传authorization_code
client_secret String 应用密钥
redirect_uri String 回调地址

请求示例:

http:localhost:20005/oauth/token

返回示例:

{
 "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcklkXCI6Njc3OTc0OTE2NTgxMzk2NDgwfSIsImV4cCI6MTY0NjM1OTU4OX0.zxEo9yxxT-KhQGBvnxCWsxKMRIkVSWduUUSQJ5XfoLg",
 "token_type": "bearer",
 "expires_in": 589564
 }

postman示例

lombok

3、获取个人信息: /client-api/userCenter/info

请求方式:GET

请求头参数:

参数 类型 必填 说明
CLIENT-TOKEN String 通过code获取的token

请求示例:

http:localhost:20005/client-api/userCenter/info

返回示例:

{
"code": 200,
    "data": {
        "nickName": "132*****720",
        "realName": null,
        "headPic": null,
        "gender": null,
        "province": null,
        "city": null,
        "area": null,
        "verifyTag": 0,
        "mobilePhone": "132*****720",
        "encryptIdCard": "4409**********987X",
        "encryptRealName": null,
        "certificateType": 1,
        "birthdate": null
    },
    "desc": "操作成功",
}

postman示例:

lombok