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 クレデンシャル内のクレデンシャル・トークンのみがダウンストリームに伝搬され、 新規の呼び出し元サブジェクトが生成されます。

手順

  1. 呼び出し元サブジェクトを取得します。
    caller_subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
  2. WSCredential クレデンシャルにアクセスします。
    caller_cred = caller_subject.getPublicCredentials(com.ibm.websphere
    .security.cred.WSCredential.class).iterator().next();
  3. クレデンシャル内のハッシュ・マップにデータを置くか、設定します。
    String CALLERDATA = (String) caller_cred.get ("MYKEY");	
    		System.out.println("My data from the Caller credential is:  " + CALLERDATA);
  4. Kerberos チケットにアクセスします。 以下に例を示します。
            java.util.Set kerberosTickets = subject.getPrivateCredentials(KerberosTicket.class);
            if ( kerberosTickets.size() > 1)
                System.out.println("Multiple Kerberos tickets found");
            Iterator credIter = kerberosTickets.iterator();
  5. GSS クレデンシャルにアクセスします。 以下に例を示します。
       GSSCredential gssCred = subject.getPrivateCredentials(GSSCredential.class).iterator().next();

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 }


トピックのタイプを示すアイコン タスク・トピック



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