クライアント・ポリシー・セット・バインディングを使用したアウトバウンド JAX-WS 要求用 SPNEGO トークンの生成
JAX-WS クライアントは、さまざまな HTTP トランスポート認証メカニズムを使用して認証することができます。
WS-Security 認証を介してサービス・プロバイダー・アプリケーションへの認証を行うことに加えて、
JAX-WS クライアントは、以下の認証メカニズムなど、さまざまな HTTP トランスポート認証メカニズムを使用して認証を行うことができます。
- HTTP トランスポート・バインディング内のプロパティーを使用した基本認証。
- SSL トランスポート・バインディングを使用した SSL/TLS クライアント認証。
- HTTP トランスポート・バインディング内のカスタム・プロパティーを使用した SPNEGO 認証。
アウトバウンド SPNEGO トークンのために使用される Kerberos 資格情報を取得するには、以下に示す 5 つの異なる方法があります。
- Windows ネイティブ資格情報を使用して要求されるトークン。WebSphere® Java™ プロセスが、Kerberos 資格情報を持つユーザー ID の下で Windows システムで実行されている場合、Windows OS がそのユーザー用の Kerberos Ticket Granting Ticket (TGT) を保守します。JAX-WS クライアント・ランタイムはその TGT を使用して SPNEGO トークンを要求し、そのトークンはターゲット・サービス・システムの ServicePrincipalName (SPN) のために要求できます。
- キャッシュに入れられた Kerberos 資格情報を使用して要求されるトークン。通常は Java kinit ツールなどのツールを使用して、ユーザーがログインしたシステムでは、そのユーザーの Kerberos 資格情報が krb5cc_<userid> という名前のキャッシュ・ファイルに保管されます。あるいは、Microsoft ktpass ツールまたは Java ktab ツールなど、多くのツールを使用することによって、ユーザーの鍵を含むキータブ・ファイルを作成できます。 これらのファイルにはユーザーの Kerberos 鍵のコピーが含まれ、それを使用してそのユーザー ID 用の Ticket Granting Ticket (TGT) を取得できます。JAX-WS クライアント・ランタイムはその TGT を使用して SPNEGO トークンを要求し、そのトークンはターゲット・サービス・システムの ServicePrincipalName (SPN) のために要求できます。WebSphere プロセスは、krb5cc_<userid> またはキータブ・ファイルのいずれかを使用するように構成される必要があります。ファイル内にあるキャッシュされた資格情報の UserPrincipalName (UPN) も提供される必要があります。
- ユーザー ID およびパスワードを持つ Kerberos 資格情報を使用して要求されるトークン。このシナリオでは、JAX-WS クライアント・ランタイムは、 提供されたユーザー ID およびパスワードで Kerberos 鍵配布サーバーに接続して Ticket Granting Ticket (TGT) を取得します。その後、 クラスがその TGT で SPNEGO トークンを要求します。JAX-WS クライアント・ランタイムは、ターゲット・サービス・システムの ServicePrincipalName (SPN)、および、ユーザー ID とパスワードを必要とします。
- Java Subject 内に存在する Kerberos 資格情報を使用して要求されるトークン。Subject は以下のいずれかの方法で Kerberos 資格情報を取得できます。
- インバウンド SPNEGO Web 認証を使用して Web アプリケーションにログインしたユーザー。WebSphere Application Server において、このオプション用に SPNEGO Web 認証が構成および使用可能化されることのみが必要です。インバウンド SPNEGO サービスと関連付けられた Kerberos ユーザー ID がフル Kerberos 委任に使用可能にされる必要があります。
- WS-Security Kerberos トークンを含んでいる JAX-WS Web サービス要求が受信されました。インバウンド Web サービス要求と関連付けられた Kerberos ユーザー ID がフル Kerberos 委任に使用可能にされる必要があります。
- ユーザー ID とパスワードを使用してユーザーがログインし、WebSphere Application Server は LTPA および Kerberos 認証用に構成されます。
- パスワードと共にユーザー名トークンを含んでいる JAX-WS Web サービス要求が受信され、 WebSphere Application Server は LTPA および Kerberos 認証用に構成されています。
アウトバウンド SPNEGO トークンのために使用される Kerberos 資格情報の取得に使用できる上記の 5 つのバリエーションのすべてで、
クライアント・ポリシー・セット・バインディング内で HTTP バインディングにカスタム・プロパティーが定義されることが必要です。
プロパティー名 | 値 | コメント |
---|---|---|
com.ibm.websphere.webservices.spnego.enabled | ブール | JAX-WS クライアント・バインディング・ランタイムの SPNEGO 認証オプションを使用可能にするには、true に設定する必要があります。 |
com.ibm.websphere.webservices.spnegoOutboundSPN | ストリング | Web サービス・プロバイダーのサービス・プリンシパル名に設定する必要があります。 |
com.ibm.websphere.webservices.spnegoLoginMechanism | ストリング | GSSUP、native、caller、または keytab のいずれかでなければなりません。 |
com.ibm.websphere.webservices.JAASConfigName | ストリング | spnegoLoginMechanism が keytab に設定されている場合、このプロパティーは、使用されるキータブ・ファイルを識別する JAAS ログイン構成に設定される必要があります。 |
com.ibm.websphere.webservices.spnegoUPN | ストリング | spnegoLoginMechanism が keytab に設定されている場合、このプロパティーは、使用されるキータブ内の鍵のユーザー・プリンシパル名に設定される必要があります。 |
com.ibm.websphere.webservices.spnegoOutboundLifeTime | 整数 | 指定されない場合、SPNEGO トークンは無限の存続期間で要求されます。 |
com.ibm.websphere.webservices.spnegoOutboundDelegate | ブール | true に設定されていて、Web サービス SPN アカウントが委任に対して使用可能な場合、Web サービスに送信された SPNEGO トークンは委任可能です。 |
spnegoLoginMechanism プロパティーが GSSUP に設定されている場合、 ユーザー ID およびパスワードがアウトバウンド・サービス要求プロパティーの基本認証から取得されます。
spnegoLoginMechanism プロパティーが caller に設定されている場合、 Kerberos 資格情報が呼び出し元 Subject から取得されます。
spnegoLoginMechanism プロパティーが Native に設定されている場合、 Kerberos 資格情報が Windows オペレーティング・システムから取得されます。
- ネイティブ資格情報に関する注意事項
- Microsoft Kerberos Logon Session 資格情報キャッシュ (MSLSA) は、
Kerberos Logon Session 資格情報キャッシュ (LSA) からのセッション鍵を含めて、Kerberos チケット全体を抽出する機能に依存します。セキュリティーを向上させるため、Microsoft は、Ticket Getting Tickets のためのセッション鍵をもうエクスポートしないフィーチャーを実装しました。
これにより、追加のサービス・チケットを要求する試みが行われるときに IBM® JGSS ではそれらが役に立たない可能性があります。この新フィーチャーは、
Windows 2003 Server 以降のシステムにあります。Microsoft は、この新フィーチャーを使用不可にするために以下のレジストリー・キーを提供しています。
HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Control¥Lsa¥Kerberos¥Parameters AllowTGTSessionKey = 0x01 (DWORD)
- Kerberos 構成ファイルにおける条件
- どの手法を使用するのかに関わらず、Kerberos 構成ファイルを正しく構成する必要があります。
- WebSphere プロセスが鍵配布センター (KDC) に到達する方法を、[realms] スタンザおよび [domain_realm] スタンザを介して正しく構成する必要があります。
- [libdefaults] スタンザで使用される暗号化タイプは、default_tkt_enctypes 値および default_tgs_enctypes 値を指定する必要があります。
- [libdefaults] スタンザは以下を含んでいる必要があります。
- forwardable = true
- renewable = true
- noaddresses = true
- [libdefaults] スタンザは、妥当な clockskew 値を定義する必要があります。