12.8. Web アプリケーション用の Kerberos または Microsoft Active Directory Desktop SSO の設定


はじめに

組織の既存の Kerberos ベースの認証および承認インフラストラクチャー(Microsoft Active Directory など)を使用して web または EJB アプリケーションを認証するには、JBoss EAP 6 に組み込まれている JBoss Negotiation 機能を使用できます。Web アプリケーションを適切に設定した場合には、正常なデスクトップまたはネットワークログインで Web アプリケーションに対する透過的な認証を実行できるため、追加のログインプロンプトは必要ありません。

以前のバージョンとプラットフォームの違い

JBoss EAP 6 と、これまでのバージョンには顕著な違いがいくつかあります。

  • セキュリティードメインは、管理対象ドメインの各プロファイル、またはスタンドアロンサーバーごとに設定されます。これらはデプロイメント自体の一部ではありません。デプロイメントが使用するセキュリティードメインの名前は、デプロイメントの jboss-web.xml ファイルまたは jboss-ejb3.xml ファイルにあります。
  • セキュリティープロパティーはセキュリティードメインの一部として設定されます。これらはデプロイメントの一部ではありません。
  • デプロイメントの一部としてオーセンティケーターを上書きしなくなりました。ただし、NegotiationAuthenticator バルブを jboss-web.xml 記述子に追加して同じ効果を得ることができます。バルブを使用するには、& lt;security-constraint > 要素および < login-config > 要素を web.xml に定義する必要があります。これらの要素は、セキュアなリソースを決定するのに使用されます。しかし、選択した auth-method は jboss-web.xml の NegotiationAuthenticator バルブによって上書きされます。
  • セキュリティードメインの CODE 属性は、完全修飾クラス名の代わりに単純な名前を使用するようになりました。以下の表は、JBoss Negotiation に使用されるクラスとそれらのクラスとの間のマッピングを示しています。
Expand
表12.1 ログインモジュールコードおよびクラス名
簡単な名前 クラス名 目的
Kerberos
com.sun.security.auth.module.Krb5LoginModule
com.ibm.security.auth.module.Krb5LoginModule
Oracle JDK を使用する場合の Kerberos ログインモジュール
IBM JDK を使用する場合の Kerberos ログインモジュール
SPNEGO org.jboss.security.negotiation.spnego.SPNEGOLoginModule Web アプリケーションが Kerberos 認証サーバーに認証できるようにするメカニズム。
AdvancedLdap org.jboss.security.negotiation.AdvancedLdapLoginModule Microsoft Active Directory 以外の LDAP サーバーで使用されます。
AdvancedAdLdap org.jboss.security.negotiation.AdvancedADLoginModule Microsoft Active Directory LDAP サーバーで使用されます。

JBoss Negotiation Toolkit

JBoss Negotiation Toolkit は、から https://community.jboss.org/servlet/JiveServlet/download/16876-2-34629/jboss-negotiation-toolkit.war ダウンロードできるデバッグツールです。これは、アプリケーションを実稼働環境にデプロイする前に認証メカニズムのデバッグおよびテストに役立つ追加のツールとして提供されます。これはサポートされていないツールですが、SPNEGO は web アプリケーションに対して設定するのが困難な可能性があるため、非常に便利なツールと見なされます。

手順12.1 Web または EJB アプリケーションの SSO 認証の設定

  1. サーバーのアイデンティティーを表す 1 つのセキュリティードメインを設定します。必要に応じてシステムプロパティーを設定します。

    最初のセキュリティードメインは、コンテナー自体をディレクトリーサービスに対して認証します。実際のユーザーは関与していないため、静的ログインメカニズムのタイプを受け入れるログインモジュールを使用する必要があります。この例では、静的プリンシパルを使用し、認証情報が含まれるキータブファイルを参照します。
    ここでは明確にするために XML コードが提供されますが、管理コンソールまたは管理 CLI を使用してセキュリティードメインを設定する必要があります。
    <security-domain name="host" cache-type="default">
       <authentication>
          <login-module code="Kerberos" flag="required">
             <module-option name="storeKey" value="true"/>
             <module-option name="useKeyTab" value="true"/>
             <module-option name="principal" value="host/testserver@MY_REALM"/>
             <module-option name="keyTab" value="/home/username/service.keytab"/>
             <module-option name="doNotPrompt" value="true"/>
             <module-option name="debug" value="false"/>
          </login-module>
       </authentication>
    </security-domain>
    
    Copy to Clipboard Toggle word wrap
  2. 2 つ目のセキュリティードメインを設定して、Web アプリケーションまたはアプリケーションをセキュアにします。必要に応じてシステムプロパティーを設定します。

    2 つ目のセキュリティードメインは、個別のユーザーを Kerberos または SPNEGO 認証サーバーに対して認証するために使用されます。ユーザーの認証には少なくとも 1 つのログインモジュールが必要です。もう 1 つは、ユーザーに適用するロールを検索することです。以下の XML コードは、SPNEGO セキュリティードメインの例になります。これには、ロールを個々のユーザーにマップする承認モジュールが含まれます。認証サーバー自体でロールを検索するモジュールを使用することもできます。
    <security-domain name="SPNEGO" cache-type="default">
       <authentication>
          <!-- Check the username and password -->
          <login-module code="SPNEGO"  flag="requisite">
             <module-option name="password-stacking" value="useFirstPass"/>
             <module-option name="serverSecurityDomain" value="host"/>
          </login-module>
          <!-- Search for roles -->
          <login-module code="UsersRoles" flag="required">
             <module-option name="password-stacking" value="useFirstPass" />
             <module-option name="usersProperties" value="spnego-users.properties" />
             <module-option name="rolesProperties" value="spnego-roles.properties" />
          </login-module> 
       </authentication>
    </security-domain>
    
    Copy to Clipboard Toggle word wrap
  3. web.xmlに security-constraint および login-config を指定します。

    web.xml 記述子には、セキュリティー制約およびログイン設定に関する情報が含まれます。以下は、それぞれの値の例になります。
    <security-constraint>
       <display-name>Security Constraint on Conversation</display-name>
       <web-resource-collection>
          <web-resource-name>examplesWebApp</web-resource-name>
          <url-pattern>/*</url-pattern>
       </web-resource-collection>
       <auth-constraint>
       <role-name>RequiredRole</role-name>
       </auth-constraint>
    </security-constraint>
    
    <login-config>
       <auth-method>SPNEGO</auth-method>
       <realm-name>SPNEGO</realm-name>
    </login-config>
     
    <security-role>
       <description> role required to log in to the Application</description>
       <role-name>RequiredRole</role-name>
    </security-role>
    
    Copy to Clipboard Toggle word wrap
  4. jboss-web.xml 記述子にセキュリティードメインとその他の設定を指定します。

    デプロイメントの jboss-web.xml 記述子にクライアント側のセキュリティードメインの名前(この例では 2 つ目のセキュリティードメイン)を指定し、アプリケーションがこのセキュリティードメインを使用するように設定します。
    オーセンティケーターを直接上書きできなくなりました。代わりに、必要に応じて NegotiationAuthenticator を jboss-web.xml 記述子にバルブとして追加できます。&lt ;jacc-star-role-allow > を使用すると、アスタリスク(*)文字を使用して複数のロール名を一致させることができます。これはオプションです。
    <jboss-web>
       <security-domain>SPNEGO</security-domain>
       <valve>
          <class-name>org.jboss.security.negotiation.NegotiationAuthenticator</class-name>
       </valve>
       <jacc-star-role-allow>true</jacc-star-role-allow>
    </jboss-web>
    
    Copy to Clipboard Toggle word wrap
  5. 依存関係をアプリケーションの MANIFEST.MF に追加し、Negotiation クラスを見つけます。

    JBoss Negotiation クラスを見つけるには、web アプリケーションは org.jboss.security.negotiation クラスの依存関係をデプロイメントの META-INF/MANIFEST.MF マニフェストに追加する必要があります。以下は、適切にフォーマットされたエントリーを示しています。
    Manifest-Version: 1.0
    Build-Jdk: 1.6.0_24
    Dependencies: org.jboss.security.negotiation
    Copy to Clipboard Toggle word wrap
    • あるいは、META-INF/jboss-deployment-structure.xml ファイルを編集して、依存関係をアプリケーションに追加します。
      <?xml version="1.0" encoding="UTF-8"?>
      <jboss-deployment-structure>
        <deployment>
          <dependencies>
      	<module name='org.jboss.security.negotiation'/>
          </dependencies>
        </deployment>
      </jboss-deployment-structure>
      
      Copy to Clipboard Toggle word wrap

結果

Web アプリケーションは、Kerberos、Microsoft Active Directory、またはその他の SPNEGO 互換ディレクトリーサービスに対して、認証情報を受け入れて認証します。ユーザーが、ディレクトリーサービスにすでにログインしているシステムからアプリケーションを実行し、必要なロールがすでにユーザーに適用される場合、web アプリケーションは認証を要求しず、SSO 機能が実行されます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る