原创!无插件hack方式实现conflulence open connect sso登陆
原创!无插件hack方式实现conflulence open connect sso登陆
原创!无插件hack方式实现conflulence open connect sso登陆
原创!无插件hack方式实现conflulence open connect sso登陆
- 登陆页面增加sso按钮
按钮跳转页面为SSO登陆页面,例如:
<a href="https://sso.xxx.com/application/o/authorize/?response_type=code&client_id=xxxxxx&redirect_uri=https://confluence.xxx.com/plugins/servlet/sso/callback&scope=openid+profile+email" >Login with SSO</a>
2.增加后台
public class OIDCCallbackServlet extends HttpServlet {
//private static final Logger LOGGER = Logger.getLogger(OIDCCallbackServlet.class.getName());
// 1. 换成你真实的参数
private static final String TOKEN_URL = "https://sso.xxx.cn/application/o/token/";
private static final String USERINFO_URL= "https://sso.xxx.cn/application/o/userinfo/";
private static final String CLIENT_ID = "xxxxx";
private static final String CLIENT_SECRET = "dddddd";
private static final String REDIRECT_URI = "https://confluence.xxx.cn/plugins/servlet/sso/callback";
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String code = req.getParameter("code");
if (code == null || code.trim().isEmpty()) {
resp.sendError(400, "缺少 code 参数");
return;
}
try {
System.out.println("CALLBACK Code: " + code);
// 1) 准备请求参数和请求头
// 2) 发送 POST 请求获取 token
// 2) token 换 userinfo
// 将 Principal 对象放入 Seraph 的特定会话属性中
req.getSession().setAttribute("seraph_defaultauthenticator_user", principal);
System.out.println("SSO Login SUCCESS");
resp.sendRedirect("/"); // 回到首页
} catch (Exception e) {
System.out.println("OIDC Exception: " + e);
throw new IOException("OIDC 登录失败", e);
}
}
}
3.修改启动类
<!-- ======== -->
<!-- Servlets -->
<!-- ======== -->
<!-- OIDC Callback Servlet -->
<servlet>
<servlet-name>OIDCCallbackServlet</servlet-name>
<servlet-class>com.atlassian.confluence.sso.OIDCCallbackServlet</servlet-class>
<load-on-startup>10</load-on-startup>
</servlet>
4.查看日志
打算写成脚本方式,支持一键安装和卸载。(有尝获取代码~)
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · 我给开源软件hoppscotch增加了sso单点登陆功能
- · 单点登录实现——基于OAuth2.0协议的接入方案
- · 单点登录SSO的实现原理:asp.net Forms身份验证详解(三)
- · 单点登录SSO的实现原理:附源码(二)
- · 单点登录SSO的实现原理(一)
- · docker insepct logtail
- · 解决confluence文件预览问题,中文乱码问题
- · 利用k8s ingress访问非POD服务
- · 解决vault sidecar认证失败的问题
- · Docker 快速部署 FastAPI 项目
- · docker安装 Confluence9
- · codium-server.service


