2013-04-29 4 views
8

Jira 5.2のSSOを有効にしようとしているので、Jiraのヘルプページは古くなっています。Jira 5.2 Seraph SSO逆引きのログインの後

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

目標:私は、私は、WebSEALにログインしていた場合、自動的に(リバースプロキシ)のJiraにログイン取得したい

背景:

sequence diagram

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

質問:カスタムログインを作成する方法

http_headerからユーザー名を読み取り、ユーザーを認証するモジュール?

リンク:

答えて

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. セラフ-config.xmlにするMyCustomAuthenticatorを追加

    <authenticator class="com.company.jira.MyCustomAuthenticator"/> 
    
  3. するウェブ内のフィルターを交換します。httpヘッダ

    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. からユーザー名を設定するには、カスタムフィルタを作成します。 xml

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

これらのjarのは

  • 組み込み群衆-API-2.6.2
  • JIRAコア-5.2.1
  • アトラシアン-セラフ-2.6.0
+1

よくできました(+1)! – Michael

+0

@Tobias:CustomFilterに関するあなたの答えは非常に役に立ちました...また、SAML-SSOリバースプロキシの背後で使用するJiraカスタムオーセンティケータを実装しています。これはHTTP認証ヘッダーを抽出するために必要なものでした。しかし、getUser()の実装では、Crowd APIを使用します。私は興味があります、あなたは自動的にHTTPリクエストからユーザーをつかむためにこれを総称して使用していますか、SSOのために全面的にCrowdを使用していますか?私はCrowdを使用していませんが、できるだけ便利な方法でユーザーを引きつけることが大好きです。 – danzvash

+0

@danzvash:私は、ユーザー(プリンシパル)を検証するために群衆サービスを使用します。あなた自身のプリンシパルを作成することは本当に難しいかもしれないので、私は既に存在するapiだけを追加Crowdサービスを使用しません。私はあなたの質問を理解すれば私は骨董品ですか? :) –

1

私はJiraの認証に慣れていないが、私はよくSiteMinderの/ WebSEALの認証を理解してください。

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

あなたは間違いなくJiraで解決できます。私は、ユーザー名ヘッダのためのHTTPヘッダー名を構成する方法を見つけることができませんでした問題 https://confluence.atlassian.com/display/DEV/SiteMinder+Custom+Seraph+Authenticator+for+Confluence :すでに作成SiteMinderの認証を使用するには

  1. :あなたは、2つのオプションがあります。これは、ヘッダ名は、あなたは、WebSEALのヘッダuidを設定したり、ソースを取得しようとすると、ヘッダー名が設定可能にする必要がありuid であることを前提としています。
  2. あなたのリンクに応じて、独自の認証システムを実装します。 http://docs.atlassian.com/atlassian-seraph/latest/sso.html コードエンドで httpServletRequest.getHeader(userNameHeaderName);
+0

のJira 5.2のために必要とされますHTTPヘッダーからユーザー名を読み取ることは、前にJBoss用のSSOプラグインを実行しても問題ありません。残念ながら、オプション2の例は古くなっており、実際のドキュメントは見つかりませんでした。 しかし、私は間違いなくオプション1をチェックアウトします。 –

+0

オプション1をチェックしてもそれは役に立ちませんでした。 –

関連する問題