当前位置: 首页 > news >正文

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 服务器的配置问题,可以在该服务器的日志中找到相应的错误提示。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何使用YOLOv5进行物体检测,并通过GraspNet进行6D位姿估计,从而实现机械臂的抓取规划
  • misc音频隐写
  • 《代码整洁之道》读书笔记--目录
  • 【高级编程】synchronized 解决并发问题 类的线程安全类型
  • wireshark打开时空白|没有接口,卸载重装可以解决
  • iOS的传递链与响应链机制
  • CSP-J算法基础 树状结构与二叉树
  • 学习笔记 - 知识图谱的符号表示方法
  • C#中的装箱和拆箱是什么
  • Sentinel 控制界面
  • element form rules 验证数组对象属性时如何写判断规则
  • 组合总和IV(力扣---动态规划)
  • 多态(上)【C++】
  • 如何搞定日语翻译?试试这四款工具
  • FreeRTOS学习(2)延时函数的封装
  • CEF与代理
  • const let
  • CSS 三角实现
  • mysql外键的使用
  • October CMS - 快速入门 9 Images And Galleries
  • PAT A1092
  • Selenium实战教程系列(二)---元素定位
  • vue-loader 源码解析系列之 selector
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • - 概述 - 《设计模式(极简c++版)》
  • 记录一下第一次使用npm
  • 排序算法之--选择排序
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 如何正确理解,内页权重高于首页?
  • ​Python 3 新特性:类型注解
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ​字​节​一​面​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • #1015 : KMP算法
  • #pragma once与条件编译
  • (1)Hilt的基本概念和使用
  • (4.10~4.16)
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C++)八皇后问题
  • (c语言+数据结构链表)项目:贪吃蛇
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (NSDate) 时间 (time )比较
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (七)glDrawArry绘制
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (算法)硬币问题
  • (转)大道至简,职场上做人做事做管理
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...