2.7. Kerberos 認証を使用するようにアイデンティティープロバイダーを設定する
IDP は他の ID ストアの他に、Kerberos を認証メカニズムとして使用することもできます。Kerberos を使用するように IDP を設定するには、以下を行う必要があります。
作業用の Kerberos 環境があることを前提とします。
Kerberos 認証のセキュリティードメインを設定します。
以下のコマンドを使用して、IDP で必要なセキュリティードメインを設定できます。詳細は、Kerberos による SSO のセットアップ方法 ガイドの JBoss EAP レガシーセキュリティーサブシステム設定 セクションを参照してください。
/subsystem=security/security-domain=host:add(cache-type=default) /subsystem=security/security-domain=host/authentication=classic:add /subsystem=security/security-domain=host/authentication=classic/login-module=Kerberos:add(code=Kerberos, flag=required, module-options=[debug=false, storeKey=true, refreshKrb5Config=true, useKeyTab=true, doNotPrompt=true, keyTab=/home/username/service.keytab, principal=host/SERVER_NAME@REALM_NAME]) /subsystem=security/security-domain=app-spnego:add(cache-type=default) /subsystem=security/security-domain=app-spnego/authentication=classic:add /subsystem=security/security-domain=app-spnego/authentication=classic/login-module=SPNEGO:add(code=SPNEGO, flag=required, module-options=[serverSecurityDomain=host])
重要関連するシステムプロパティー がすべて有効にされていることも確認する必要があります。
ログインモジュールの詳細は、JBoss EAP ログインモジュールのリファレンス の Kerberos ログインモジュール および SPNEGO ログインモジュール を参照してください。
SP のセキュリティードメインを設定します。
以下のコマンドを使用して、SP が必要とするセキュリティードメインを設定できます。詳細は、SP の設定 を参照してください。
/subsystem=security/security-domain=sp:add(cache-type=default) /subsystem=security/security-domain=sp/authentication=classic:add /subsystem=security/security-domain=sp/authentication=classic/login-module=org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule:add(code=org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule,flag=required)
変更を反映するためにサーバーをリロードします。
reload
上記の手順を完了すると、以下の設定が作成されます。
例: IDP および SP のセキュリティードメイン
<security-domain name="host" cache-type="default"> <authentication> <login-module code="Kerberos" flag="required"> <module-option name="debug" value="false"/> <module-option name="storeKey" value="true"/> <module-option name="refreshKrb5Config" value="true"/> <module-option name="useKeyTab" value="true"/> <module-option name="doNotPrompt" value="true"/> <module-option name="keyTab" value="/home/username/service.keytab"/> <module-option name="principal" value="HTTP/testserver@MY_REALM"/> </login-module> </authentication> </security-domain> <security-domain name="app-spnego" cache-type="default"> <authentication> <login-module code="SPNEGO" flag="required"> <module-option name="serverSecurityDomain" value="host"/> </login-module> </authentication> <mapping> ... </mapping> </security-domain> <security-domain name="sp" cache-type="default"> <authentication> <login-module code="org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule" flag="required"/> </authentication> </security-domain>
IDP アプリケーションを設定します。
IDP 設定のプロセスは、IDP の設定 セクションで説明されているものと同じですが、以下の変更があります。
- JBoss Negotiation の追加の依存関係の宣言
SPNEGO
ログインモジュールでセキュリティードメインを使用するよう IDP アプリケーションを設定します。注記IDP の設定時に、設定で
PicketLinkSTS
要素を指定する必要はありません。OMMITEDPicketLink
の場合は、picketlink-core-VERSION.jar
内のcore-sts
という名前のファイルからデフォルト設定を読み込みます。この設定は、必要な場合にのみ上書きします。たとえば、トークンのタイムアウトを変更したり、SAML アサーションのカスタムセキュリティートークンプロバイダーを指定したりします。
例: Kerberos および picketlink 依存関係を含む
jboss-deployment-structure.xml
<jboss-deployment-structure> <deployment> <dependencies> <module name="org.picketlink" services="import"/> <module name="org.jboss.security.negotiation"/> </dependencies> </deployment> </jboss-deployment-structure>
例: IDP の
jboss-web.xml
<jboss-web> <security-domain>app-spnego</security-domain> <context-root>identity</context-root> </jboss-web>
例:
PicketLinkSTS
要素を含む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/idp/}</IdentityURL> <Trust> <Domains>redhat.com,localhost,amazonaws.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> <!-- The configuration bellow defines a token timeout and a clock skew. Both configurations will be used during the SAML Assertion creation. This configuration is optional. It is defined only to show you how to set the token timeout and clock skew configuration. --> <PicketLinkSTS xmlns="urn:picketlink:identity-federation:config:1.0" TokenTimeout="5000" ClockSkew="0"> <TokenProviders> <TokenProvider ProviderClass="org.picketlink.identity.federation.core.saml.v1.providers.SAML11AssertionTokenProvider" TokenType="urn:oasis:names:tc:SAML:1.0:assertion" TokenElement="Assertion" TokenElementNS="urn:oasis:names:tc:SAML:1.0:assertion" /> <TokenProvider ProviderClass="org.picketlink.identity.federation.core.saml.v2.providers.SAML20AssertionTokenProvider" TokenType="urn:oasis:names:tc:SAML:2.0:assertion" TokenElement="Assertion" TokenElementNS="urn:oasis:names:tc:SAML:2.0:assertion" /> </TokenProviders> </PicketLinkSTS> </PicketLink>
重要IDP の
web.xml
で設定されたロールが Kerberos 環境に設定されたロールと一致することを確認する必要があります。そのためには、IDP のセキュリティードメインで別のログインモジュールを設定し、適切なロールを SPNEGO 認証の後にマップするか、IDP のセキュリティードメインでマッピングプロバイダーを使用します。