OAuth授权认证规范

1使用场景

该模式依托服务体系的OAuth认证服务,接入的平台有自身的用户体系和认证服务,平台可以使用自身账号登录,也可以使用服务体系的账号进行登录;用户第一次使用体系账号在平台登录时,在平台形成账号绑定关系,以后登录则无需再次绑定。

目标:Oauth单点登录主要适用于接入到国家服务体系的平台,依赖体系的用户数据进行单点登录。

特点:平台拥有自己的登录界面,但是需要使用体系的用户账号进行登录,可以使用体系提供的Oauth单点登录。


2原理图

3、时序图

4开发规范

(1)配置Oauth登录logo

第三方平台接入流程完毕后,需要拿到oauth的登录地址和oauth的LOGO图片进行跳转到登录认证页面。

在第三方平台中加载服务体系logo(logo平台可以自己设定大小和样式)和oauth链接,logo图标如下:

Oauth链接地址:

n  链接:

http://IP:PORT/bmp-oauth?accessTicket=671f91b8486a4d0fa077d931fe517418&redirect_uri=平台回跳url

n  参数说明:

accessTicket调用体系接口服务获取每次访问Oauth需要产生的临时授权码,使用一次失效,下面会详细介绍接口的使用。

redirect_uri:登录成功后跳转到第三方平台的地址,也是平台接入时候的url地址。

n  服务体系logo图标放置在第三放平台的例子如下:

 

(2)授权登录

老师、学生等用户打开第三方平台后,需要通过服务体系的账号登录到第三放平台,点击服务体系logo标记可以跳转到oauth登录页面,如下图:

登录说明:

1.输入体系平台帐号和密码;

2.验证用户信息和配置参数成功重定向到平台的回调地址;

3.回调地址格式:

http://ip:port?usessionid=971a803c-fd86-11e6-a5c1-286ed488c66c&userId=001

回调地址(http://ip:port):是第一步中的回调地址redirect_uri。

usessionid:体系用户成功登录后的会话标识。

userId:用户ID。

(3)获取接口访问令牌

应用调用体系接口的第一步,访问令牌是服务商使用接口的凭证,通过访问令牌服务商可以使用自身权限下的各种接口。

http://IP:PORT/apigateway/getAccessToken

Post请求参数:

A.  appId:应用id,申请应用时系统会给出APPID和APPKEY;

B.  timeStamp:当前时间戳;

C.  keyInfo:根据Hmac算法APPID+APPKEY+timeStamp的加密数据。

D.  sysCode:系统来源编码,平台接入的区域编码或者机构ID。

 具体API请参照《国家公共服务体系对外接口规范》  

(4)获取Oauth临时访问码

平台每次访问Oauth需要先获取临时访问码。

调用接口信息如下:

n  请求地址:

http://IP:PORT/oauth/createOauthTicket?accessToken=ACCESS_TOKEN

n  应答报文:

        {

            "accessTicket": "671f91b8486a4d0fa077d931fe517418",

            "retCode": "000000",

            "retDesc": "获取accessTicket成功"

        }

(5)获取登录用户信息

平台根据Oauth成功登录后回调的参数,调用体系开放接口服务可以获取登录用户的信息。

调用接口信息如下:

n  请求地址:

http://IP:PORT/userSession/getLoginUserInfo?accessToken=ACCESS_TOKEN

n  请求参数:

  usessionId:平台从回调地址的参数中获取

n  请求报文:
{
  "
usessionId": "9d82a9ca-8dfa-4d3f-8834-43887a73c2e2"
}

n  应答报文:

    {
  "retCode": "000000",
  "retDesc": "success",
  "data": {
    "userId": "0040032E20184955GHJHK9EACA1501F8F",
    "name": "周力*",

   "gender": "1",

   "dafaultIdentity": "1"

          }
}