一、概述
统一身份认证系统提供了单点登录功能。本文档详述了统一身份认证系统单点登录接口,介绍了应用系统对接统一身份认证系统的过程和方法,用以帮助开发人员将应用系统接入统一身份认证系统。
本文档支持的协议:OAuth2
二、统一认证集成规范
2.1 SSO登录场景
| 序号 | 场景 | 预期结果 | 确认 |
|---|---|---|---|
| 1 | 登录跳转,在未登录的条件下,直接访问业务系统 | 跳转到单点登录界面 | 是 |
| 2 | 登录跳转,在已登录的条件下,直接访问业务系统 | 直接进入业务系统 | 是 |
| 3 | 正常登录,先登录认证,然后访问业务系统 | 直接进入业务系统 | 是 |
| 4 | 正常登出,在单点登录系统登出 | 访问业务系统要重新登录 | 是 |
| 5 | 正常登出,在业务系统登出 | 单点登录系统同步登出 | 是 |
2.2 认证流程
OAuth2 登录和认证流程
- 后端验证 token 后,创建本地会话(如 JSESSIONID 或自定义 Cookie);
- 后续应用请求靠本地会话维持登录状态,不再依赖原始 token;
- 本地会话有过期时间(如 30 分钟无操作过期);
三、认证服务接口
3.1 SSO服务端认证
浏览器登录
| 分类 | 说明 |
|---|---|
| 请求地址(开发环境) | http://${host}:${port}/pamirs/sso/auth?client_id={client_id}&redirect_uri={redirect_uri}&state={state} |
| 请求地址(测试环境) | http://${host}:${port}/pamirs/sso/auth?client_id={client_id}&redirect_uri={redirect_uri}&state={state} |
| 请求方式 | GET |
| 请求参数 | redirect_uri:应用系统回调地址client_id:SSO 服务端颁发的应用 IDstate:可选但推荐,用于防止 CSRF 的随机字符串(UUID 随机码) |
| 请求示例 | http://${host}:${port}/pamirs/sso/auth?client_id=client123456&redirect_rui=http://app.example.com&state=abc123 |
| 响应说明 | 1. 已登录:重定向到 redirect 地址并携带授权码 code,如 http://app.example.com&state=abc123&code=xxx2. 未登录:重定向到服务器 SSO 登录地址 |
| 备注 | SSO 登录成功后,会携带授权码并重定向到 redirect 地址 |
3.2 验证授权码
| 分类 | 说明 |
|---|---|
| 请求地址(开发环境) | http://${host}:${port}/pamirs/sso/oauth2/authorize |
| 请求地址(测试环境) | http://${host}:${port}/pamirs/sso/oauth2/authorize |
| 请求方式 | POST |
| 请求 Body | {"grant_type":"authorization_code","client_id":"xxxx","client_secret":"xxxxx","code":"xxxx"} |
| 请求示例 | http://${host}:${port}/pamirs/sso/oauth2/authorize |
| 响应说明 | {"code":"0","msg":"成功","data":{"access_token":"xxxxx","expires_in":7200,"refresh_token":"xxxxxx","refresh_token_expiresIn":604800}} |
| 备注 | — |
3.2 根据token获取用户信息
| 分类 | 说明 |
|---|---|
| 请求地址(开发环境) | http://${host}:${port}/pamirs/sso/oauth2/getUserInfo |
| 请求地址(测试环境) | http://${host}:${port}/pamirs/sso/oauth2/getUserInfo |
| 请求方式 | POST |
| 请求头 | Authorization: Bearer xxxxxxxx |
| 请求 Body | {"client_id":"xxxx"} |
| 请求示例 | http://${host}:${port}/pamirs/sso/oauth2/getUserInfo |
| 响应 | {"code":"0","msg":"成功","data":{"name":"xxxxx","email":"xxxxx","login":"xxxxxx","id":"xxxxxxx"}} |
| 备注 | 成功返回用户信息;失败返回错误码:1 |
根据实际情况其他协议的验证接口
3.3 单点登出接口
| 分类 | 说明 |
|---|---|
| 请求地址(开发环境) | http://${host}:${port}/pamirs/sso/oauth2/logout |
| 请求地址(测试环境) | http://${host}:${port}/pamirs/sso/oauth2/logout |
| 请求方式 | POST |
| 请求头 | Authorization: Bearer xxxxxxxx |
| 请求 Body | {"client_id":"xxxx"} |
| 请求示例 | http://${host}:${port}/pamirs/sso/oauth2/logout |
| 响应头 | HTTP/1.1 200;Content-Type: application/html;charset=UTF-8 |
| 响应体 | 登出成功页面 |
| 备注 | 应用系统向 SSO 系统发起登出请求,SSO 收到后会通知所有其它系统登出该用户 |
四、应用注册
-
在服务端登记接入的应用,颁发应用的client_Id和client_secret; 注意回调地址,必须带上Schema(http(s))


-
并确保部署的应用机器能访问到SSO的服务端:
- 开发环境:http://${host}:${port}
- 测试环境:http://${host}:${port}
- 正式环境:http://${host}:${port}
五、客户端接入
5.1 方式一:引入SSO客户端
业务系统在接入SSO统一认证系统时,工程中引入SSO客户端jar包,实现少量业务逻辑就可以完成接入,过程如下:
- 引入客户端依赖
<dependency> <groupId>pro.shushi.pamirs.core</groupId> <artifactId>pamirs-sso-client-starter</artifactId> </dependency> - 应用配置修改
修改你SpringBoot应用的application.yaml,增加客户端的相关配置项pamirs: sso: #服务端地址 server-url: http(s)://ssoIp:port/pamirs/sso/oauth2 #客户端ID client-id: 1003 #客户端密钥 client-secret: 23bfde398056736c6ead917c3e6a2a5d #客户端排除拦截urls,默认为空,支持AntPathMatcher匹配 exclude-urls: - /sample/demo/page - /sample/demo/i18n #客户端拦截urls,默认通配所有路径,支持AntPathMatcher匹配 url-patterns: - /sample/*
说明:
- server-url为SSO服务端认证地址;
- client-id和client-secret是步骤一在服务端登记时生成的应用标识和密钥,用于客户端向服务端发起accessToken请求做校验;
5.2 方式二:不引入客户端包
使用场景:不使用SSO客户端包或者不是java语言,可以参照上面的认证接口进行。
六、外部应用接入到Oinone应用中心
1、确保在SSO应用注册时,正确填写了 回调地址;
2、在应用中心创建应用,参考下面的截图;
3、配置应用的首页
给应用配置首页:
1、选择“绑定URL”
2、URL配置为:http(s)://ssoIp:port/pamirs/sso/apply/transfer?client_id=xxxxxxxxxxxxxxxxxxxxxx
client_id 为外部应用在SSO服务端登记后生成的唯一应用标识
开发环境:http://${host}:${port}/pamirs/sso/apply/transfer?client_id=xxxxxxxxxxxxxxxxxxxxxx
测试环境:http://${host}:${port}/pamirs/sso/apply/transfer?client_id=xxxxxxxxxxxxxxxxxxxxxx
线上环境:http://${host}:${port}/pamirs/sso/apply/transfer?client_id=xxxxxxxxxxxxxxxxxxxxxx
3、跳转类型选择“开单新窗口”;
4、配置完成保存后,刷新页面。就可以从配置中心跳转到目标页面的回调地址了。
Oinone社区 作者:yexiu原创文章,如若转载,请注明出处:https://doc.oinone.top/other/25443.html
访问Oinone官网:https://www.oinone.top获取数式Oinone低代码应用平台体验