2.2. IDP と SP の設定と設定


ここでは、アプリケーションを SP または IDP のいずれかになるように設定する方法と、それらのアプリケーションをホストする JBoss EAP インスタンスをセットアップする方法について説明します。

2.2.1. IDP の設定

アプリケーションを IDP として動作するように設定するには、以下の手順を実行する必要があります。

注記

アプリケーションを作成およびデプロイする前に、セキュリティードメインを作成および設定する必要があります。

  1. IDP のセキュリティードメインを作成します。

    IDP はクレデンシャルのプリンシパルを処理し、そのプリンシパルの認証および承認を処理し、その結果に基づいて適切な SAML v2 セキュリティーアサーションを発行します。これには、セキュリティードメインを使用してアイデンティティーストアを設定する必要があります。このセキュリティードメインおよびアイデンティティーストアを作成する唯一の要件は、認証および承認メカニズムが適切に定義されていることです。これは、プロパティーファイル、データベース、LDAP など、さまざまな ID ストアと関連のログインモジュールを使用して IDP アプリケーションをサポートすることができることを意味します。セキュリティードメインの詳細は、JBoss EAP Security Architecture ガイドの Security Domains を参照してください。

    以下の例では、プロパティーファイルを使用して簡単な UsersRoles ログインモジュールを使用します。

    セキュリティードメインを作成する管理 CLI コマンド

    /subsystem=security/security-domain=idp:add(cache-type=default)
    
    /subsystem=security/security-domain=idp/authentication=classic:add
    
    /subsystem=security/security-domain=idp/authentication=classic/login-module=UsersRoles:add(code=UsersRoles,flag=required,module-options=[usersProperties=${jboss.server.config.dir}/idp-users.properties,rolesProperties=${jboss.server.config.dir}/idp-roles.properties])
    
    reload

    UsersRoles ログインモジュールは、プロパティーファイルを使用して、ユーザー/パスワードとユーザー/ロール情報を保存します。UsersRoles モジュールの詳細は、JBoss EAP Login Module Reference を参照してください。この例では、プロパティーファイルには以下が含まれます。

    idp-users.properties

    Eric=samplePass
    Alan=samplePass

    idp-roles.properties

    Eric=All
    Alan=

  2. IDP の web.xml ファイルを設定します。

    IDP の web.xml ファイルには以下が含まれている必要があります。

    • セキュアな領域の URL パターンにマップする <url-pattern> が含まれる <web-resource-collection> を持つ <security-constraint>。任意で、<security-constraint> に許可されるロールを明記する <auth-constraint> を含めることもできます。
    • FORM 認証用に設定された <login-config>
    • <auth-constraint> にロールが指定されている場合、これらのロールを <security-role> で定義する必要があります。
    • 必要に応じて、イメージやスタイルなどのログインフォームで使用されるリソースは、追加のセキュリティー制約で、認証前にアクセスできるように、セキュアでない追加のセキュリティー制約で指定できます (例: ログインページ)。

    <security-constraint> および <security-role> 要素を使用すると、管理者は URL パターンおよびロールを基に制限された領域または無制限の領域をセットアップできます。これにより、リソースをセキュリティーで保護することができ、保護しないこともできます。

    <login-config> タグは、ユーザーの認証時に IDP が使用するログインおよびエラーページを定義します。

    例: web.xml ファイル

    <web-app>
      <display-name>IDP</display-name>
      <description>IDP</description>
      <!-- Define a security constraint that gives unlimited access to images -->
      <security-constraint>
        <web-resource-collection>
          <web-resource-name>Images</web-resource-name>
          <url-pattern>/images/*</url-pattern>
        </web-resource-collection>
      </security-constraint>
      <!-- Define a security constraint that requires the All role to access resources -->
      <security-constraint>
        <web-resource-collection>
          <web-resource-name>IDP</web-resource-name>
          <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
          <role-name>All</role-name>
        </auth-constraint>
      </security-constraint>
      <!-- Define the Login Configuration for this Application -->
      <login-config>
        <auth-method>FORM</auth-method>
        <realm-name>IDP Application</realm-name>
        <form-login-config>
          <form-login-page>/jsp/login.jsp</form-login-page>
          <form-error-page>/jsp/error.jsp</form-error-page>
        </form-login-config>
      </login-config>
      <!-- Security roles referenced by this web application -->
      <security-role>
        <description>The role that is required to log in to the IDP Application</description>
        <role-name>All</role-name>
      </security-role>
    </web-app>

    注記

    Welcome ページはアプリケーション内で定義することが推奨されます。デフォルトでは、JBoss EAP は index.jsp という名前のファイルを検索しますが、web.xml<ogg-file-list> を使用してこれを設定できます。

    例: login.jsp ファイル

    <html>
      <head></head>
      <body>
        <form id="login_form" name="login_form" method="post" action="j_security_check" enctype="application/x-www-form-urlencoded">
          <center> <p>Welcome to the <b>IDP</b></p> <p>Please login to proceed.</p> </center>
          <div style="margin-left: 15px;">
            <p> <label for="username">Username</label> <br /> <input id="username" type="text" name="j_username"/> </p>
            <p> <label for="password">Password</label> <br /> <input id="password" type="password" name="j_password" value=""/> </p>
            <center> <input id="submit" type="submit" name="submit" value="Login"/> </center>
          </div>
        </form>
      </body>
    </html>

    例: error.jsp ファイル

    <html>
      <head></head>
      <body>
        <p>Login failed, please go back and try again.</p>
      </body>
    </html>

  3. IDP の認証システムを設定します。

    この認証システムは、ユーザーの認証と SAML v2 セキュリティーアサーションを発行および検証します。オーセンティケーターの一部は、プリンシパルの認証および承認に使用するセキュリティードメインを定義することで jboss-web.xml ファイルに設定されます (手順 1 を参照)。また、<login-config>web.xml で指定され、必要な依存関係が宣言されるようにする必要があります

    jboss-web.xml ファイルには以下が必要です。

    • 認証または承認に使用されるセキュリティードメインを指定する <security-domain>

    例: jboss-web.xml ファイル

    <jboss-web>
      <security-domain>idp</security-domain>
      <context-root>identity</context-root>
    </jboss-web>

  4. IDP に必要な依存関係を宣言します。

    IDP として機能する web アプリケーションは、org.picketlink クラスを見つけることができるように依存関係を jboss-deployment-structure.xml に定義する必要があります。JBoss EAP は必要なすべての org.picketlink と関連クラスを提供し、アプリケーションはそれらを依存関係として宣言して使用することのみが必要になります。

    jboss-deployment-structure.xml を使用した依存関係の宣言

    <jboss-deployment-structure>
      <deployment>
        <dependencies>
          <module name="org.picketlink" services="import"/>
        </dependencies>
      </deployment>
    </jboss-deployment-structure>

    注記

    これまでのバージョンの JBoss EAP では、同じ依存関係を宣言していましたが、SAML 認証システムをインストールするためのバルブが宣言されていました。JBoss EAP 7 で Undertow が導入され、services="import" を使用して SAML 認証システムをインストールするようになりました。

  5. IDP の picketlink.xml ファイルを作成および設定します。

    ファイルには、少なくとも以下の要素が含まれている必要があります。

    • <IdentityURL> を使用した IDP の URL と、IDP で信頼されるホストを定義する <PicketLinkIDP>
    • SAML リクエストおよび応答の処理に必要なハンドラーのセットを定義する <Handlers>

    picketlink.xml ファイルの例

    <PicketLink xmlns="urn:picketlink:identity-federation:config:2.1">
      <PicketLinkIDP xmlns="urn:picketlink:identity-federation:config:2.1">
        <IdentityURL>${idp.url::http://localhost:8080/identity/}</IdentityURL>
        <Trust>
          <Domains>localhost,example.com</Domains>
        </Trust>
      </PicketLinkIDP>
      <Handlers xmlns="urn:picketlink:identity-federation:handler:config:2.1">
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler" />
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2LogOutHandler" />
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler" />
        <Handler class="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler" />
      </Handlers>
    </PicketLink>

    警告

    ハンドラーは、Chain of Responsibility を使用して実装されます。各ハンドラーは、picketlink.xml で定義された順序で要求および応答でロジックを実行します。ハンドラーが設定される順序に注意することが非常に重要です。

    デフォルトでは、picketlink.xml は IDP web アプリケーションの WEB-INF ディレクトリーにあります。ただし、アプリケーション外の picketlink.xml へのカスタムパスを設定できます。これは、複数の JBoss EAP インスタンス間で複数のアプリケーションが同じ picketlink.xml 設定を共有している場合に便利です。

  6. オプション: picketlink.xml のカスタムの場所の設定

    CONFIG_FILE パラメーターを使用して picketlink.xml のカスタムの場所を指定できます。これは、web.xml<context-param> 要素を追加して行います。

    CONFIG_FILE パラメーターの使用

    <context-param>
      <param-name>CONFIG_FILE</param-name>
      <param-value>/path/to/picketlink.xml</param-value>
    </context-param>

    org.picketlink.federation.saml.CONFIG_PROVIDER パラメーターを使用してカスタム設定プロバイダーを指定することもできます。これにより、org.picketlink.identity.federation.web.util.SAMLConfigurationProvider を拡張するカスタム実装を作成して、独自の設定ロジックを提供することができます。

    org.picketlink.federation.saml.CONFIG_PROVIDER パラメーターの使用

    <context-param>
      <param-name>org.picketlink.federation.saml.CONFIG_PROVIDER</param-name>
      <param-value>MyConfigurationProvider</param-value>
    </context-param>

    注記

    ここで使用する管理 CLI コマンドは、JBoss EAP スタンドアロンサーバーを実行していることを仮定しています。JBoss EAP 管理対象ドメインの管理 CLI を使用する場合の詳細は JBoss EAP Management CLI Guide を参照してください。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る