jeecg的单点登录
在 JeecgBoot 中,单点登录(SSO,Single Sign-On)是一个常见的需求,它通常用于多个系统共享一个统一的登录认证机制。调试 Jeecg 的单点登录时,可以分为以下几个步骤:
目录
1. 确保 SSO 环境搭建
2. JeecgBoot SSO 配置
修改 application.yml 配置文件
参数解释
登录 URL 和回调 URL
3. 调试流程
1. 启动 JeecgBoot 服务
2. 访问登录页面
3. 认证成功后返回系统
4. 排查常见问题
4. 扩展:本地调试单点登录
使用 Ngrok 暴露本地服务
5. 日志查看与调试
1. 确保 SSO 环境搭建
首先,你需要确保有一个中央认证服务器(如 CAS、Keycloak 或 OAuth 服务器)来处理认证。JeecgBoot 支持 OAuth2 标准协议进行单点登录,因此可以对接多个不同的 SSO 解决方案。
2. JeecgBoot SSO 配置
JeecgBoot 支持多种方式的单点登录,如使用 OAuth2、Keycloak、CAS 等方式。这里假设你使用 OAuth2 协议(如对接 Keycloak 或其他 OAuth2 提供商)来实现单点登录。
修改 application.yml
配置文件
首先,打开 JeecgBoot 的配置文件 application.yml
,在其中配置 SSO 相关的参数。
spring:security:oauth2:client:registration:sso: # 配置 OAuth2 客户端client-id: your-client-idclient-secret: your-client-secretscope: openid,profile,emailauthorization-grant-type: authorization_coderedirect-uri: "{baseUrl}/login/oauth2/code/sso"provider:sso: # 配置 OAuth2 提供商authorization-uri: https://your-oauth-server/auth/realms/{realm}/protocol/openid-connect/authtoken-uri: https://your-oauth-server/auth/realms/{realm}/protocol/openid-connect/tokenuser-info-uri: https://your-oauth-server/auth/realms/{realm}/protocol/openid-connect/userinfouser-name-attribute: preferred_username
参数解释
- client-id: 在 OAuth2 服务器上创建的客户端 ID。
- client-secret: 客户端的密钥,用于 OAuth2 身份认证。
- authorization-grant-type: 授权类型,这里使用的是
authorization_code
。 - redirect-uri: 登录后的回调地址,通常是
/login/oauth2/code/sso
。 - authorization-uri: OAuth2 服务器的授权地址。
- token-uri: 获取 token 的地址。
- user-info-uri: 获取用户信息的地址。
- user-name-attribute: 作为用户名的属性字段,通常为
preferred_username
。
登录 URL 和回调 URL
- 登录 URL 通常是你系统的
/login
地址,当用户访问该地址时,系统会自动重定向到 OAuth2 提供商的认证页面。 - 当用户成功认证后,OAuth2 提供商会将用户重定向到你配置的
redirect-uri
,并返回授权码。系统会使用该授权码获取访问令牌并获取用户信息。
3. 调试流程
1. 启动 JeecgBoot 服务
确保你的 JeecgBoot 项目已经启动,确保基本配置没有错误。通过 http://localhost:8080/
或你的自定义端口访问系统。
2. 访问登录页面
访问 JeecgBoot 的登录页面 /login
,系统会重定向到配置的 OAuth2 认证服务器进行认证。
3. 认证成功后返回系统
认证通过后,OAuth2 服务器会将用户重定向到配置的回调地址。JeecgBoot 会从 OAuth2 服务器获取授权码,用授权码换取访问令牌,并获取用户的详细信息。
4. 排查常见问题
- 重定向失败:检查 OAuth2 提供商的回调地址配置是否正确,应与 JeecgBoot 配置中的
redirect-uri
保持一致。 - 授权失败:检查客户端 ID 和密钥是否正确,授权类型是否匹配。
- 获取用户信息失败:检查
user-info-uri
是否配置正确,并且 JeecgBoot 是否能够成功请求该地址。 - 跨域问题:如果认证服务器和 JeecgBoot 位于不同域名下,可能会遇到跨域问题。可以在 JeecgBoot 中通过
CorsConfiguration
配置跨域访问。
4. 扩展:本地调试单点登录
对于本地开发和调试,可以使用 Ngrok 或类似工具将本地应用暴露在外网,方便 OAuth2 提供商回调本地开发环境的 URL。
使用 Ngrok 暴露本地服务
ngrok http 8080
这会生成一个临时外网 URL,可以将这个 URL 配置到 OAuth2 提供商的回调地址中,方便调试。
5. 日志查看与调试
- 查看控制台日志:在 JeecgBoot 启动时,控制台会输出一些认证相关的信息。如果遇到问题,可以通过控制台日志进行排查。
- 查看 OAuth2 服务器日志:如果是 OAuth2 服务器的配置问题,可以在该服务器的日志中找到相应的错误提示。