セキュリティー・トークンを取得する JAX-WS に基づく Web サービスのサーバー・アプリケーションの開発

サーバー・アプリケーションでは、アプリケーションは 要求コンシューマーとして機能し、応答ジェネレーターは Java™ Platform, Enterprise Edition (Java EE) コンテナーでデプロイされ、実行されます。Web Services Security のコンシューマー・コンポーネントは、現行のスレッドの Java Authentication and Authorization Service (JAAS) サブジェクトで受け取るセキュリティー・トークンを保管します。コンテナーでローカル・スレッドとして保守される JAAS サブジェクトからセキュリティー・トークンを 検索することができます。

このタスクについて

この情報は、Java API for XML-based Web Services (JAX-WS) に対してのみ適用されます。

セキュリティー・ハンドラーは セキュリティー・トークンの伝搬を担います。 これらのセキュリティー・トークンは、SOAP セキュリティー・ヘッダーに組み込まれ、 ダウンストリーム・サーバーに渡されます。 セキュリティー・トークンは com.ibm.wsspi.wssecurity.auth.token.Token インターフェースの実装クラスでカプセル化されます。セキュリティー・トークン・ データは、サーバー・アプリケーションまたはクライアント・アプリケーションのいずれかから検索することができます。

以下のステップを実行して、サーバー・アプリケーションからセキュリティー・トークン・データを 検索します。

手順

  1. WSSubject API を使用して、現行スレッドの JAAS サブジェクトを取得します。 管理コンソールの「グローバル・セキュリティー」パネルで Java 2 セキュリティーを使用可能にするときに、アプリケーション・コードが javax.security.auth.AuthPermission("wssecurity.getCallerSubject") 許可を付与されていない場合は、JAAS サブジェクトへのアクセスは拒否されます。次のコード・サンプルで、JAAS サブジェクトの取得方法を示します。
    javax.security.auth.Subject subject;
    
    try {
    subject = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
    } catch (com.ibm.websphere.security.WSSecurityException e) {
      …
    }
  2. サブジェクトから専用クレデンシャル・セットを取得します。 詳しくは、インフォメーション・センターを介して、 アプリケーション・プログラミング・インターフェース (API) com.ibm.websphere.security.auth.WSSubject クラスを参照してください。 インフォメーション・センター内のこの情報にアクセスするには、「参照」>「Developer」>「API Documentation」>「Application Programming Interfaces」とクリックします。「Application Programming Interfaces」の項目で、「com.ibm.websphere.security.auth」>「WSSubject」とクリックします。
    重要: Java 2 セキュリティーが使用可能であるときに、AccessController クラスを使用して、 Java EE コンテナーでセキュリティー・オブジェクトを操作することによって発生するセキュリティー違反を回避する必要がある場合があります。
    次のコード・サンプルで、 AccessController クラスを設定し、専用クレデンシャルを取得する方法を示します。
    Set s = (Set) AccessController.doPrivileged(new PrivilegedAction() {
       public Object run() {
       return subj.getPrivateCredentials();
       }
          });
  3. 専用クレデンシャルでターゲットとするトークン・クラスを検索します。 java.util.Iterator インターフェースを使用して、ターゲットとするトークン・クラスを検索することができます。 次の例は、セキュリティー・ヘッダーで、特定のトークン ID 値を持つユーザー名トークンを検索する方法について示しています。 他のメソッド呼び出しを使用して、セキュリティー・トークンを検索することもできます。 詳しくは、 com.ibm.wsspi.wssecurity.auth.token.Token インターフェースまたはカスタム・トークン・クラスの アプリケーション・プログラミング・インターフェース (API) の資料を参照してください。
    com.ibm.wsspi.wssecurity.auth.token.UsernameToken unt;
    Iterator it = s.iterator();
    while (it.hasNext()) {
      Object obj = it.next();
      if (obj != null &&
    obj instanceOf com.ibm.wsspi.wssecurity.auth.token.UsernameToken) {
        unt =(com.ibm.wsspi.wssecurity.auth.token.UsernameToken) obj;
    if (unt.getId().equals(“…”)) break;
    else continue;
      }
    }

タスクの結果

これらのステップが完了すると、サーバー・アプリケーションで JAAS サブジェクトからセキュリティー・トークンが検索されます。

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



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