配置Jira7.x版本使用REMOTE_USER的HTTP Header方式登录:

前提是已经安装好了JIRA,并且前端使用apache或者nginx拦截对应的地址进行认证,认证之后访问对应的应用的时候,返回一个HTTP HEADER 给应用,标识是哪个用户

关于配置apache的mod_auth_cas以及添加相应的HTTP Header,请参考这篇文章

步骤:

1.实现自己的Authenticator

在jiar的 classes目录下的seraph-config.xml文件中配置的默认的Authenticator是com.atlassian.jira.security.login.JiraSeraphAuthenticator,我们需要仿照它的实现,重新实现一个Authenticator,首先新建一个java工程,导入jiar的相关的依赖包(就是jira对应的WEB-INF/lib目录里的jar包和 WEB-INF/classes目录中的class文件,同时,还要导入servlet-api.jar)

新建一个类,代码如下:

package cn.cmri.atlassian.jira.auth;
/*
* Created with Intellij IDEA
* USER: JiaoYping
* Mail: jiaoyiping@gmail.com
* Date: 2017/10/16
* Time: 15:43
* To change this template use File | Settings | Editor | File and Code Templates
*/ import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.user.util.UserManager;
import com.atlassian.seraph.auth.AuthenticatorException;
import com.atlassian.seraph.auth.DefaultAuthenticator; import java.security.Principal; public class JiraRemoteUserAuth extends DefaultAuthenticator { private static final String REMOTE_USER_HEADER = "remote_user"; @Override
protected Principal getUser(String userName) {
return getUserManager().getUserByName(userName);
} @Override
protected boolean authenticate(Principal principal, String password) throws AuthenticatorException {
//在能够访问到这个段代码之前,就已经通过了apache的认证了,所以,直接返回true
return true;
} @Override
public Principal getUser(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) {
String remoteUser = httpServletRequest.getHeader(REMOTE_USER_HEADER);
if (getUser(remoteUser) != null) {
return getUser(remoteUser);
}
return super.getUser(httpServletRequest, httpServletResponse);
} private UserManager getUserManager() {
return ComponentAccessor.getUserManager();
}
}

编译这个java文件为class文件,放到jira的WEB-INF/classes下的对应目录里

2.修改seraph-config.xml文件中的authenticator为自己实现的Authenticator,注释掉原先的配置。

<!--<authenticator class="com.atlassian.jira.security.login.JiraSeraphAuthenticator"/>-->
<authenticator class="cn.cmri.atlassian.jira.auth.JiraRemoteUserAuth"/>

重新启动JIRA,enjoy

JiraRemoteUserAuth的更多相关文章

随机推荐

  1. “A configuration with this name already exists” error in eclipse run configurations

    “A configuration with this name already exists” error in eclipse run configurations Is there a way t ...

  2. Global.asax的Application_BeginRequest实现url重写无后缀的代码

    本文为大家详细介绍下利用Global.asax的Application_BeginRequest 实现url重写其无后缀,具体核心代码如下,有需求的朋友可以参考下,希望对大家有所帮助 利用Global ...

  3. iis重启的几种方法

    1. 通过“IIS管理器”重启在IIS服务器管理控制树中展开IIS节点,选择需要重新启动IIS服务的计算机,接着单击鼠标右键,选择“所有任务”->“重新启动IIS”. 2.通过“控制面板”-&g ...

  4. Docker技术原理

    Docker技术原理之Linux Namespace(容器隔离) https://blog.csdn.net/songcf_faith/article/details/82748987 Docker技 ...

  5. python concurrent.futures包使用,捕获异常

    concurrent.futures的ThreadPoolExecutor类暴露的api很好用,threading模块抹油提供官方的线程池.和另外一个第三方threadpool包相比,这个可以非阻塞的 ...

  6. iOS 开发,工程中混合使用 ARC 和非ARC(转)

    [前提知识] ARC:Automatic Reference Counting,自动引用计数 在开发 iOS 3 以及之前的版本的项目时我们要自己负责使用引用计数来管理内存,比如要手动 retain. ...

  7. sql 理解

    select b.*,  b.model_ent_name+cast(m.year as varchar)as modelname, m.index_value as val into #tb fro ...

  8. ios开发之--随机背景颜色

    记录个随机背景颜色的方法: + (UIColor*) randomColor{ NSInteger r = arc4random() % ; NSInteger g = arc4random() % ...

  9. 用soapUI测试xml格式的HTTP接口

    有些HTTP接口是直接传递parameter的,有些HTTP请求是将parameter转换为xml串进行传递的.现在要分享的就是如何用soapUI实现xml串的HTTP接口测试. 工具/原料   so ...

  10. 【GIS】Cesium1.49编译

    1.npm install 2.npm install --save-dev gulp 3.gulp default 4.npm run build 5.npm start 遇到问题 1.gulp不好 ...