アウトバウンド SPNEGO トークンに対して Kerberos 制約付き委任をサポートするように Liberty サーバーを構成できます。
始める前に
SPNEGO Web 認証を構成済みであることを確認してください。
IBM® JDK 1.8 以降のみがサポートされます。
このタスクについて
S4U (Services for Users) という名前の Kerberos v5 拡張機能は制約付き委任とも呼ばれ、次の 2 つのパートからなります。
- S4U2self
Liberty サーバーがユーザーの代わりにそれ自体へのサービス・チケットを取得できるようにします。これは、Liberty でサポートされる任意の形式の認証で使用できます。
S4U2self は、「Kerberos プロトコル遷移」拡張機能です。
- S4U2proxy
Liberty サーバーがユーザーの代わりにトラステッド・サービスへのサービス・チケットを取得できるようにします。これらのサービス・チケットは、
Liberty サービスへのユーザーのサービス・チケットを使用して取得されます。サービスは、Kerberos 鍵配布センター (KDC) 管理者によって制約されます。
S4U2proxy は、「Kerberos 制約付き委任」拡張機能です。
制約付き委任フィーチャーは、.NET サーバーやその他の Liberty サーバーなど、
SPNEGO 認証をサポートするバックエンド・サービス向けのアウトバウンド SPNEGO トークンを作成するために、以下の API を提供します。
- S4U2self API:
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorizationUsingS4U2self()
- S4U2proxy API:
com.ibm.websphere.security.s4u2proxy.SpnegoHelper.buildS4U2proxyAuthorization()
以下の手順で使用されているシステム・セットアップ例は、『Liberty での SPNEGO 認証の構成』で使用され、『SPNEGO Web 認証を使用した HTTP 要求のシングル・サインオン』に図示されているものと同じです。
手順
- Microsoft ドメイン・コントローラー myAdMachine.example.com で、
着信 SPNEGO トークンを検証するために使用するサービス・プリンシパル名 (SPN) を更新します。例えば、
HTTP/myLibertyMachine.example.com SPN を次のように更新します。
- S4U2self を使用するには、以下のステップを実行します。
- 委任 SPN にマップされたユーザー・アカウントを開きます。
- 「属性エディター」タブを開きます。
- userAccountControl プロパティーを次のように変更します。
- 認証委任用に信頼される (0x1000000 または TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION enum) は true でなければなりません。
- トラステッド・サービスを設定します。
- ユーザー・アカウントの「委任」タブを開きます。
- 「指定されたサービスへの委任でのみこのユーザーを信頼する」ラジオ・ボタンを選択します。
- 「任意の認証プロトコルを使う」ラジオ・ボタンを選択します。
- トラステッド・サービスを追加するため、「追加」をクリックします。
- 「ユーザーとコンピューター」をクリックします。
- トラステッド・サービスに使用する SPN を入力します。
- 「名前の確認」をクリックし、適切なオブジェクト名が検出されたことを検証します。
- 「OK」をクリックします。
- 「指定された SPN (SPN specified)」を選択して、「OK」をクリックします。
- S4U2proxy を使用するには、以下のステップを実行します。
- 委任 SPN にマップされたユーザー・アカウントを開きます。
- 「属性エディター」タブを開きます。
- userAccountControl プロパティーを次のように変更します。
- 認証委任用に信頼される (0x1000000 または TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION enum) は true でなければなりません。
- トラステッド・サービスを設定します。
- ユーザー・アカウントの「委任」タブを開きます。
- 「指定されたサービスへの委任でのみこのユーザーを信頼する」ラジオ・ボタンを選択します。
- トラステッド・サービスを追加するため、「追加」をクリックします。
- 「ユーザーとコンピューター」をクリックします。
- トラステッド・サービスに使用する SPN を入力します。
- 「名前の確認」をクリックし、適切なオブジェクト名が検出されたことを検証します。
- 「OK」をクリックします。
- 「指定された SPN (SPN specified)」を選択して、「OK」をクリックします。
- Liberty サーバー・マシン (myLibertyMachine.example.com) の
server.xml ファイルで、 featureManager に constrianedDelegation-1.0 を追加することによって制約付き委任フィーチャーを有効にし、
JAAS Kerberos ログイン・モジュールを構成します。
<featureManager>
<feature>spnego-1.0</feature>
<feature>contrainedDelegation-1.0</feature>
...
</featuremanager>
<jaasLoginContextEntry id="com.ibm.security.jgss.krb5.accept" name="com.ibm.security.jgss.krb5.accept" loginModuleRef="useKeytab" />
<jaasLoginModule id="useKeytab" className="com.ibm.security.auth.module.Krb5LoginModule" controlFlag="REQUIRED" libraryRef="jaasSharedLib">
<options
credsType="both"
debug="true"
useDefaultCcache="false"
tryFirstPass="true"
forwardable ="true"
principal="HTTP/myLibertyMachine.example.com"
useKeytab="${server.config.dir}/resources/security/kerberos/krb5.keytab">
</options>
</jaasLoginModule>
<library id="jaasSharedLib" apiTypeVisibility="spec, ibm-api, api">
<fileset dir="${server.config.dir}/lib/global/" includes="*" />
</library>
constrainedDelegation-1.0 フィーチャーが有効になっていると、以下の構成が暗黙指定されます。
<constrainedDelegation id="defaultConstrainedDelegation" s4U2selfEnabled="false" />
S4U2self を使用するには、
server.xml ファイルに以下の構成が必要です。
<constrainedDelegation s4U2selfEnabled = "true" id="defaultConstrainedDelegation"/>
注: S4U2proxy API を使用する場合、jaasLoginContextEntry の id および name と
com.ibm.security.jgss.krb5.accept は変更できません。
注: デフォルトでは、
S4U2proxy が有効になり、S4U2self が無効になります。server.xml ファイル内の s4U2selfEnabled 属性を変更することによって、
S4U2self 拡張機能を有効または無効にすることができます。
タスクの結果
アプリケーションは制約付き委任フィーチャーによって提供される API を呼び出す準備ができました。