# 统一认证登录
# 流程介绍
单点登录集成由hos统一认证提供接口服务,采用标准的OAuth2.0协议
应用系统使用OAuth2登录流程:
应用系统接入OAuth2流程:
# 应用系统集成--基于HOS开发的系统
提示
如果应用系统不是基于HOS基础平台开发的,请参考下一章节【应用系统集成--普通BS应用系统】 以下面的ip和端口为例介绍配置,实际地址需要根据项目实际环境来修改。
统一认证配置访问地址:http://114.251.235.9:8331;
统一认证服务ip和端口地址:http://114.251.235.9:8344;
OA应用的前端地址:http://192.168.101.100:8111;
本文档以此端口+ip为例,搭建项目根据实际情况进行修改
# 第一步,注册系统
统一认证配置访问地址:http://114.251.235.9:8331
接下来以OA系统为例,在统一认证配置平台,配置OA系统;
1.1 新增应用系统,OA系统
2. 进入【应用中心】->【应用管理】
2.1 认证基本信息;
注册成功应用系统后,选择应用进入应用详情页面
2.2 配置应用系统认证信息
提示
- 回调地址(redirect_uri)接收授权码的地址,可以配置多个,使用间隔符“,”,格式为http(https)://{应用ip}:{应用端口}/api/security/login/oauth2/code/messaging-client-oidc.示例:https://117.107.157.46:8120/api/security/login/oauth2/code/messaging-client-oidc。
- 单点退出(logout_uri):开关,控制是否进行统一认证退出,打开后,需要配置登出地址。登录地址格式为http(https)://{应用ip}:{应用端口}/api/security/oauth2/token/logout。示例:https://117.107.157.46:8120/api/security/oauth2/token/logout。
- 授权模式(response_type):目前只支持授权码模式,如果需要返回刷新token,需要同时选中授权码模式和刷新token。
- 作用域(scope):访问权限类型,填写openid即可。
选择应用功能--->认证管理,配置OA系统的回调地址,默认配置一样
2.3 生成OAuth2参数
提示
维护好应用系统基础信息后,点击保存会自动生成客户端id(client_id)和客户端秘钥(client_secret),这两个参数是后续调用接口操作中的关键参数。
2.4 下一步需要用到的参数
提示
客户端id(client_id):G5Jh27LXXdRf
客户端秘钥(client_secret):n3p529n6743NP6H3
回调地址(redirect_uri):http://114.251.235.9:8331/api/security/login/oauth2/code/messaging-client-oidc
# 第二步,应用系统的启动工程新增登陆相关依赖包
在启动工程的pom文件中新增依赖
<dependency>
<groupId>com.mediway.hos</groupId>
<artifactId>hos-security-login-database</artifactId>
</dependency>
<dependency>
<groupId>com.mediway.hos</groupId>
<artifactId>hos-app-core</artifactId>
</dependency>
# 第三步,接入的应用系统后端配置
1. 打开需要修改的文件
提示
根据实际环境修改对应的yml配置文件; 以开发环境配置文件application-dev.yml文件为例介绍;文件位置如下图所示
2. 修改或增加文件内容
提示
以下面的ip和端口为例介绍配置,实际地址需要根据项目实际环境来修改。
统一认证服务ip和端口地址:http://114.251.235.9:8344;
OA应用的前端地址:http://114.251.235.9:8331;
spring:
redis:
password: hck4yCMd9
database: 0
timeout: 5000
cluster:
nodes: 114.251.235.6:32543
smscaptcha:
templateId: 1 #短信模板编码
smsSp: rly #短信厂商编码
validField: 1 #字段位置
timeField: 2 #短信时效,单位是分钟
hos-security:
platform: platform
front-url: http://114.251.235.9:8331 #应用前端页面地址
authentication-uri: http://114.251.235.9:8344 #统一认证地址
login: #登录相关配置
white-list: #认证白名单
- /openApi/**
- /druid/**
- /license/*
- /loginPageData/*
- /property/is-enable-tenant
- /tenant/select-tenant-by-domain
- /tenant/select-tenant
- /core/system/files/other/**
- /core/system/files/image/**
- /websocket/
- /favicon.ico
- /v2/api-docs
- /swagger-resources
- /acm/accountAndPWD/validateAccount
- /doc
- /**/*.css
- /**/*.js
- /**/*.png
- /**/*.jpg
- /**/*.jpeg
- /**/*.html
- /**/*.ico
- /**/*.properties
- /**/*.woff
- /**/*.woff2
- /**/*.ttf
oauth2: #统一认证oauth2登录配置
enable: true #是否开启统一认证登录
client: #统一认证登录配置
registration:
messaging-client-oidc:
provider: spring #对应下边 provider 的配置,不需要修改
client-id: G5Jh27LXXdRf #统一用户平台中创建应用的id
client-secret: n3p529n6743NP6H3 #统一用户平台中创建应用的秘钥
authorization-grant-type: authorization_code #认证类型,不要修改
redirect-uri: ${hos-security.front-url}/api/security/login/oauth2/code/messaging-client-oidc #回调地址,不要修改
scope: openid #统一用户平台中创建应用的作用域
client-name: oa #该客户端名称
provider:
spring:
issuer-uri: ${hos-security.authentication-uri}/api #发行地址
authorization-uri: ${hos-security.authentication-uri}/oauth/authorize #获取授权码页面
# 第四步,集成完成,测试
1. 访问OA系统地址,http://114.251.235.9:8331 会跳转到统一认证服务登录页面
http:/login/login?redirect=%2Foauth%2Fauthorize%3Fresponse_type%3Dcode%26client_id%3Dmessaging-client%26scope%3Dopenid%2520profile%26state%3D9PdAHYDbJl_N_aVahJ52lVj0Pno9NjaKePO4G5w8weI%253D%26redirect_uri%3Dhttp%253A%252F%252F114.251.235.9%253A8334%252Fapi%252Fsecurity%252Flogin%252Foauth2%252Fcode%252Fmessaging-client-oidc%26nonce%3DzqLZcN4wYxqTmHBiBSLPolWfFe6rgjb42k_r_YpeuKs
2. 输入统一认证用户名和密码,会进入OA系统
提示
登录成功之后,进入的是OA系统的页面
# 应用系统集成--普通BS应用系统
提示
该章节介绍的是普通BS应用系统使用OAuth2协议对接的流程接入样例;如果是HOS基础平台下开发的应用,参考上一章【应用系统集成--基于hos组织权限平台框架开发的系统】节接入。 下面以OA系统为例,介绍接入OAuth2的过程;实际接入中,改为实际的ip地址。
统一认证配置访问地址:http://114.251.235.9:8328;
统一认证服务前端ip和端口地址:http://114.251.235.9:8344;
OA应用的前端地址:http://114.251.235.9:8334;
本文档以此端口+ip为例,搭建项目根据实际情况进行修改
# 第一步,注册系统
统一认证配置访问地址:http://114.251.235.4:8228
接下来以OA系统为例,在统一认证配置平台,配置OA系统;
1.1 新增应用系统,OA系统
2. 进入【应用中心】->【应用管理】
2.1 配置认证基本信息;
注册成功应用系统后,选择应用进入应用详情页面
2.2 配置应用系统认证信息
提示
回调地址(redirect_uri)接收授权码的地址,可以配置多个,使用间隔符“,”,是OAuth2接入流程中,OA系统接收授权码和state参数用到;后续的操作中关键参数之一。
单点退出(logout_uri):开关,控制是否进行统一认证退出,打开后,需要配置登出地址。
授权模式(response_type):目前只支持授权码模式,如果需要返回刷新token,需要同时选中授权码模式和刷新token
作用域(scope):访问权限类型,固定写all
选择应用功能--->认证管理,配置OA系统的回调地址,默认配置一样
2.3 配置OAuth2参数
提示
客户端id(client_id)和客户端秘钥(client_secret),是自动生成的两个参数,这两个参数是后续调用接口操作中的关键参数。
2.4 下一步需要用到的参数
提示
客户端id(client_id):messaging-client
客户端秘钥(client_secret):secret
回调地址(redirect_uri):http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc
# 第二步,获取授权码
提示
以下面的ip和端口为例介绍配置,实际地址需要根据项目实际环境来修改。
统一认证ip和端口地址:http://114.251.235.9:8344;
OA应用的前端地址:http://114.251.235.9:8334;
需要用到的第一步注册的参数说明:
客户端ID(client-id): messaging-client #第一步注册应用时,生成的客户端ID
客户端秘钥(client-secret): secret #第一步注册应用时,生成的客户端秘钥
回调地址(redirect_uri):http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc
1. 浏览器输入OA系统链接
提示
OA系统的链接:该链接可以是OA系统的任意链接,比如http://114.251.235.9:8334/base-sys-resources。
OA系统需要记录【初始访问链接】,作用是在最后一个流程,完成登录之后,跳转回【初始访问链接】。
OA系统分未登录和已登录存在两种情况:
OA系统未登录:浏览器不存在有效的OA系统会话信息(没有OA系统session或者session信息过期)。
OA系统已登录:浏览器存在有效的OA系统会话。
1.1 未登录
需要OA系统前端拼接获取授权码的链接地址,并前端重定向到该地址,去统一认证服务器请求授权码。 下面地址是重定向的地址:
http://114.251.235.9:8344/oauth/authorize?response_type=code&client_id=messaging-client&scope=openid%20profile&state=nh_oqeWEtXAwKqbYusbLJHyNoEmIFHHINzN9vGBWzgM%3D&redirect_uri=http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc
地址/参数 | 值 | 说明 |
---|---|---|
统一认证地址 | http://114.251.235.9:8344/oauth/authorize | 统一认证前端地址 |
response_type | code | 必要参数;值为code,固定参数; |
client_id | messaging-client | 必要参数;第一步注册所得; |
redirect_uri | http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc | 必要参数;回调地址,必须在第一步注册时配置上; |
state | nh_oqeWEtXAwKqbYusbLJHyNoEmIFHHINzN9vGBWzgM%3D | 这个值是随机值,作用是安全校验;下次地址为跳转到的回调地址时,原值参数返回回来 |
scope | all | 访问权限 |
OA系统拼接好统一认证授权链接,然后重定向到上述链接,并重定向到之后,在下面【2. 请求授权码】继续说明。
1.2 已登录
提示
OA系统可正常进入自己的系统页面,这种场景不需要统一认证后续操作。如果OA系统会话过期或失效,需要继续执行【1.1 未登录】的流程。
2. 请求授权码
提示
上面【1.1 未登录】场景重定向的链接,是请求授权码地址。
获取授权码,需要统一认证系统是登录状态。
统一认证系统分未登录和已登录存在两种情况:
统一认证系统未登录:浏览器不存在有效的统一认证系统登录状态信息。
统一认证系统已登录:浏览器存在有效的统一认证系统登录状态信息。
2.1 统一认证未登录
2.1.1 访问链接:
http://114.251.235.9:8344/oauth/authorize?response_type=code&client_id=messaging-client&scope=openid%20profile&state=nh_oqeWEtXAwKqbYusbLJHyNoEmIFHHINzN9vGBWzgM%3D&redirect_uri=http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc
2.1.2 跳转到统一认证登录页进行登录:
http://114.251.235.9:8344/login/login?redirect=%2Foauth%2Fauthorize%3Fresponse_type%3Dcode%26client_id%3Dmessaging-client%26scope%3Dopenid%2520profile%26state%3DCIc6FhR5uo3yX5OE3m339x1nlUH0C_ZDHPp5o3SHFgY%253D%26redirect_uri%3Dhttp%253A%252F%252F114.251.235.9%253A8334%252Fapi%252Fsecurity%252Flogin%252Foauth2%252Fcode%252Fmessaging-client-oidc
提示
进行登录,登录成功后,跳转回2.1.1 访问链接,进入【2.2 统一认证已登录】流程
2.2 统一认证已登录
访问链接:
http://114.251.235.9:8344/oauth/authorize?response_type=code&client_id=messaging-client&scope=openid%20profile&state=nh_oqeWEtXAwKqbYusbLJHyNoEmIFHHINzN9vGBWzgM%3D&redirect_uri=http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc&nonce=O5TtmUg8lNKg_vpICq7pbidTOQKldPm6uuKbTZtwEOw
提示
访问链接的参数, 客户端ID(client_id)、回调地址(redirect_uri)必须是之前注册OA系统时注册的,如果不是的话,会提示错误,不会进入回调地址。
正常跳转到:
http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc?code=eVWUVSVPLWFtijZj25721nI66FYAJYl9Oyo5JFAMSp5yRTl46sPwd-XH89Ossc3pOM9dTCSHEBXgsbJ-7sYfN-1o4hOi3pd1GT0BwUAilE0hHYLwZ5bF1mzJSGScc2Ir&state=TAOZK8d2XmTcjkSM8pW5U0ddwow8_prfRI_m8s4RfNM%3D
提示
跳转到上述地址(http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc?code=eVWUVSVPLWFtijZj25721nI66FYAJYl9Oyo5JFAMSp5yRTl46sPwd-XH89Ossc3pOM9dTCSHEBXgsbJ-7sYfN-1o4hOi3pd1GT0BwUAilE0hHYLwZ5bF1mzJSGScc2Ir&state=TAOZK8d2XmTcjkSM8pW5U0ddwow8_prfRI_m8s4RfNM%3D) 进入下一步流程【3. 接收授权码和state】
异常情况链接:
http://114.251.235.9:8344/oauth/authorize?response_type=code&client_id=messaging-client&scope=openid%20profile&state=nh_oqeWEtXAwKqbYusbLJHyNoEmIFHHINzN9vGBWzgM%3D&redirect_uri=http://114.251.235.9:8334/api/security/login/oauth2/code/messaging-client-oidc
提示
异常情况会出现如下类似错误提示,且不能重定向到回调地址链接
3. 接收授权码和state OA系统根据回调的链接,接收到code和state参数
3.1 首先处理接收到的state参数
提示
state参数是在【1. 浏览器输入OA系统链接】的流程中,OA系统自己生成的一个随机串放入统一认证请求授权码的链接当中。
state参数是随着回调地址,跟获取到的授权码一起传回OA系统的,作用是为了保护回调掉地址免遭攻击。
如果state参数跟之前的不一致,OA系统就不要进行下一步【第三步,根据授权码获取token】操作。
3.2 处理接收到的code参数
前端页面接收到授权码(code)参数,传入后端进入下一步【第三步,根据授权码获取token】操作
# 第三步,OA系统根据授权码获取token
获取token
根据回调地址携带的授权码,获取token信息;为了安全考虑,后台调用获取token接口。
该接口是post接口。
统一认证后端获取token,请求类型是POST,请求时需要设置请求头信息,包含参数Username:应用id,Password:应用秘钥 接口地址:
http://114.251.235.9:8384/api/security/oauth2/token
需要传入的参数说明:
参数 | 值 | 说明 |
---|---|---|
client_id | client_id | 第一步注册获得 |
client_secret | client_secret | 第一步注册获得(不能泄露) |
redirect_uri | redirect_uri | 回调地址,这个本身就是应用系统提供的固定地址 |
grant_type | grant_type | 固定参数 authorization_code |
code | code | 授权码值 |
成功结果:
{
"code": "200",
"msg": "成功",
"data": {
"access_token": "eyJraWQiOiIwMWQ5Yjg0Zi0zN2QyLTQ1ODgtOGE5My1mYjZkMmI3MGE0YjYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IjE0MG05QndlYjBhODdhMyIsIm5iZiI6MTY5NDE0ODg3NSwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSJdLCJpc3MiOiJodHRwOi8vMTE0LjI1MS4yMzUuOTo4MzQ0L2FwaSIsImV4cCI6MTY5NDE3NzY3NSwiaWF0IjoxNjk0MTQ4ODc1fQ.CMafcbaKDj5dAM_6aXH2rJ6xZoAGSvlG5-fnbcPMAEQrl2yXo-ICqz9PyiAjgpOHbfe1hATivzR_-FNNF71Z-GartP-2mUXBOKQ3AnKb-DE4ShNNJ9aOct6ljgpI38x75J6Up3ZYPgXCwvBX-n59lczKTfSPscODnfaX8oIPBVfXvODgJgeYossXLnZpCtAkO7fc7QGXMsUOoIX1rljKZbpundU2_Uh4BjLj8ef-jkYW8NzZGM4luIJI7lHRKKfgH8nLTXQ378m_HNJC9DmrVMn2SGMh9lcXOSp976fiygxVSNWy6oCV0vbQFQPBnXe4d2Y0kIUE1ZND0Mw4Z-hUkw",
"refresh_token": "5-tyWCkCHJEM3mWOhEG59gZPrdITcIEqUEVClG4QR-E2WAxgBsgYkcdi7EgPU_OS7o6DCenfurN-PMZzY0it0MsE3T8iIqbprjdWamTVAy-oTg97E6d4zduqw-yYunw3",
"code": "EZNGjWZ_lQUaxsiooiWZKJmGfBsSu2HNpmFxUYWHwb4IcKPS_-dHHiEyyxike5K0jIhexSToOu2yA29Dan-i-Us8SlkWtH4dSKrFIOFenml5h-6NtFNNi63wTPo5pwnY",
"scope": "openid profile",
"token_type": "Bearer",
"expires_in": 28800,
"client_id": "140m9Bweb0a87a3"
},
"uri": null
}
提示
成功获取到token信息之后,OA系统可以把token信息保存起来,不能泄露。携带token请求【#### 第四步,OA系统根据token获取登录用户信息】
# 第四步,OA系统根据访问令牌获取用户信息
获取token
根据access_token,获取登录用户信息
该接口是post接口。
该接口的认证方式为Bearer Token。调用该接口时需要2.2.3中的access_token拼接到请求header中。Bearer加空格加access_token,接口地址:
http://114.251.235.9:8384/api/security/oauth2/user/info
需要传入的参数说明:
参数 | 值 | 说明 |
---|---|---|
access_token | access_token值 | token接口返回的access_token值 |
成功结果:
{
"code": "200",
"msg": "成功",
"data": {
"accountCode": "admin",
"accountId": "42ba0988866e43e9a3086ef19ebe6806",
"accountName": "超级管理员",
"userName": "超级管理员"
}
}
提示
OA系统获取用户信息成功。根据accountCode字段中的用户名,完成创建自己的会话信息等操作,完成登录。
# 第五步,完成登录
1. 根据获取到的用户信息,创建登录需要的会话等,完成登录操作
2. 登录完成重定向到首页或者初始访问链接(如果记录了初始链接)
提示
在【第二步,获取授权码】--【1. 浏览器输入OA系统链接】中,如果OA系统有记录【初始访问链接】,在本次认证完成时候,可以跳转回到【初始访问链接】,
如果未记录初始访问链接,只能去跳转回默认首页页面。
这个逻辑需要OA系统自己处理。
登录成功之后,进入OA系统页面。
# 集成接口介绍
本节介绍的是,统一认证集成过程中,用到的接口详细说明
# 一、授权接口
- 基本信息
名称 描述 地址 http://{统一认证前端ip和端口}/oauth/authorize 接口名称 获取授权码 请求类型 GET - 请求示例
http: {统一认证前端ip和端口}/oauth/authorize?response_type=code&client_id=G5Jh27LXXdRf&redirect_uri={应用系统回调地址}&state={应用系统提供的随机码}
参数说明
参数 中文说明 描述 response_type 响应类型 code client_id 客户端ID(应用标识) 统一认证配置注册的客户端ID(应用标识) scope 作用域 在统一用户的认证管理页面配置的作用域 redirect_uri 回调地址 跳转到应用系统的地址,会携带授权码(code参数值)和状态码(state参数值) state 任意值 用于保持请求和回调的状态,在回调时,会在Query Parameter中回传该参数。开发者可以用这个参数验证请求有效性,也可以记录用户请求授权页前的位置。这个参数可用于防止跨站请求伪造(CSRF)攻击 处理逻辑.
- 验证client_id是否有效
- 校验redirect_uri是否有效;统一认证配置中,可配置多个redirect_uri地址(以“,”分隔),用逗号分隔。
- 校验scope;统一认证配置中,可配置多个(以“,”分隔),用逗号分隔。
- 校验成功后,页面跳转至redirect_uri并附有授权码和state参数(这个是应用系统请求是携带的原值)
返回值
- 参数正确登录成功时,会跳转到http://{应用系统回调地址}?code={授权码}&state={XXX}
- client_id错误
{
"code": "102-001-001-002",
"msg": "无效的应用",
"data": null,
"uri": null
}
- redirect_uri无效
{
"code": "102-001-001-011",
"msg": "redirectUri错误",
"data": null,
"uri": null
}
- scope错误
{
"code": "102-001-001-015",
"msg": "客户端不支持Scopes",
"data": null,
"uri": null
}
- 描述
- 此接口是浏览器redirect跳转方式调用。
- 如果用户已完成过登录,访问此地址则会直接跳转到指定的回调地址,带上code。如果请求参数中传入了state,这里会带上原始的state值。
- 如果用户未登录,访问此地址会跳转至登录页面,显示应用配置的认证方式,用户完成登录后跳转到指定的回调地址,带上code。如果请求参数中传入了state,这里会带上原始的state值。
# 二、获取token
- 基本信息
名称 描述 地址 http://{统一认证后端ip和端口}/api/oauth2/token 接口名称 获取token 请求类型 POST - 请求示例
http: {统一认证后端ip和端口}/api/oauth2/token
参数说明
参数 中文说明 描述 client_id 客户端ID(应用标识) 统一认证配置注册的客户端ID(应用标识) client_secret 客户端秘钥 统一认证配置注册的客户端秘钥 code 授权码 回调地址接收到的code参数值 redirect_uri 回调地址 请求授权码时的回调地址 grant_type 认证方式 请求类型,默认authorization_code 处理逻辑
- 验证client_id是否有效
- 验证client_secret是否有效
- 验证redirect_uri是否是请求授权码的地址
- 验证code是否有效
- 根据以上判断、验证及认证结果返回JSON数据
返回值
- 正确返回时
{
"code": "200",
"msg": "成功",
"data": {
"access_token": "eyJraWQiOiIwMWQ5Yjg0Zi0zN2QyLTQ1ODgtOGE5My1mYjZkMmI3MGE0YjYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IjE0MG05QndlYjBhODdhMyIsIm5iZiI6MTY5NDE0ODg3NSwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSJdLCJpc3MiOiJodHRwOi8vMTE0LjI1MS4yMzUuOTo4MzQ0L2FwaSIsImV4cCI6MTY5NDE3NzY3NSwiaWF0IjoxNjk0MTQ4ODc1fQ.CMafcbaKDj5dAM_6aXH2rJ6xZoAGSvlG5-fnbcPMAEQrl2yXo-ICqz9PyiAjgpOHbfe1hATivzR_-FNNF71Z-GartP-2mUXBOKQ3AnKb-DE4ShNNJ9aOct6ljgpI38x75J6Up3ZYPgXCwvBX-n59lczKTfSPscODnfaX8oIPBVfXvODgJgeYossXLnZpCtAkO7fc7QGXMsUOoIX1rljKZbpundU2_Uh4BjLj8ef-jkYW8NzZGM4luIJI7lHRKKfgH8nLTXQ378m_HNJC9DmrVMn2SGMh9lcXOSp976fiygxVSNWy6oCV0vbQFQPBnXe4d2Y0kIUE1ZND0Mw4Z-hUkw",
"refresh_token": "5-tyWCkCHJEM3mWOhEG59gZPrdITcIEqUEVClG4QR-E2WAxgBsgYkcdi7EgPU_OS7o6DCenfurN-PMZzY0it0MsE3T8iIqbprjdWamTVAy-oTg97E6d4zduqw-yYunw3",
"code": "EZNGjWZ_lQUaxsiooiWZKJmGfBsSu2HNpmFxUYWHwb4IcKPS_-dHHiEyyxike5K0jIhexSToOu2yA29Dan-i-Us8SlkWtH4dSKrFIOFenml5h-6NtFNNi63wTPo5pwnY",
"scope": "openid profile",
"token_type": "Bearer",
"expires_in": 28800,
"client_id": "140m9Bweb0a87a3"
},
"uri": null
}
- client_id无效
{
"code": "102-001-001-002",
"msg": "无效的应用",
"data": null,
"uri": null
}
- client_secret无效
{
"code": "102-001-001-005",
"msg": "客户端认证信息错误",
"data": null,
"uri": null
}
- 授权码无效
{
"code": "102-001-001-007",
"msg": "授权码失效",
"data": null,
"uri": null
}
- 回调地址无效
{
"code": "102-001-001-011",
"msg": "redirectUri错误",
"data": null,
"uri": null
}
# 三、刷新token
- 基本信息
名称 描述 地址 http://{统一认证后端ip和端口}/api/oauth2/token 接口名称 刷新token 请求类型 POST - 请求示例
http: {统一认证后端ip和端口}/api/oauth2/token
3. 参数说明
参数 | 中文说明 | 描述 |
---|---|---|
Username | 客户端ID(应用标识) | 统一认证配置注册的客户端ID(应用标识) |
Password | 客户端秘钥 | 统一认证配置注册的客户端秘钥 |
refresh_token | 刷新token | 刷新token |
grant_type | 认证方式 | 请求类型,默认refresh_token |
- 处理逻辑
- 验证Username是否有效
- 验证Password是否有效
- 根据refresh_token生成token
- 根据以上判断、验证及认证结果返回JSON数据
- 返回值
- 正确返回时
{
"code": "200",
"msg": "成功",
"data": {
"access_token": "eyJraWQiOiIwMWQ5Yjg0Zi0zN2QyLTQ1ODgtOGE5My1mYjZkMmI3MGE0YjYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6IjE0MG05QndlYjBhODdhMyIsIm5iZiI6MTY5NDE0ODg3NSwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSJdLCJpc3MiOiJodHRwOi8vMTE0LjI1MS4yMzUuOTo4MzQ0L2FwaSIsImV4cCI6MTY5NDE3NzY3NSwiaWF0IjoxNjk0MTQ4ODc1fQ.CMafcbaKDj5dAM_6aXH2rJ6xZoAGSvlG5-fnbcPMAEQrl2yXo-ICqz9PyiAjgpOHbfe1hATivzR_-FNNF71Z-GartP-2mUXBOKQ3AnKb-DE4ShNNJ9aOct6ljgpI38x75J6Up3ZYPgXCwvBX-n59lczKTfSPscODnfaX8oIPBVfXvODgJgeYossXLnZpCtAkO7fc7QGXMsUOoIX1rljKZbpundU2_Uh4BjLj8ef-jkYW8NzZGM4luIJI7lHRKKfgH8nLTXQ378m_HNJC9DmrVMn2SGMh9lcXOSp976fiygxVSNWy6oCV0vbQFQPBnXe4d2Y0kIUE1ZND0Mw4Z-hUkw",
"refresh_token": "5-tyWCkCHJEM3mWOhEG59gZPrdITcIEqUEVClG4QR-E2WAxgBsgYkcdi7EgPU_OS7o6DCenfurN-PMZzY0it0MsE3T8iIqbprjdWamTVAy-oTg97E6d4zduqw-yYunw3",
"code": "EZNGjWZ_lQUaxsiooiWZKJmGfBsSu2HNpmFxUYWHwb4IcKPS_-dHHiEyyxike5K0jIhexSToOu2yA29Dan-i-Us8SlkWtH4dSKrFIOFenml5h-6NtFNNi63wTPo5pwnY",
"scope": "openid profile",
"token_type": "Bearer",
"expires_in": 28800,
"client_id": "140m9Bweb0a87a3"
},
"uri": null
}
# 四、获取认证用户
- 基本信息
名称 描述 地址 http://{统一认证后端ip和端口}/api/security/oauth2/user/info 接口名称 获取认证用户信息 请求头 Authorization=Bearer 请求类型 POST - 请求示例
http://{统一认证后端ip和端口}/api/security/oauth2/user/info
3. 参数说明 | 参数 | 中文说明 | 描述 | | access_token | token | 访问令牌 | 4. 处理逻辑
- 验证access_token是否有效
- 根据以上判断、验证及认证结果返回JSON数据
- 返回值
- 正确返回时
{
"code": "200",
"msg": "成功",
"data": {
"accountCode": "admin",
"accountId": "42ba0988866e43e9a3086ef19ebe6806",
"accountName": "超级管理员",
"userName": "超级管理员"
}
}
# 单点退出
# 单点退出接口
基本信息
业务系统需要支持单点退出功能时,需要提供一个单点退出接口。
详细说明
当业务系统需要使用统一认证服务的单点退出功能时,需要将认证时,统一认证返回的access_token参数与自己的session进行绑定, 当从统一认证服务进行退出操作时,统一认证服务会查询该用户所在的所有应用是否支持单点退出配置。统一认证服务会挨个调用支持单点 退出系统配置的退出接口,将登录名和access_token作为参数传递,业务系统接收到后,需要根据access_token参数将自身对应的session 清除
接口详情
名称 | 描述 |
---|---|
接口名称 | 单点退出 |
接口所属 | 业务系统 |
请求类型 | GET |
- 参数说明
参数 | 中文说明 | 描述 |
---|---|---|
access_token | 统一认证访问token | 业务系统通过该token在自己系统进行退出操作 |
- 接口配置
应用中心-->应用管理-->选择应用-->认证管理
- 接口返回
{
"code": "200",
"msg": "success"
}
# 其他配置
# 集群需修改配置
# 1. 缓存修改为redis方式存储
1.1 配置redis地址
spring:
redis:
# redis密码
password:
# redis数据库编号
database: 0
timeout: 5000
# 缓存库地址,单机模式下使用
host: 127.0.0.1
# redis端口
port: 6379
# redis集群下使用
#cluster:
#nodes: 114.242.246.250:7001,114.242.246.250:7002,114.242.246.250:7003,114.242.246.250:7004,114.242.246.250:7005,114.242.246.250:7006
# 强制启用单体登录
当应用系统对接统一认证系统之后,统一认证有可能会宕机。当这种情况发生时,应用系统应提供应急预案。
# 1. 基于HOS框架开发的应用
当遇到上述情况时,只需要访问 {应用系统ip+端口}?ifDowntime=true
即可实现强制使用应用自身登录方式登录。
# 2. 其他应用
其他应用应自行实现应急预案。