OAuth授权认证规范

OAuth认证服务功能提供统一授权界面进行认证授权,允许各类平台或终端在用户授权的前提下访问用户在服务枢纽存储的各种信息。而这种授权无需将用户的用户名和密码提供给第三方平台。OAuth允许用户提供一个令牌给各平台,一个令牌对应一个特定的平台,同时该令牌只能在特定的时间内访问特定的资源。各地平台可以通过OAuth的授权认证,使用公共服务枢纽的用户账号密码登录自身平台。该认证方式依托服务枢纽的OAuth认证服务,接入的平台有自身的用户枢纽和认证服务,平台可以使用自身账号登录,也可以使用“智教中国-通行证”进行登录;用户第一次使用“智教中国-通行证”在平台登录时,在平台形成账号绑定关系,以后登录则无需再次绑定。

1 使用场景

目标:OAuth认证服务主要适用于接入到国家智慧教育平台的各类平台,依赖“智教中国-通行证”进行单点登录。

特点:平台拥有自己的登录界面和用户枢纽,但是需要使用“智教中国-通行证”进行登录,可以使用枢纽提供的OAuth认证服务。


2、时序图

3 开发规范

(1)配置OAuth登录入口

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

在第三方平台或应用中加载服务枢纽logo(logo平台可以自己设定大小和样式)和OAuth链接。

OAuth登录logo图片:

OAuth链接地址:

n  链接:

https://ip:port/uias/oauth/authorize?client_id=***&grant_type=authorization_code&response_type=code&redirect_uri=平台回跳url

n  参数说明:

client_id 在国家公共服务枢纽接入之后就会生成一个AppId和AppKey,AppId即为client_id是应用认证授权的唯一标识,AppKey即为client_secret是应用的密钥。

grant_type 授权模式,固定传“authorization_code”。

response_type 返回类型,固定传“code”。

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

n  服务枢纽logo图标放置在第三方平台的示例:

 

(2)授权登录

老师、学生等用户打开第三方平台或应用后,需要通过“智教中国通行证”登录到第三方平台或应用,点击服务枢纽logo标记可以跳转到OAuth登录页面,如下图:

登录说明:

1.输入“智教中国通行证”帐号和密码;

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

3.回调地址格式:

http://ip:port/XXX?code=9d82a9ca

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

code:枢纽用户成功登录后的临时授权码,一次有效,有效期为5分钟。

(3)根据授权码获取接口访问令牌

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

根据授权码code换取access_token

n  请求地址:

https://ip:port/uias/oauth/token

n  Post请求类型:

application/x-www-form-urlencoded

n  Post请求参数:

grant_type:authorization_code 固定值

code: 授权码

client_id:应用id,系统自动生成APPID;

client_secret:应用秘钥,系统自动生成APPKEY;

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

n  响应报文:

        {

            "access_token": " c517268c-cab6-4987-93ee-xxxxf667f8b",

            "token_type": "bearer",

            "refresh_token": " 98db9a15-f9d2-4e22-a1ef-xxxxf77d69fb",

            "expires_in":7199,

            "scope": "userInfo",

            "client_id": " 0MOD9Mi1vk2UHAQkxxxxxRj1YDKkK",

        }

参数说明:

access_token: 访问令牌,2个小时有效期

refresh_token: 刷新token,15天有效期

expires_in: 访问令牌过期时间

scope: 授权范围

client_id: 客户端APPID

token_type: 令牌类型

  具体API请参照《国家智慧教育公共服务枢纽接口规范》  

(4)根据访问令牌获取登录用户信息

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

调用接口信息如下:

n  请求地址:

http://IP:PORT/data/user/getUserInfo

n  请求参数:

access_token:请求访问令牌

n  请求报文:

        {

            "access_token": " 671f91b8486a4d0fxxxxx517418",

        }

n  请求签名,具体API请参照《国家智慧教育公共服务枢纽接口规范》

n  应答报文:

        {

            "data": {

                 "defaultIdentity": "0",

                 "gender": "2",

                 "name": "李好",

                 "userId": "8880011940ff4e88ba",

                 "username": "lihao689jyn607",

                 "smartEduCard": "1101012011123423434",

           }

           "retCode": "000000",

           "retDesc": "请求成功",

           "success": true,

        }

n  具体API请参照《国家智慧教育公共服务枢纽接口规范》

n  令牌刷新和登出接口详细请参照《国家智慧教育公共服务枢纽接口规范》