JiraRemoteUserAuth
配置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的更多相关文章
随机推荐
- 压缩打包介绍/gzip压缩工具/bzip2压缩工具/xz压缩工具
6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 常见的压缩文件格式 windows .rar .zip .7z linux ...
- .net 图片上传
/// <summary> /// asp.net上传图片并生成缩略图 /// </summary> /// <param name=& ...
- [Learn AF3]第二章 App Framework 3.0的组件View——AF3的驱动引擎
View:af3中的驱动引擎 组件名称:View 使用说明:按照官方的说法,view组件是af3的“驱动引擎(driving force)”,view是af3应用的基础,一个app中可以包 ...
- 录制iPhone屏幕并转成gif方案
app的开发经常会碰到需要演示一个交互,或者一个bug的情况,通常涉及一连串的操作以及操作的反馈,这是文字,或截图都无法表达的,视频的话还得播放器参与,最好的一个想法应该是录制屏幕然后再转成gif图片 ...
- libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'
没有别的原因: 找正确的 libstdc++.so.5 包就成. 我这儿有,需要的可以下载奥!
- sql2008,sa不能使用:不能为主体 sa 中设置凭据
打开属性对话框,为 SQL Server Administrator 帐户,然后您执行了"sa"登录使用 SQL Server Management Studio 工具.您修改为在 ...
- Pair programming
Pair programming is an agile software development technique in which two programmers work together a ...
- Grunt--Less
摘要: 之前介绍了自动构建工具Grunt,其中有一个模块是"grunt-contrib-less",下面是配置Grunt自动编译less文件. 安装: Grunt是基于node,功 ...
- 【D】分布式系统的CAP理论
2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP.之后, ...
- instsrv.exe srvany.exe启动服务
1.通过注册表注册服务 private static readonly string regpath = @"SYSTEM\CurrentControlSet\Services\Consul ...