Crowd を Atlassian Jira と連携する

Crowd では現在、Jira バージョン 3.7.4 以降の中央での認証およびシングル サインオンをサポートしています。

このドキュメントがご利用の Crowd バージョンに適用されるかどうかをご確認ください

このドキュメントの Crowd リリース番号をご利用の Crowd バージョンと確認してください。Crowd の異なるバージョンを使用している場合、Crowd ドキュメントのホームページの「以前のバージョン」から適切なドキュメントを見つけることができます。

このページの内容

Jira と Crowd バージョンの互換性

利用している Crowd と Jira のバージョンに互換性があることを確認します。

  • Jira 4.2 を使用している場合、Crowd 2.0.7 以降にアップグレードしてください (Crowd 2.4 を検討している場合、 JRA-27890 - Getting issue details... STATUS をご確認ください)。
  • Jira 4.3 以降を使用している場合、Crowd 2.1 以降にアップグレードしてください。
    背景: Jira 4.3 以降では、Jira と Crowd との間の通信方式が SOAP から REST に変更されています。

前提条件

1 つの Tomcat コンテナに複数のアトラシアン アプリケーションをデプロイしないでください。

複数のアトラシアンアプリケーションを単一の Tomcat コンテナーにデプロイすることはサポート対象外です。この構成はテストされておらず、いずれかのアプリケーションのアップグレードにより (ポイントリリースであっても)、この設定が壊れる恐れがあります。また、この設定には多くの既知の問題があります (詳細は、こちらの FAQ を参照してください)。

弊社では、多くの実用的な理由から、複数のアトラシアンアプリケーションを単一の Tomcat コンテナーにデプロイするサポートは行っておりません。第一に、アプリケーションをアップグレードするには Tomcat をシャットダウンする必要があります。第二に、1つのアプリケーションがクラッシュすると、その Tomcat コンテナーで実行中のその他のアプリケーションにアクセスできなくなります。

したがって、Crowd を実行する Tomcat コンテナ内に他のアプリケーションをデプロイすることは推奨されません。このような他のアプリケーションが大容量のメモリを必要としたり、Tomcat の lib サブディレクトリ内に追加のライブラリを必要とする場合は特に推奨されません。

  1. Crowd をダウンロードしてインストールします。手順については「Crowd インストール ガイド」をご参照ください。ここでは Crowdルート フォルダを CROWD とします。
  2. Jira (バージョン 3.7.4 以降) をダウンロードしてインストールします。手順については「Jira インストール ガイド」をご参照ください。ここでは Jira のルート フォルダを JIRA とします。このドキュメントでは、Jira のインストール方法として、EAR-WAR ではなく "Crowd ディストリビューション" (簡単かつ推奨される方法) を使用していると見なします。Jira を EAR / WAR としてインストールする必要がある場合、EAR / WAR を展開して後述の必要な変更を行い、EAR / WAR として再びパッケージ化します。
  3. Jira ドキュメントにしたがって Jira のセットアップ ウィザードを実行します。このセットアップ プロセスでは Jira 管理者のユーザー名とパスワードを定義します。これは Jira を Crowd と連携する前に行うことをおすすめします。
  4. Jira 4.2 以前の場合: Jira のセットアップ後、以降の連携プロセスを開始する前に Jira をシャットダウンします。

Jira を Fisheye や Confluence などの他のアプリケーションのユーザー ディレクトリとして使用している場合、Jira をシャットダウンするとこれらがアクセスすることはできなくなります。この問題を回避するには、Crowd を Jira と連携する前に、これらのアプリケーションで Crowd を利用するように構成します。


ステップ 1. Jira とやり取りできるように Crowd を構成する

1.1 Crowd で Jira 用のディレクトリ、グループ、およびユーザーを準備する

  1. Jira アプリケーションは、Crowd で構成されたディレクトリでユーザーを見つけられる必要があります。このため、Crowd に Jira 用のディレクトリをセットアップする必要があります。このディレクトリには、Crowd に接続された LDAP ディレクトリや Crowd の内部ディレクトリなどの、任意の Crowd 構成ディレクトリを使用できます。この方法の詳細については「ディレクトリの追加」をご参照ください。

    このドキュメントではこのディレクトリを Crowd の Jira ディレクトリと呼びます。1 つのアプリケーションに複数のディレクトリを割り当てることが可能ですが、この例では Crowd の Jira ディレクトリ を Jira ユーザー用に使用します。
  2. また、Jira でユーザーを認証するために、ディレクトリに特定の複数のグループが存在している必要があります。次の 3 つのグループが Crowd の Jira ディレクトリに存在していることを確認します。
    • jira-users
    • jira-developers
    • jira-administrators
  3. また、Crowd の Jira ディレクトリに、3 つのグループすべてに所属するユーザーが 1 人以上必要です。次のいずれかを行えます。
    • 既存の Jira デプロイがあり、既存のグループおよびユーザーを Crowd にインポートしたい場合、[Users] > [Import Users] > [Atlassian Importer] の順に移動して Jira Importer ツールを使用できます。アトラシアン製品として "Jira" を、Jira ユーザーのインポート先のディレクトリとして Crowd の Jira ディレクトリを選択します。詳細については「Atlassian Jira からユーザーをインポートする」をご参照ください。(info) Crowd にユーザーをインポートする場合、次に進む前にこの手順を完了する必要があります。
      または、
    • Jira ユーザーをインポートしない場合、Crowd Administration Console を使用して 3 つのグループを作成し、Crowd の Jira ディレクトリに 1 人以上のユーザーを作成して、それらのユーザーを Jira 固有の 3 つのグループ (前述) に追加します。グループの作成ユーザーの作成、およびグループへのユーザーの割り当ての Crowd ドキュメントをご参照ください。

必要なグループが存在しない場合、Jira でエラーが発生します

Jira では前述のグループ名が存在することを期待しています。異なるグループ名を使用する必要がある場合、Jira のグローバル権限から前述の既存のグループを削除する必要があることがあります。前述のグループが Crowd に存在しない場合、Jira のグローバル権限からグループを削除しようとしたときにエラーが表示されます。

1.2 Crowd で Jira アプリケーションを定義する

Jira の複数のバージョンが Crowd に接続されている場合、Crowd でそれぞれに対して 1 つのアプリケーションを定義するようにします。

Crowd では、Jira アプリケーションが Crowd に対して認証リクエストを送信することを認識している必要があります。このため、Jira アプリケーションを Crowd に追加し、それを Crowd の Jira ディレクトリにマッピングする必要があります。

  1. Crowd Administration Console にログインし、[Applications] > [Add Application] に移動します。
  2. Jira アプリケーションについて "Add application" ウィザードを完了します。手順をご確認ください。(info) "Add Application" ウィザードで指定した NamePassword の値は、JIRA/atlassian-jira/WEB-INF/classes/crowd.properties ファイルで設定する application.name および application.password と一致する必要があります (後述のステップ 2 をご参照ください)。

1.3 Jira にログインできるユーザーを指定する

Crowd で Jira アプリケーションを認識するようになったら、Crowd では Crowd を経由して Jira に認証 (ログイン) できるユーザーを認識する必要があります。"Add Application" ウィザードの一環として、アプリケーション用のディレクトリとグループ認証をセットアップします。必要に応じ、ウィザードの完了後にこれらの設定を調整できます。いくつかの例を説明します。

ディレクトリ全体の認証か、ディレクトリ内の特定のグループの認証を許可できます。この例では、Crowd の Jira ディレクトリjira-usersjira-developers、および jira-administrators グループに認証を許可します。


(info)この例では、jira-usersjira-developers、および jira-administrators グループのメンバーであるユーザーのみが Jira に対して認証を行えます。

詳細については「アプリケーションにアクセスできるグループを指定する」をご参照ください。

1.4 Jira が Crowd にログインできるアドレスを指定する

"Add Application" ウィザードの一環として、Jira の IP アドレスをセットアップします。これは、Jira が Crowd に対して認証するために使用するアドレスです。必要に応じてウィザードの完了後に、IP アドレスに加えてホスト名を追加できます。「アプリケーションのアドレスまたはホスト名を指定する」をご参照ください。

ステップ 2. Crowd とやり取りできるように Jira を構成する

以降の ステップ 2 の手順は Jira 4.3 以降に適用されます。Jira 4.2 以前を使用している場合、「Crowd を Atlassian Jira 4.2 以前と連携する」のステップ 2 に従ってください。

2.1 Jira に Crowd ディレクトリを追加する

"Atlassian Crowd" をユーザー ディレクトリとして追加することで、Jira でユーザー認証に Crowd を使用できます。

  1. Jira の管理者用セクションにログインします。
  2. [ユーザー管理] タブで、左側のバーの [ユーザー ディレクトリ] ラベルをクリックします。
  3. [ディレクトリを追加] をクリックします。ドロップダウン リストから [Atlassian Crowd] を選択します。[次へ] をクリックします。
  4. 接続パラメーターを入力して保存します。HTTPS を使用ようにサーバー URL を構成している場合、http:// を https:// に置き換えることで、Jira と Crowd との間の通信が暗号化されます。
  5. ユーザー ディレクトリの一覧に新しい Crowd ディレクトリが表示されます。

Jira での Crowd ディレクトリの構成の詳細については、Jira ドキュメントの「ユーザー管理のために Crowd または別の Jira Server に接続する」をご参照ください。

2.2 SSO を有効化するため、Crowd の Authenticator を使用するように Jira を構成する (任意)

この段階では、Jira は中央での認証用にセットアップされています。必要に応じて Jira へのシングル サインオン (SSO) を有効化できます。これにより、Jira の認証やアクセス リクエストの呼び出しが Seraph を使用して実行されるようにすることができます。

注: すでに Crowd を利用している Jira インスタンスを移行 / アップグレードする場合、次のファイルを統合する必要があります (上書きはしないでください)。

  1. Jira が実行中の場合、シャットダウンします。
  2. JIRA/atlassian-jira/WEB-INF/classes/seraph-config.xml ファイルを編集します。authenticator  ノードをコメント アウトします。

    <!--<authenticator class="com.atlassian.jira.security.login.JiraSeraphAuthenticator"/>-->
    


    新しいオーセンティケータを含む行のコメントを解除します。

    <authenticator class="com.atlassian.jira.security.login.SSOSeraphAuthenticator"/>
    
  3. CROWD/client/conf/ から JIRA/atlassian-jira/WEB-INF/classescrowd.properties ファイルをコピーします。
  4. JIRA/atlassian-jira/WEB-INF/classes/crowd.properties を編集します。次のプロパティを変更します。

    キー

    application.name

    jira
    アプリケーション名は Crowd のアプリケーションで指定した名前と一致している必要があります (前述のステップ 1 を参照)。

    application.password

    パスワードは Crowd のアプリケーションで定義した名前と一致している必要があります (前述のステップ 1 を参照)。

    crowd.base.url

    例: (http://localhost:8095/crowd/)
    Crowd サーバーのポートが既定 (8095) とは異なる値に構成されている場合、それに応じて設定します。

    crowd.base.url は、ブラウザで Crowd にアクセスするために使用する URL と同じものである必要があります。

    session.validationinterval

    各リクエストで認証チェックを行いたい場合は 0 に設定します。その他の場合、ユーザーが Crowd SSO サーバーにログインしているかどうかを検証するためのリクエスト間隔を分単位で設定します。この値を 1 以上に設定すると、Crowd 連携のパフォーマンスが改善します。

Jira では複数のユーザー ディレクトリを定義することができます。しかしながら、SSO 連携を有効化した場合、crowd.properties ファイルで定義された Crowd サーバーのユーザーとしてのみ認証できます。

オプション設定の詳細については「crowd.properties ファイルについて」をご参照ください。

2.3 (任意) Jira のユーザー ピッカーのオートコンプリート機能を無効化する

Jira でのページの読み込みのパフォーマンスを改善するため、Jira のユーザー ピッカーのポップアップ画面でのオートコンプリート機能を無効化することをおすすめします。Jira ドキュメントの手順をご利用ください。

詳細情報: 弊社の経験上、非常に大規模なユーザー ベースのお客様では、Jira でこの機能を無効化することでパフォーマンスが向上します。この機能を有効化した状態で Jira で十分なパフォーマンスを実現できている場合、有効化したままでかまいません。

Crowd の動作を確認する

  • これで jira-users グループに所属するユーザーとしてログインできるようになりました。Crowd を使用してグループにユーザーを追加してみてください。この新しいユーザーで Jira にログインできるはずです。これで中央での認証を確認できました。
  • SSO を有効化した場合、Crowd の Jira ディレクトリjira-administrators グループを crowd アプリケーションに追加できます (「ディレクトリをアプリケーションにマッピングする」および「アプリケーションにアクセス可能なグループを指定する」をご参照ください)。これにより、Jira 管理者が Crowd Administration Console にログインできるようになります。Crowd に Jira 管理者としてログインし、ブラウザで Jira に移動してみてください。同じユーザーとして Jira にログインできるはずです。これでシングル サインオンを確認できました。

既知の制限事項

Jira 4.2 を使用している場合、ユーザーが課題に参加した (Jira がユーザーを参照した) あとにユーザーを削除すると、Jira で問題が発生します。ユーザーが Jira で内部管理されている場合は Jira によってユーザーの削除が防止されますが、ユーザーが Crowd などの外部システムで管理されている場合、Jira は DataAccessException を返します。Jira をアップグレードするか、そのユーザー アカウントを jira-users グループから削除することで無効化することをおすすめします。

Jira 4.3 以降を使用している場合、この問題は解決済みです。データの関連付けを問わず、外部で管理されているユーザーを削除できます。Crowd などの外部システムで管理されているユーザーが削除されると、Jira 内の任意のユーザーの関連付けは引き続き残り、ユーザー名がプレースホルダーとして使用されます。ユーザー名はユーザー ブラウザには表示されず、そのユーザーのプロファイルも存在しません。 

関連トピック

Crowd ドキュメント

  

最終更新日: 2019 年 9 月 3 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.