• 文档简介
• 应用集成E10系统准备
• 认证集成过程
文档简介
本文档详细定义了E10系统所提供的OAuth2.0认证服务接口的接口规范。当应用系统在与E10系统进行OAuth2.0认证集成时,需要了解该文档的内容,并根据该文档定义的接口规范进行相应接口的开发或调整。
应用集成E10系统准备
一、业务系统
应用系统(需要接入oauth认证的应用)准备认证成功回调地址:
1、回调地址(接收code验证码的地址及认证成功跳转地址)
注:回调地址中不支持带有路由的地址。
属性名 | 说明 |
redirect_uri | http://XXX.XXX.XXX.XXX/XX/XX |
2、应用系统地址协议需与E10系统协议保持一致。
3、向E10系统申请注册应用系统并且提供回调地址给E10系统。
二、E10系统
1、根据应用系统提供的回调地址,注册应用系统
环境配置:
属性名 | 说明 |
client_id | 注册应用标识,示例:a1dd20759a9046d2bfbc4f104558fe39 |
client_secret | 注册应用密钥,示例: 4f6f5533-35ac-4c14-ad99-35bec3bf2a29 |
请求用户授权接口地址 | 请求登陆认证地址,示例: https://weapp.mulinquan.cn/papi/sso/oauth2.0/authorize |
获取授权Token接口地址 | code交互token地址,示例: https://weapp.mulinquan.cn/papi/sso/oauth2.0/accessToken |
获取用户信息接口地址 | Token交互用户信息地址,示例: https://weapp.mulinquan.cn/papi/sso/oauth2.0/profile |
统一退出接口地址 | 注销E10系统认证地址,示例: https://weapp.mulinquan.cn/sp/integration/oauth2.0/logout |
认证集成过程
一、OAuth2.0认证过程
整体上分为三个接口,获取授权码接口 、获取Token接口、获取用户信息接口;
1、获取授权码接口:可获取到授权码code
2、获取应用Token接口:用户通过授权码code,获得access_token;
3、获取用户信息接口:用户通过access_token可获取用户基本信息。
流程图:
二、认证集成
1、获取client_id和client_secret参数
统一认证中心-认证应用管理,注册应用系统的OAuth2认证应用。
其中,应用标识以及应用密钥则是对应的client_id和client_secret参数值。
适用对象:设置应用的人员限制范围,只允许范围内的人员通过应用登录业务系统。
业务系统URL地址:该地址是应用在用户登录完成后返回给应用授权码的地址。
账号映射规则:设置需要返回给应用人员的哪个字段信息(需在人员基本信息里面维护)。
2、开启OAuth2认证
统一认证中心-认证协议管理-OAuth2认证,直接开启认证,提供OAuth2认证接口地址。
3、获取Authorization Code
用户访问该应用系统时,应用通过下面接口向E10系统发起授权登录请求,用户输入用户名密码认证成功后,E10系统将重定向到第三方应用系统,并且带上授权码code参数。
请求说明:
参数 | 描述 |
请求地址 | OAuth2认证中“请求用户授权接口地址” E10系统地址/papi/sso/oauth2.0/authorize |
请求方式 | GET |
请求参数:
参数 | 名称 | 必须 | 示例 | 描述 |
response_type | 授权类型 | 必须 | code | 固定为code |
client_id | 应用标识 | 必须 | 9c5a07c0e2ad40229cc73306b6996f6b | E10系统认证应用管理中该应用注册的应用标识 |
redirect_uri | 回调地址 | 必须 | https://cas.e-cology.cn | 成功授权后的回调地址。 注:不支持地址中有#路由地址。 |
请求示例:
E10系统地址/papi/sso/oauth2.0/authorize?client_id=e9b7bee8b9d0434eb022fe2f8604addf&redirect_uri=https://cas.e-cology.cn&response_type=code |
返回参数说明:
参数 | 名称 | 描述 |
code | 授权码 | 用户登录并授权后,返回给应用的授权码。注意:此code是一次有效。 |
正确返回示例:
redirect_uri?code=ST-2-3waB7JCdPdAweaCW1ciBxwm5WJ8beta11 |
错误返回示例:
会跳转提示页面。可能跳转的提示页面可参考附录1:提示页面信息。
4、获取Access Token
通过用户验证登录授权后,获取授权令牌Access Token,Access Token是第三方应用在调用E10系统获取用户信息时必须传入的参数。
请求说明:
参数 | 描述 |
请求地址 | OAuth2认证中“获取授权Token接口地址” E10系统地址/papi/sso/oauth2.0/accessToken |
请求方式 | POST |
请求参数:
参数 | 名称 | 必须 | 示例 | 描述 |
grant_type | 授权类型 | 必须 | authorization_code | 固定为authorization_code |
client_id | 应用标识 | 必须 | 9c5a07c0e2ad40229cc73306b6996f6b | E10系统认证应用管理中该应用注册的应用标识 |
client_secret | 应用密钥 | 必须 | 4439727c-2f20-42d1-b11c-e36b8214072e | E10系统认证应用管理中该应用注册的应用密钥 |
code | 授权码 | 必须 | ||
redirect_uri | 回调地址 | 必须 | https://cas.e-cology.cn | 成功授权后的回调地址。 注:不支持地址中有#路由地址。 |
请求示例:
curl --request POST 'https://weapp.yunteams.cn/papi/sso/oauth2.0/accessToken?client_id=1910ad2019214245bb7dcf8bd3c0472e&client_secret=e4d790e2-f735-4f09-8e91-29f3bf56c849&grant_type=authorization_code&code=ST-57-GZMpTGqlhgsVjXyh6Le9qVwVTnEETW029070&redirect_uri=https://cas.e-cology.cn |
返回参数说明:
参数 | 名称 | 描述 |
access_token | 授权令牌 | 返回给第三方应用的授权令牌,获取用户信息时需要使用到 |
expire | 授权令牌的有效期 | 返回给应用的授权令牌的有效期。(注意:有效期以秒为单位) |
msg | 错误信息 | 成功为SUCCESS |
code | 错误代码 | 成功为0 |
status | 状态码 | 成功200,失败400 |
正确返回示例:
{ "msg":"SUCCESS", "access_token":"TGT-17-ltrkyX7uoV1UyJvtZVQ3OsLwMKLuiiBghgEi8d5jeQejC0Xl---taqwusjwbChnVGvgETW029070", "code":"0", "expire":7200, "status":200 } |
错误返回示例:
接口返回的错误代码可参考附录2:接口错误代码。
{ "msg":"参数client_id不能为空", "code":"1002", "status":400 } |
5、获取用户信息
此接口主要用于第三方应用系统使用E10系统登录时,从E10系统获取当前登录用户的信息。
请求说明:
参数 | 描述 |
请求地址 | OAuth2认证中“获取用户信息接口地址” E10系统地址/papi/sso/oauth2.0/profile |
请求方式 | POST |
请求参数:
参数 | 名称 | 必须 | 示例 | 描述 |
access_token | 授权令牌 | 必须 | authorization_code | 获取授权Token接口返回的access_token |
请求示例:
curl --request POST 'https://weapp.yunteams.cn/papi/sso/oauth2.0/profile?access_token=xxxx' |
返回参数说明:
参数 | 名称 | 描述 |
id | 用户信息 | 值为该应用注册的OAuth2应用选择的账号映射规则对应的值 |
msg | 错误信息 | 成功为SUCCESS |
code | 错误代码 | 成功为0 |
status | 状态码 | 成功200,失败400 |
attributes | 人员其他属性 | 暂不返回人员其他属性值 |
正确返回示例:
{ "msg":"SUCCESS", "code":"0", "attributes":{
}, "id":"18229708888", "status":200 } |
错误返回示例:
接口返回的错误代码可参考附录2:接口错误代码。
{ "msg":"参数access_token值失效", "code":"1012", "status":400 } |
6、退出
应用在和E10系统进行认证集成后,在退出应用系统后,会出现无法退出的情况,原因是没有注销E10系统的登录会话。
所以应用在退出时,可调用E10系统的退出接口,进行E10系统的用户会话注销。
注意:退出接口还未支持全局退出,即应用调用退出接口后, 是退出了E10的会话,当前应用退出了,但是另外接入的应用将还不会退出。
请求说明:
参数 | 描述 |
请求地址 | OAuth2认证中“统一退出接口地址” E10系统地址/sp/integration/oauth2.0/logout |
请求方式 | GET |
请求参数:
参数 | 名称 | 必须 | 示例 | 描述 |
service | 退出重定向地址 | 必须 | https%3A%2F%2Fjytcas.e-cology.cn%2Fdemo_oauth%2Findex.jsp | 域名需要在白名单中进行设置,否则将不能跳转service |
请求示例:
E10系统地址/sp/integration/oauth2.0/logout?service=https%3A%2F%2Fjytcas.e-cology.cn%2Fdemo_oauth%2Findex.jsp |
7、验证
维护应用系统与E10系统之间的人员关系。
访问应用系统,调用E10系统授权接口进行登录授权(应用系统自行实现),E10认证登录授权后,携带code回调应用系统, 应用系统进行登录。
附录1:提示信息页面
请求用户授权接口进行授权时,如果授权失败,将会跳转到提示页面。
以下列举可能出现的提示:
code | 提示信息 | 描述 |
80006 | 当前账号未维护登录名,请设置登录名后重新登录 | 认证应用中账号映射规则设置了登录名,登录人员需要维护登录名 |
80007 | 当前账号未维护身份证,请设置身份证后重新登录 | 认证应用中账号映射规则设置了身份证,登录人员需要维护身份证 |
80008 | 当前账号未维护工号,请设置工号后重新登录 | 认证应用中账号映射规则设置了工号,登录人员需要维护工号 |
80009 | 当前账号未维护电子邮箱,请设置电子邮箱后重新登录 | 认证应用中账号映射规则设置了电子邮箱,登录人员需要维护电子邮箱 |
80010 | 当前账号未维护手机号码,请设置手机号码后重新登录 | 认证应用中账号映射规则设置了手机号码,登录人员需要维护手机号码 |
80011 | 该用户当前团队与应用所属团队【xxx】不一致,请切换正确的团队后重新登录 | 需要切换到认证应用所在团队,才能进行认证登录 |
80012 | 当前认证未开启,请联系管理员开启认证 | 应用标识对应的认证应用被禁用了 |
80013 | 回调地址与认证应用注册的业务系统URL地址不一致,请联系管理员检查配置 | 授权接口传的redirect_uri参数值与认证应用中业务系统URL地址不一致 |
80014 | 登录用户不在认证应用注册的适用对象范围内,请联系管理员检查配置 | 认证应用设置的适用对象中没有此人员 |
80015 | 参数应用标识(client_id)缺失或值未在认证应用中注册,请联系管理员检查配置信息 | 授权接口传的client_id参数值不对,需要应用系统检查 |
80016 | 参数response_type缺失或值错误,请联系管理员检查配置信息 | 授权接口传的response_type参数值不对,需要应用系统检查 |
80017 | 参数回调地址(redirect_uri)缺失,请联系管理员检查配置 | 授权接口传的redirect_uri参数值不对,需要应用系统检查 |
80018 | 参数应用标识(appid)缺失或值未在认证应用中注册,请联系管理员检查配置信息 | process接口里面参数appid不对 |
80019 | 参数回调地址(service)缺失,请联系管理员检查配置 | process接口里面参数service不对 |
80020 | 参数回调地址(appUrl)缺失,请联系管理员检查配置 | process接口里面参数appUrl不对 |
80021 | 接口请求超时异常,请稍后重新登录 | |
80022 | 认证登录异常,请稍后重新登录 | |
80023 | 认证应用未启用,请联系管理员启用应用 | OAuth2认证还是关闭状态 |
80026 | 认证登录异常,请稍后重新登录 | rpc接口异常,需要等待 |
附录2:接口错误代码
接口返回的结果里的code值:
错误代码(code) | 错误信息(msg) |
0 | 成功 |
1002 | 参数client_id不能为空 |
1003 | 参数redirect_uri不能为空 |
1005 | 参数redirect_uri未注册 |
1007 | 参数client_secret不能为空 |
1008 | 参数code不能为空 |
1009 | 参数client_secret未注册 |
1010 | 参数code值失效 |
1011 | 参数access_token不能为空 |
1012 | 参数access_token值失效 |
2019 | 授权异常 |
1014 | process异常 |
1015 | 获取access_token异常 |
1016 | 获取用户异常 |
1017 | 参数grant_type不能为空 |
1018 | 登录异常 |
1019 | 获取TGT异常 |
1020 | 获取Ticket异常 |
1022 | 参数grant_type值错误 |
2022 | 参数clientId未注册 |
9090 | service不存在 |
80021 | 超时异常,请重试 |