JAAS のスレッドからの RunAs サブジェクトの取得

RunAs サブジェクトまたは呼び出しサブジェクトには、 このメソッド用にアプリケーションのデプロイメント記述子内に設定された RunAs モードに対する ユーザー認証情報が含まれています。

事前処理

この API を実行するには、Java™ 2 のセキュリティパーミッションが必要です: パーミッション javax.security.auth.AuthPermission "wssecurity.getRunAsSubject;".

このタスクの概要

RunAs サブジェクト (起動サブジェクト) には、このメソッド用にアプリケーション・デプロイメント記述子内に設定された RunAs モードに対するユーザー認証情報 が含まれています。 このサブジェクトは、 WSSubject.getRunAsSubject アプリケーション・プログラミング・インターフェース (API) から戻されると、 その中にある既存のオブジェクトが置き換えられないように、読み取り専用とマークされます。

サブジェクト内のほとんどのデータは、 別のサーバーへのダウンストリームに伝搬されません。 WSCredential クレデンシャル内のクレデンシャル・トークンのみがダウンストリームに伝搬され、 新規の呼び出し元サブジェクトが生成されます。

手順

  1. WSCredential クレデンシャルにアクセスします。
    WSCredential クレデンシャルは API 資料に記載されています。
  2. クレデンシャル内のハッシュ・マップにデータを置くか、設定します。

try { 	javax.security.auth.Subject runas_subject;	
com.ibm.websphere.security.cred.WSCredential runas_cred;
runas_subject = com.ibm.websphere.security.auth.WSSubject.getRunAsSubject();
if (runas_subject != null) 	{ 		runas_cred = runas_subject.getPublicCredentials
com.ibm.websphere.security.cred.WSCredential.class).iterator().next();
String RUNASDATA = (String) runas_cred.get ("MYKEY")
System.out.println("My data from the RunAs credential is:  " + RUNASDATA ); 	} } 
catch (WSSecurityException e) { 	// log error } catch (Exception e) { 	// log error }