クライアント・ポリシー・セット・バインディングを使用したアウトバウンド JAX-WS 要求用 SPNEGO トークンの生成

JAX-WS クライアントは、さまざまな HTTP トランスポート認証メカニズムを使用して認証することができます。

WS-Security 認証を介してサービス・プロバイダー・アプリケーションへの認証を行うことに加えて、 JAX-WS クライアントは、以下の認証メカニズムなど、さまざまな HTTP トランスポート認証メカニズムを使用して認証を行うことができます。
  • HTTP トランスポート・バインディング内のプロパティーを使用した基本認証。
  • SSL トランスポート・バインディングを使用した SSL/TLS クライアント認証。
  • HTTP トランスポート・バインディング内のカスタム・プロパティーを使用した SPNEGO 認証。
アウトバウンド SPNEGO トークンのために使用される Kerberos 資格情報を取得するには、以下に示す 5 つの異なる方法があります。
  1. Windows ネイティブ資格情報を使用して要求されるトークン。WebSphere® Java™ プロセスが、Kerberos 資格情報を持つユーザー ID の下で Windows システムで実行されている場合、Windows OS がそのユーザー用の Kerberos Ticket Granting Ticket (TGT) を保守します。JAX-WS クライアント・ランタイムはその TGT を使用して SPNEGO トークンを要求し、そのトークンはターゲット・サービス・システムの ServicePrincipalName (SPN) のために要求できます。
  2. キャッシュに入れられた 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) も提供される必要があります。
  3. ユーザー ID およびパスワードを持つ Kerberos 資格情報を使用して要求されるトークン。このシナリオでは、JAX-WS クライアント・ランタイムは、 提供されたユーザー ID およびパスワードで Kerberos 鍵配布サーバーに接続して Ticket Granting Ticket (TGT) を取得します。その後、 クラスがその TGT で SPNEGO トークンを要求します。JAX-WS クライアント・ランタイムは、ターゲット・サービス・システムの ServicePrincipalName (SPN)、および、ユーザー ID とパスワードを必要とします。
  4. 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 認証用に構成されます。
  5. パスワードと共にユーザー名トークンを含んでいる JAX-WS Web サービス要求が受信され、 WebSphere Application Server は LTPA および Kerberos 認証用に構成されています。
アウトバウンド SPNEGO トークンのために使用される Kerberos 資格情報の取得に使用できる上記の 5 つのバリエーションのすべてで、 クライアント・ポリシー・セット・バインディング内で HTTP バインディングにカスタム・プロパティーが定義されることが必要です。
表 1. クライアント・ポリシー・セット・バインディング内で HTTP バインディングに定義されるカスタム・プロパティーのリスト
プロパティー名 コメント
com.ibm.websphere.webservices.spnego.enabled ブール JAX-WS クライアント・バインディング・ランタイムの SPNEGO 認証オプションを使用可能にするには、true に設定する必要があります。
com.ibm.websphere.webservices.spnegoOutboundSPN ストリング Web サービス・プロバイダーのサービス・プリンシパル名に設定する必要があります。
com.ibm.websphere.webservices.spnegoLoginMechanism ストリング GSSUPnativecaller、または 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 値を定義する必要があります。

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_spnego_tokens_outbound_jaxws_client_bindings
ファイル名:rwbs_spnego_tokens_outbound_jaxws_client_bindings.html