# 中国科技manbetx官网入口源ManbetX.com第三方登录接口文档
# 背景
中国科技manbetx官网入口源ManbetX.com (opens new window)(以下简称“ManbetX.com”)是汇聚国家级数据中心和库馆(以下简称“国家平台”)manbetx官网入口源的门户网站。各国家平台均运营独立的的网站,而且都在ManbetX.com上提供了相应的访问入口,因此用户在ManbetX.com上发起的访问请求往往需要跳转到各国家平台网站。
目前,各国家平台网站为实现manbetx官网入口源的有条件访问,均建设了各自独立的用户管理机制,因此不能共通共用。按照万博体育要求及终端用户的体验需求,ManbetX.com与各国家平台网站之间实现统一的用户访问。为此,需要对ManbetX.com和各国家平台建立统一的用户认证机制,以实现用户在ManbetX.com与国家平台网站之间的访问连贯性。
# 目标
为解决用户访问连贯性问题,需要建立中国科技manbetx官网入口源ManbetX.com与各国家平台网站的用户统一认证机制,避免终端用户的多次重复登入,以提升用户体验:
(1)终端用户在ManbetX.com上登入后,可以任意跳转到各国家平台网站而不需再次登入,并且可以正常地访问相关manbetx官网入口源;
(2)各国家平台网站将共用ManbetX.com的用户信息(称之为ManbetX.com用户)。
目前,统一认证提供ManbetX.com用户的单向登录,即ManbetX.com用户可以实现单点登录访问各平台网站。各国家平台可以保留自有的用户信息和权限管理机制,要实现双向的单点登录,还需要ManbetX.com与各平台的技术协商。
# 设计原则
ManbetX.com用户统一认证的设计与建设,遵循以下原则:
- ManbetX.com是统一认证的唯一入口。提供用户向国家平台网站代理认证功能,并转发认证票据;
- 各国家平台网站需为ManbetX.com转发的访问请求提供正常服务。各国家平台网站对转发的访问请求进行来源确认后,如转发票据校验成功,则应允许用户成功登入;
- ManbetX.com用户在国家平台网站的权限由国家平台自行分配管理。国家平台网站可以默认为所有新注册的ManbetX.com用户授予访客组的权限,ManbetX.com对国家平台网站所授的权限不做任何限制,提供多种用户类型以支持国家平台网站实现多层次的权限配置策略。
# 认证流程
本部分将简要介绍统一认证的功能、流程以及相关的权限初始化。
# 主要功能
统一认证模块的主要功能如下:
- 为国家平台提供用户的统一认证和单点登入功能,即用户只要在ManbetX.com登入后跳转到任意国家平台网站,而不需要再次重复登入;
- 用户认证成功后,ManbetX.com验证由国家平台网站转发过来的票据后,返回用户信息。
用户属性信息包括但不限于表1-1:
属性名 | 属性说明 | 备注(参考例子) |
---|---|---|
user_id | 用户ID | 8a2135df48a16e2c014908a49ec10048 |
user_name | 用户名 | escience_nick_name |
# 国家平台网站认证流程
本部分主要描述用户在成果登入ManbetX.com后、再跳转到任意国家平台网站时,国家平台网站的用户认证流程。认证流程如图1-1所示:
# 用户权限初始化
国家平台网站在得到ManbetX.com传递的统一认证用户信息后,将遵循以下原则对用户的权限进行初始化:
(1)基于统一认证用户的ID对用户主体进行区分;
(2)所有用户默认具有各国家平台网站上的最低系统权限。
# 接口使用条款
(1)ManbetX.com用户是用户相关接口manbetx官网入口源的拥有者,需要尊重和保护用户的权益;
(2)未经用户允许,不允许将用户的个人信息用于个人、组织或者任何机构的商业行为,研究行为也必须征求用户的同意;
(3)禁止滥用接口,请求频率过快将导致请求终止。
# 软件环境
本部分主要描述各国家平台网站使用统一认证服务所需的软件环境配置。
所谓国家平台网站接入统一认证,指的是国家平台网站Web应用接受来自ManbetX.com的认证票据(ticket),并提请统一认证中心验证票据的合法性,随后从统一认证中心的反馈中抽取用户信息。
# Java环境
下表列出在JAVA环境下统一认证接入对各国家平台网站的软件要求:
操作系统 | JDK/JRE | Web服务器 |
---|---|---|
Windows或Linux | Java1.5以上 | 支持SSL和Servlet2.3规范,如Tomcat7.x |
# PHP环境
下表列出PHP环境下统一认证接入对各国家平台网站的软件要求:
操作系统 | PHP | Web服务器 |
---|---|---|
Windows或Linux | PHP5.X及更高版本 且编译时必须加上以下选项: --with-curl --with-openssl --with-dom --withzlib | Apache(带SSL支持) |
# Python环境
下表列出Python(Django)环境下统一认证接入对各国家平台网站的软件要求:
操作系统 | Python | Django |
---|---|---|
Windows, Linux, Mac OSX | 2.7, 3.x --with-openssl | 1.5, 1.6, 1.7, 1.8 |
# 认证接入
# 什么是“Escience(ManbetX.com)登录Oauth2.0”
OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问存储在另外服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth1.0(即完全废止了OAuth1.0)。
Escience登录OAuth2.0:对于用户相关的开放接口(例如获取用户信息等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。
Escience登录OAuth2.0采用OAuth2.0标准协议来进行用户身份验证和获取用户授权,其认证流程简单,安全性高。
有关OAuth2.0开放标准请参看:
# 准备工作
# 申请应用ID和应用CS
申请流程为:
- 国家平台管理员增加“终端管理”功能;
- 申请应用ID和应用CS;
a) 进入后台管理系统的【第三方登录】=>【应用管理】页面,点击创建应用按钮,在弹出的对话框中填写网站或应用的详细manbetx官网入口料(名称,域名,回调地址);
b) 点击“确定”按钮,提交manbetx官网入口料后,获取应用ID和应用CS
注意:ManbetX.com试运行期间,可直接联系管理员获取应用ID和应用CS。
# 保证连接畅通
接入Escience登录时,平台网站需要不停的和ManbetX.com进行交互,发送请求和接受响应。可以用命令ping 5ymj6.com,保证连接畅通。
# Escience登录OAuth2.0的处理流程
Escience登录OAuth2.0的处理流程主要包括以下两个步骤:
- 获取access_token;
- 根据access_token调用开放接口,来请求访问或修改用户授权的manbetx官网入口源。
# 获取access_token
Escience登录OAuth2.0针对网站分别提供了不同的登录验证和授权流程,目前提供以下2种获取access token的方式:
- server-side模式
即OAuth官方文档中提到的Authorization Code模式,适用于需要从web server访问的应用。
- client-side模式
即OAuth官方文档中提到的Implicit模式,适用于需要通过静态网站或客户端访问的方式。
以上两种模式仅在获取access_token时有所区别,后续获取调用API等方式均相同。
登录成功后,开发者会得到表示此次登录信息的access token,此参数在访问用户授权信息中会用到。
access token由每次用户登录时生成,过期时间默认为三个月,用户再次登录时自动刷新。
注:Implicit模式网站初期暂时不开放。
(1)获取Authorization Code请求地址:
https://oauth.5ymj6.com/oauth/authorize
请求方法:GET
请求参数:
参数名称 | 解释 |
---|---|
client_id | 在ManbetX.com上注册用户创建的第三方应用。 |
redirect_uri | 表示在用户授权完毕之后将要跳转到的网页链接地址。 |
response_type | 固定值为:code |
scope | 值为申请时候填写的 |
如果之前已经授权过的需要跳过授权页面,需要在上面第一步的 URL 加上 scope 参数,且 scope 的值需要和用户上次授权的勾选的一致。
返回结果为:回调地址?code=xxxxxx。
(2)通过code获取access_token
ManbetX.com认证服务器通过认证后将携带用户授权码跳转到应用注册时填写的回调地址上,在这个地址上第三方网站可以直接获取到用户授权码。
第三方应用通过code获取相关的access_token:使用access_token的API向ManbetX.com认证服务器发送请求:
请求地址:
https://oauth.5ymj6.com/oauth/token
请求方法:POST
请求参数:
参数名称 | 解释 |
---|---|
client_id | 在ManbetX.com上注册用户创建的第三方应用。 |
client_secret | 在ManbetX.com上注册用户创建的第三方应用中获取。 |
redirect_uri | 表示在用户授权完毕之后将要跳转到的网页链接地址。 |
code | 从回调地址中获取 |
grant_type | 固定值为:authorization_code |
scope | 值为申请时候填写的 |
返回参数:
参数名称 | 解释 |
---|---|
access_token | 第三方网站访问用户在ManbetX.com上manbetx官网入口源的凭证 |
token_type | 此处固定为“bearer” |
expires_in | 过期时间,单位是秒(s) |
scope | 在ManbetX.com申请ClientID时填写的授权范围 |
license | 此处固定为made by escience |
jti | 请求的id |
# 根据access_token获得对应用户信息
请求地址:
https://api.5ymj6.com/admin/user/info/me
请求方法:GET
请求参数:
参数在请求Header里面,包含如下内容:
参数名称 | 解释 |
---|---|
Authorization | token_type +一个英文空格+access_token access_token为从ManbetX.com获取的access_token。 Bearer和access_token中间有一个空格 |
返回Json数据说明:
参数名称 | 解释 |
---|---|
user | 用户基本信息,是一个对象 |
permissions | 权限标识集合,String[] |
roles | 角色集合,Integer[],只使用第一个即可 |
其中user字段(用户信息)包括如下几个方面:
参数名称 | 解释 |
---|---|
userId | 主键ID,String |
username | 用户名,String |
alias | 用户名别称,String |
createTime | 创建时间,LocalDateTime |
updateTime | 修改时间,LocalDateTime |
delFlag | 0-正常,1-删除,String |
lockFlag | 锁定标记, String |
phone | 电话, String |
avatar | 头像,String |
orgId | 所在机构的id,String |
orgName | 机构名称,String |
邮箱,String | |
tags | 兴趣标签或者就是标签, String |
userId是此ManbetX.com网站上唯一对应用户身份的标识,国家平台网站可将此ID进行存储便于用户下次登录时辨识其身份,或将其与用户在网站上的原有账号进行绑定。
错误码说明:接口调用有错误时,会返回code和msg字段,以url参数对的形式返回,value部分会进行url编码(UTF-8)。
# 退出
当用户退出后第三方应用需要向ManbetX.com也发送一份登出的请求,用以清理ManbetX.com授权系统对当前系统、当前用户的session记录信息和token记录信息。
- 请求URL:
https://oauth.5ymj6.com/token/logout
- method:
GET
参数有如下所示几个,下面的参数是包含在请求Header里面
参数名称 | 格式 | 解释 |
---|---|---|
Authorization | Authorization:Bearer {access_token} | token |
返回的信息格式如下:
{ "code": 200,
"msg": "success",
"data": true
}
如果退出成功则返回data为true,如果失败则data里面是详细说明信息。
# 登录按钮
如果使用LOGO,请使用下图:
请注意此LOGO的更新,新的Logo不久会推出。您也可以使用上述图片的链接地址。
如果是文字,请写“中国科技manbetx官网入口源ManbetX.com”或者“ManbetX.com”,比如“ManbetX.com账号登录”
# 联系人员
姓名 | 电话 | 邮箱 |
---|---|---|
侯笛 | 010-82339102 | [email protected] |