配置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. linux和windows互传文件/用户配置文件和密码配置文件/用户组管理/用户管理

    2.27linux和windows互传文件 3.1 用户配置文件和密码配置文件 3.2 用户组管理 3.3 用户管理 linux和windows互传文件 显示日期date [root@centos_1 ...

  2. hibernate DetachedCriteria 分页

    # 具有一个直观的.可扩展的条件查询API是Hibernate的特色. # # 15.1. 创建一个Criteria 实例 # org.hibernate.Criteria接口表示特定持久类的一个查询 ...

  3. 按键精灵如何批量复制文本,再往excel里面一次性粘贴?

    原帖地址 http://zhidao.baidu.com/link?url=M2A9E1JF7wAzjtxMQG9uiW_PvP39HVlfwn6zDMzk9m6U05JA37SrgDcrVXg_c9 ...

  4. HOStringSense大段字符串检测器

    下载地址:https://github.com/holtwick/HOStringSense-for-Xcode 修改HOStringSense.xcodeproj工程里的HOStringHelper ...

  5. UNIX环境编程学习笔记(11)——文件I/O之文件时间以及 utime 函数

    lienhua342014-09-16 1 文件的时间 每个文件都有三个时间字段,如表 1 所示. 表 1: 文件的三个时间字段 说明 字段 st_atime 文件数据的最后访问时间 st_mtime ...

  6. level 1 -- unit 2 - what 引导的特殊疑问句

    特殊疑问句 what 引导的特殊疑问句 常见结构如下: 1. what be sb/sth? 1.1 如 谓语动词是单数is what is your phone number ? what is y ...

  7. todo:区块链????????

    2018年这个春节,人人都在讲btc.ico.区块链. 恶补了几天区块链的知识和文章,一总结就是:一头雾水,没有哪个vc.创业者.技术人员 讲明白区块链到底是什么,技术上如何实现,就是哪些研读过中本聪 ...

  8. iOS app开发入门

    https://github.com/qinjx/30min_guides/blob/master/ios.md

  9. android 不能在子线程中更新ui的讨论和分析

    问题描写叙述 做过android开发基本都遇见过 ViewRootImpl$CalledFromWrongThreadException,上网一查,得到结果基本都是仅仅能在主线程中更改 ui.子线程要 ...

  10. 高德地图api比例尺

    20-10m-(19=<zoom<20) 19-10m-(19=<zoom<20) 18-25m-(18=<zoom<19) 17-50m-(17=<zoom ...