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記述子に追加して同じ効果を得ることができます。バルブを使用するには、<security-constraint> 要素および <login-config> 要素をweb.xmlに定義する必要があります。これらの要素は、セキュアなリソースを決定するのに使用されます。しかし、選択した auth-method はjboss-web.xmlの NegotiationAuthenticator バルブによって上書きされます。 - セキュリティードメインの
CODE属性は、完全修飾クラス名の代わりに単純な名前を使用するようになりました。以下の表は、JBoss Negotiation に使用されるクラスとそれらのクラスとの間のマッピングを示しています。
| 簡単な名前 | クラス名 | 目的 |
|---|---|---|
| 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 つのセキュリティードメインを設定します。必要に応じてシステムプロパティーを設定します。
最初のセキュリティードメインは、コンテナー自体をディレクトリーサービスに対して認証します。実際のユーザーは関与していないため、静的ログインメカニズムのタイプを受け入れるログインモジュールを使用する必要があります。この例では、静的プリンシパルを使用し、認証情報が含まれるキータブファイルを参照します。ここでは明確にするために XML コードが提供されますが、管理コンソールまたは管理 CLI を使用してセキュリティードメインを設定する必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 2 つ目のセキュリティードメインを設定して、Web アプリケーションまたはアプリケーションをセキュアにします。必要に応じてシステムプロパティーを設定します。
2 つ目のセキュリティードメインは、個別のユーザーを Kerberos または SPNEGO 認証サーバーに対して認証するために使用されます。ユーザーの認証には少なくとも 1 つのログインモジュールが必要です。もう 1 つは、ユーザーに適用するロールを検索することです。以下の XML コードは、SPNEGO セキュリティードメインの例になります。これには、ロールを個々のユーザーにマップする承認モジュールが含まれます。認証サーバー自体でロールを検索するモジュールを使用することもできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow web.xmlに security-constraint および login-config を指定します。web.xml記述子には、セキュリティー制約およびログイン設定に関する情報が含まれます。以下は、それぞれの値の例になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow jboss-web.xml記述子にセキュリティードメインとその他の設定を指定します。デプロイメントのjboss-web.xml記述子にクライアント側のセキュリティードメインの名前(この例では 2 つ目のセキュリティードメイン)を指定し、アプリケーションがこのセキュリティードメインを使用するように設定します。オーセンティケーターを直接上書きできなくなりました。代わりに、必要に応じて NegotiationAuthenticator をjboss-web.xml記述子にバルブとして追加できます。<jacc-star-role-allow> を使用すると、アスタリスク(*)文字を使用して複数のロール名を一致させることができます。これはオプションです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 依存関係をアプリケーションの
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
Manifest-Version: 1.0 Build-Jdk: 1.6.0_24 Dependencies: org.jboss.security.negotiationCopy to Clipboard Copied! Toggle word wrap Toggle overflow - あるいは、
META-INF/jboss-deployment-structure.xmlファイルを編集して、依存関係をアプリケーションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
結果
Web アプリケーションは、Kerberos、Microsoft Active Directory、またはその他の SPNEGO 互換ディレクトリーサービスに対して、認証情報を受け入れて認証します。ユーザーが、ディレクトリーサービスにすでにログインしているシステムからアプリケーションを実行し、必要なロールがすでにユーザーに適用される場合、web アプリケーションは認証を要求しず、SSO 機能が実行されます。