JAAS のスレッドからの呼び出し元サブジェクトの取得
呼び出し元サブジェクト (または「受信サブジェクト」) には、この要求への呼び出しで使用されるユーザー認証情報が含まれます。このサブジェクトは、 既存のオブジェクトが置き換えられないように、WSSubject.getCallerSubject アプリケーション・プログラミング・インターフェース (API) の 発行後に戻されます。このサブジェクトは読み取り専用とマークされています。この API を使用すると、 WSCredential クレデンシャルにアクセスできるので、クレデンシャル内の hashmap にデータを書き込んだり設定したり することができます。
始める前に
この API を実行するには、次のような Java™ 2 セキュリティー権限が必要です: permission javax.security.auth.AuthPermission "wssecurity.getCallerSubject";。
Kerberos 認証メカニズムを使用すると、KDC ポリシーにより Kerberos 委任が使用可能になり、クライアントは転送可能な Kerberos チケットを持ち、サブジェクトはクライアント Kerberos チケットおよび GSS 委任クレデンシャルを持つことになります。 API を使用して、Kerberos チケットと GSS 委任クレデンシャルにアクセスできます。
このタスクについて
サブジェクト内のほとんどのデータは、別のサーバーへのダウンストリームに伝搬されません。 WSCredential クレデンシャル内のクレデンシャル・トークンのみがダウンストリームに伝搬され、 新規の呼び出し元サブジェクトが生成されます。
手順
例
try { javax.security.auth.Subject caller_subject; com.ibm.websphere.security.cred.WSCredential caller_cred;
caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
if (caller_subject != null) { caller_cred = caller_subject.getPublicCredentials
(com.ibm.websphere.security.cred.WSCredential.class).iterator().next();
String CALLERDATA = (String) caller_cred.get ("MYKEY");
System.out.println("My data from the Caller credential is: " + CALLERDATA); } }
catch (WSSecurityException e) { // log error } catch (Exception e) { // log error }