Tob*_*now 9 reverse-proxy jira webseal single-sign-on
几天后,我正在尝试为Jira 5.2启用SSO,并且发现,Jira的帮助页面已经过时了.
每个示例都使用旧版本的atlassian-seraph(Jira 5.2使用2.6.0).
目标: 如果我登录Webseal(反向代理),我想自动登录Jira.
背景:

题:
如何编写自定义登录模块,从http_header读取用户名并验证用户身份?
链接:
Tob*_*now 11
最后我自己想通了:
您需要一个自定义身份验证器
public class MyCustomAuthenticator extends DefaultAuthenticator {
protected boolean authenticate(Principal user, String password)
throws AuthenticatorException {
return true;
}
protected Principal getUser(String username) {
return getCrowdService().getUser(username);
}
private CrowdService getCrowdService() {
return (CrowdService)ComponentManager.getComponent(CrowdService.class);
}
}
Run Code Online (Sandbox Code Playgroud)将MyCustomAuthenticator添加到seraph-config.xml
<authenticator class="com.company.jira.MyCustomAuthenticator"/>
Run Code Online (Sandbox Code Playgroud)编写自定义过滤器以从http-header设置用户名
public class CustomFilter extends PasswordBasedLoginFilter {
@Override
protected UserPasswordPair extractUserPasswordPair(
HttpServletRequest request) {
String username = request.getHeader("iv-header");
if (username != null && username.trim().length() != 0) {
return new PasswordBasedLoginFilter.UserPasswordPair(
username, "DUMMY", false);
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
替换web.xml中的过滤器
<filter>
<filter-name>login</filter-name>
<filter-class>com.company.jira.CustomFilter</filter-class>
</filter>
Run Code Online (Sandbox Code Playgroud)Jira 5.2需要这些罐子
| 归档时间: |
|
| 查看次数: |
5089 次 |
| 最近记录: |