9

数日後、Jira 5.2 で SSO を有効にしようとしていて、Jira のヘルプ ページが古くなっていることがわかりました。

各例では、atlassian-seraph の古いバージョンを使用しています (Jira 5.2 は 2.6.0 を使用しています)。

目標: Webseal (リバース プロキシ) にログインしている場合に、Jira に自動的にログインしたい。

バックグラウンド:

シーケンス図

  • Jira はリバース プロキシの背後にあります (図を参照)。
  • このプロキシは、ユーザーを認証し、セッションを保持します。
  • ログインしている場合は、Jira にもログインしたい
  • 提供される唯一の情報はユーザー名です

質問:

http_header からユーザー名を読み取り、ユーザーを認証するカスタム ログイン モジュールを作成する方法は?

リンク:

4

2 に答える 2

11

結局、私は自分でそれを理解しました:

  1. カスタム認証システムが必要です

    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);
      }
    }
    
  2. MyCustomAuthenticator を seraph-config.xml に追加します

    <authenticator class="com.company.jira.MyCustomAuthenticator"/>
    
  3. 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;
        }
    }
    

  4. web.xml 内のフィルターを置き換えます

    <filter>
       <filter-name>login</filter-name>
       <filter-class>com.company.jira.CustomFilter</filter-class>
     </filter>
    

これらの jar は Jira 5.2 に必要です

  • embedded-crowd-api-2.6.2
  • jira-core-5.2.1
  • atlassian-seraph-2.6.0
于 2013-05-22T07:23:19.713 に答える
1

私は Jira 認証に詳しくありませんが、SiteMinder/WebSeal 認証についてはよく理解しています。

どちらのシステムもユーザーを認証し、HTTP ヘッダーでユーザー名を送信します。HTTP ヘッダーの名前を設定できます。また、追加の HTTP ヘッダーでユーザーの電子メールなど、追加のユーザー プロパティを送信することもできます。SiteMinder/WebSeal の背後でユーザーを認証するには、HTTP ヘッダーを取得し、ヘッダーのユーザー名を使用してアプリケーション セッションを作成するだけです。

あなたは間違いなくJiraでそれを解決できます. 次の 2 つのオプションがあります。

  1. 作成済みの SiteMinder オーセンティケーターを使用するには: https://confluence.atlassian.com/display/DEV/SiteMinder+Custom+Seraph+Authenticator+for+Confluence ユーザー名の HTTP ヘッダー名を構成する方法が見つからなかった問題ヘッダ。WebSealuid でヘッダーを構成するか、ソースを取得してヘッダー名を構成可能にする必要があります。uid
  2. リンクに従って独自のオーセンティケーターを実装します: http://docs.atlassian.com/atlassian-seraph/latest/sso.html コードを使用してユーザー名を取得します 。httpServletRequest.getHeader(userNameHeaderName);
于 2013-04-29T10:07:11.613 に答える