ConfluenceRemoteUserAuth
2024-09-21 01:34:26
配置confluence使用httpHeader的方式进行登录(目标版本:atlassian-confluence-6.3.3)
前提是已经安装好了Confluence,并且前端使用apache或者nginx拦截对应的地址进行认证,认证之后访问对应的应用的时候,返回一个HTTP HEADER 给应用,标识是哪个用户
关于配置apache的mod_auth_cas以及添加相应的HTTP Header,请参考这篇文章
步骤:
1.实现自己的Authenticator
新建java项目,导入confluence相关依赖,新建java文件如下:
package cn.cmri.atlassian.confluence;
/*
* Created with Intellij IDEA
* USER: JiaoYiping
* Mail: jiaoyiping@gmail.com
* Date: 2017/8/24
* Time: 16:48
* To change this template use File | Settings | Editor | File and Code Templates
*/
import com.atlassian.confluence.user.ConfluenceAuthenticator;
import javax.servlet.http.HttpServletRequest;
import java.security.Principal;
public class ConfluenceRemoteUserAuthenticator extends ConfluenceAuthenticator {
private static final String REMOTE_USER_HEADER = "remote_user";
@Override
public Principal getUser(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) {
String remoteUserHeader = request.getHeader(REMOTE_USER_HEADER);
Principal remoteUser = this.getUser(remoteUserHeader);
if (this.getUserFromSession(request) != null) {
Principal currentUser = getUserFromSession(request);
if (remoteUserHeader != null && !currentUser.getName().equals(remoteUserHeader)) {
setSessionAttribute(remoteUser, request);
return remoteUser;
}
return getUserFromSession(request);
}
if (remoteUserHeader != null && remoteUser != null) {
setSessionAttribute(remoteUser, request);
return remoteUser;
}
return super.getUser(request, response);
}
private void setSessionAttribute(Principal user, HttpServletRequest request) {
if (user != null && request != null) {
request.getSession().setAttribute("seraph_defaultauthenticator_user", user);
request.getSession().setAttribute("seraph_defaultauthenticator_logged_out_user", (Object) null);
}
}
}
编译该文件,并把相应的class文件放到confluence的WEB-INF/classes下的相应位置
2.在confluence的WEB-INF/classes下,修改seraph-config.xml,把之前配置的Authenticator替换为自己实现的Authenticator
<!--<authenticator class="com.atlassian.confluence.user.ConfluenceAuthenticator"/>-->
<authenticator class="cn.cmri.atlassian.confluence.ConfluenceRemoteUserAuthenticator"/>
重启confluence,经过反向代理认证之后,跳转到该应用的请求,如果带上remote_user这个header,就会自动登录
最新文章
- NopCommerce 在Category 显示 Store List列表
- DevExpress 为TextEdit设置水印文字
- CountDownLatch和CyclicBarrier 举例详解
- HoloLens开发手记 - Unity development overview 使用Unity开发概述
- php--列表展示(小实训一月考)
- MySql 日期函数
- Java应用架构的演化之路
- How Tomcat Works(四)
- linux 环境变量的设置【转】
- DEDECMS中,channel标签
- hdu 2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- 无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
- Linux下访问文件的基本模式
- WPF DataGrid自动生成行号
- Saiku控制页面展示的数据过长自动换行(二十四)
- Core DES加、解密
- Codeforces Round #541--1131F. Asya And Kittens(基础并查集)
- stm32之TIM+ADC+DMA采集50HZ交流信号
- how-to-build-c-static-libraries-boost
- 搜集的一些酷炫的金属色 ,RGB值 和大家分享一下