配置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,就会自动登录

最新文章

  1. NopCommerce 在Category 显示 Store List列表
  2. DevExpress 为TextEdit设置水印文字
  3. CountDownLatch和CyclicBarrier 举例详解
  4. HoloLens开发手记 - Unity development overview 使用Unity开发概述
  5. php--列表展示(小实训一月考)
  6. MySql 日期函数
  7. Java应用架构的演化之路
  8. How Tomcat Works(四)
  9. linux 环境变量的设置【转】
  10. DEDECMS中,channel标签
  11. hdu 2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
  12. 无法安装vmware tools的解决方PLEASE WAIT! VMware Tools is currently being installed on your system. Dependin
  13. Linux下访问文件的基本模式
  14. WPF DataGrid自动生成行号
  15. Saiku控制页面展示的数据过长自动换行(二十四)
  16. Core DES加、解密
  17. Codeforces Round #541--1131F. Asya And Kittens(基础并查集)
  18. stm32之TIM+ADC+DMA采集50HZ交流信号
  19. how-to-build-c-static-libraries-boost
  20. 搜集的一些酷炫的金属色 ,RGB值 和大家分享一下

热门文章

  1. xshell,putty远程连接Linux并使用密钥认证
  2. datepicker clone 控件错误
  3. iOS开发异常处理教程
  4. 8. Django系列之上传文件与下载-djang为服务端,requests为客户端
  5. C#特性文章学习
  6. C# toolstrip 上添加DateTimePicker Control控件
  7. SpringMVC -- 梗概--源码--贰--拦截器:Interceptor
  8. yii中缓存(cache)详解
  9. ios开发之--仿(微信)自定义表情键盘
  10. MySQL用户认证及权限控制