单点登录客户端配置
第三方应用作为 MDP 的单点登录客户端接入时,核心配置都在应用自己的 application.yml 中。本文分别介绍 ticket 模式与 OAuth2 模式的配置文件,说明每个值从哪来、哪些必须改、哪些禁止改。
完整的接入步骤(建应用、改代码)见单点登录-若依实战(ticket模式)与若依实战(oauth2模式),本文聚焦配置本身。
1. ticket 模式(sa-token-sso-client)
以若依(RuoYi-Vue-Sso)为例,配置位于 ruoyi-admin/src/main/resources/application.yml 的 sa-token.sso-client 段:
sa-token:
is-log: true
sso-client:
### 以下信息 根据【应用管理】新建应用后系统生成的值自行调整 ###
# 应用ID(即 MDP 平台创建应用后分配的 appKey)
client: ruoyi-vue-sso
# 应用秘钥(即 MDP 平台分配的 appSecret)
secret-key: 您的应用秘钥
### 以下信息 根据你的部署环境酌情修改 ip 和 port ###
# 单体版:boot-server 访问地址
server-url: http://localhost:23455
# 微服务版:inner-gateway-server 访问地址 + workbench-server 的路由前缀
# server-url: http://localhost:23450/api/workbench
# mdp-vben 前端统一登录页地址
authUrl: 'http://localhost:7700/#/auth/login'
### 以下信息请勿修改 ###
# Server 端:单点注销地址
signoutUrl: '/anyUser/sso/signout'
# Server 端:推送消息地址
pushUrl: '/anyUser/sso/pushS'
# 是否使用模式3(同域单点登录, ticket 校验走后台)
is-http: true| 配置项 | 必改 | 说明 |
|---|---|---|
client | 是 | 在【控制台】-【开放平台】-【应用管理】创建应用后获得,登录方式需选择「ticket模式」 在【开发者中心】-【应用管理】申请应用并通过审核后,点击【查看】-【应用秘钥】获取 |
secret-key | 是 | 同上;泄露后可在平台重置 |
server-url | 是 | MDP 后端地址;若生产通过Nginx代理,则取nginx的ip和端口;单体版与微服务版取值不同(见上例注释) |
authUrl | 是 | MDP 前端(web-workbench)统一登录页地址,注意 hash 路由 /#/auth/login 不能少 |
signoutUrl / pushUrl | 禁止修改 | MDP 服务端约定的固定接口路径 |
is-http | 一般不改 | true 为模式三(跨域时的推荐模式);仅在前后端完全同域时才可用 false |
2. OAuth2 模式(sa-token-oauth2-client)
以若依(RuoYi-Vue-oauth2)为例,配置位于 ruoyi-admin/src/main/resources/application.yml 的 sa-token.oauth2-client 段:
sa-token:
is-log: true
oauth2-client:
# 应用ID(即 MDP 平台创建应用后分配的 client_id / appKey)
clientId: 'ruoyi-vue-oauth'
# 应用秘钥(即 client_secret / appSecret)
clientSecret: 您的应用秘钥
# 后端接口地址(MDP 服务端) 单体版和微服务版地址不同
serverUrl: 'http://localhost:23455'
# 前端 oauth2 授权页地址(web-workbench 前端)
authorizeUrl: 'http://localhost:7700/#/oauth2/authorize'| 配置项 | 必改 | 说明 |
|---|---|---|
clientId | 是 | 在 MDP 平台创建应用后获得,登录方式需选择「OAuth2认证」,且已签约 authorization_code 授权类型 |
clientSecret | 是 | 同上 |
serverUrl | 是 | MDP 后端接口地址;单体版和微服务版地址不同;微服务版为 http://inner-gateway地址/api/workbench |
authorizeUrl | 是 | MDP 前端授权页地址(hash 路由 /#/oauth2/authorize 不能少),区别于后端 serverUrl |
两种模式的配置差异对照:
| 对比项 | ticket 模式 | OAuth2 模式 |
|---|---|---|
| 配置段 | sa-token.sso-client | sa-token.oauth2-client |
| 引入依赖 | sa-token-sso-client(MDP 自己封装的jar)sa-token-forest | sa-token-oauth2-client-starter(MDP 自己封装的jar)sa-token-forest |
| 应用凭证 | client / secret-key | clientId / clientSecret |
| 登录页地址 | authUrl(统一登录页) | authorizeUrl(授权页) |
| 固定接口路径 | signoutUrl / pushUrl(禁止改) | 无(token/refresh/revoke 等接口地址由工具包自动拼接) |
3. 常见问题
Q1:配置都对了但登录提示「非法 client」?
确认 MDP 平台该应用的登录方式与您接入的模式一致(ticket 应用不能配到 oauth2-client 段),且 client 值与应用标识完全一致(区分大小写)。
Q2:微服务版 server-url 应该填哪个地址?
OAuth2 与 SSO 接口都部署在 workbench-server 中,通过内部网关访问时地址为 http://inner-gateway地址/api/workbench(/api 是网关 context-path,/workbench 是路由前缀)。单体版直接填 http://boot-server地址。
Q3:授权成功但回调报 redirect_uri 不合法?
OAuth2 模式下回调地址必须与应用配置的跳转地址白名单完全匹配,检查协议(http/https)、域名、端口、路径,以及前端换 token 时回传的 redirect_uri 与发起授权时是否一致。