ConfluenceRemoteUserAuth
配置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,就会自动登录
ConfluenceRemoteUserAuth的更多相关文章
随机推荐
- 浅谈你感兴趣的 CLR GC 机制底层
本文内容是学习CLR.via C#的21章后个人整理,有不足之处欢迎指导. 昨天是1024,coder的节日,我为自己coder之路定下一句准则--保持学习,保持自信,保持谦逊,保持分享,越走越远. ...
- SQL2000系统表、存储过程、函数的功能介绍及应用
转自:http://blog.csdn.net/zlp321002/article/details/480925 ----系统表------------------------------------ ...
- 微信小程序省市区选择器对接数据库
前言,小程序本身是带有地区选着器的(网站:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html),由于自己开发的程序的数据是很 ...
- 小程序实现textarea随输入的文字行数变化高度自动增加
参考链接:https://blog.csdn.net/liuwengai/article/details/78987957 该实现方法是根据上面的链接改编为小程序的实现,代码如下: wxml: < ...
- css实现图片横向排列滚动
.imageList{ overflow-x: auto; overflow-y: hidden; height:180px; white-space: nowrap; img{ width:auto ...
- VS2008编译错误:error C2065: 'PMIB_TCPSTATS' : undeclared identifier c:\program files (x86)\microsoft sdks\windows\v7.0a\include\iphlpapi.h 411
安装了VS2008编译之前的程序,结果出现了编译错误,以为是VS2008的Sp1补丁没装好,重装补丁后还是不行,编译错误如下: 双击错误会定位在iphlpapi.h中, 一个可行的解决办法是:把iph ...
- selenium+phantomjs渲染网页
from selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapa ...
- Spring中可以复用的工具类&特性记录
Spring 里有用工具类: GenericTypeResolver 解析泛型类型.核心逻辑还是调用 ResolvableTypeResolvableType 解析泛型类型 BeanWrapper 利 ...
- RESTful状态码说明
https://www.zhihu.com/question/58686782/answer/159603453 常用状态码: 200 请求成功并返回所需资源 400 客户端请求有语法错误 401 未 ...
- Python模块常用的几种安装方式 【转】
转自:http://blog.chinaunix.net/uid-23500957-id-3781907.html 一. 单文件模块直接把文件拷贝到 $python_dir/Lib 二. 多文件模块, ...