WSS API を使用した、外部セキュリティー・トークン・サービスからの SAML holder-of-key トークン (非対称鍵による) の要求

外部セキュリティー・トークン・サービス (STS) を要求することにより、Java™ API for XML-Based Web Services (JAX-WS) プログラミング・モデルおよび Web Services Security API (WSS API) を使用し、X.509 certificate で公開鍵を使用することによって、holder-of-key サブジェクト確認方式で SAML トークンを発行することができます。

始める前に

この作業では、JAX-WS プログラミング・モデル、WSS API インターフェース、SAML の概念、および Web サービスの設定を構成および管理するためのポリシー・セットの使用について、ユーザーが十分な知識を持っていることが前提になります。このタスクを開始する前に、以下のアクションを実行します。
  • WSS API を使用した、非対称鍵による自己発行 SAML holder-of-key トークンの伝搬についての資料を参照してください。
  • WSS API を使用して、メッセージ保護のために SAML トークン内でさまざまな埋め込み鍵材料を使用する方法について十分に理解しておいてください。 使用のシナリオでは、自己発行 SAML トークンを使用する代わりに、外部 STS から SAML トークンを要求することが必要です。
  • メッセージ・レベルで保護された SAML sender-vouches トークンを外部 STS から要求して、WSS API を使用して伝搬する方法についての資料を参照してください。
  • トランスポート・レベルで保護された SAML sender-vouches トークンを外部 STS から要求して、WSS API を使用して伝搬する方法についての資料を参照してください。
  • トランスポート・レベルで保護された SAML bearer トークンを外部 STS から要求して、WSS API を使用して伝搬する方法についての資料を参照してください。
  • WSS API を使用することによって、外部 STS にアクセスする方法について十分に理解しておいてください。

このタスクについて

このタスクでは、WSS API を使用することにより、X.509 certificate の中で埋め込み公開鍵を使用して、holder-of-key サブジェクト確認方式で外部 STS から SAML トークンを要求するサンプル・コードを示します。 このタスクは、SAML holder-of-key トークンを要求する際に、X.509 certificate を外部 STS に送信することに焦点を当てたものです。

手順

  1. holder-of-key サブジェクト確認方式を含む SAML セキュリティー・トークンを要求する要求元の STS を指定します。例:
    com.ibm.websphere.wssecurity.wssapi.WSSFactory factory =
        com.ibm.websphere.wssecurity.wssapi.WSSFactory.getInstance();
    WSSGenerationContext gencont1 = factory.newWSSGenerationContext();
    WSSConsumingContext concont1 = factory.newWSSConsumingContext();
    HashMap<Object, Object> cbackMap1 = new HashMap<Object, Object>();
    cbackMap1.put(SamlConstants.STS_ADDRESS, "https://www.example.com/sts");
    cbackMap1.put(SamlConstants.SAML_APPLIES_TO, "http://myhost:9080/myService");
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_SOAP_VERSION, "1.1");
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_WSTRUST_NAMESPACE,
                  "http://docs.oasis-open.org/ws-sx/ws-trust/200512");
    cbackMap1.put(IssuedTokenConfigConstants.TRUST_CLIENT_COLLECTION_REQUEST,
                  "true");   //RST or RSTC
    cbackMap1.put(SamlConstants.TOKEN_TYPE,
                  "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0");
    cbackMap1.put(SamlConstants.CONFIRMATION_METHOD, "holder-of-key");

    holder-of-key サブジェクト確認方式の場合、SAML トークンに埋め込まれているのが公開鍵か対称鍵かを指定する必要があります。 この例では、公開鍵タイプを指定しています。 次に、holder-of-key サブジェクト確認の要件を満たすために SOAP メッセージのさまざまなエレメントにデジタル署名するための公開鍵、およびそれに対応する送信側秘密鍵の位置が含まれている証明書の位置を指定します。

  2. SAML トークンに埋め込む X.509 certificate の位置、およびそれに対応して、メッセージのさまざまなエレメントにデジタル署名するために使用する秘密鍵を指定します。例:
    cbackMap1.put(SamlConstants.KEY_TYPE,
                  "http://docs.oasis-open.org/ws-sx/ws-trust/200512/PublicKey");
    cbackMap1.put(SamlConstants.KEY_ALIAS, "soapinitiator" );
    cbackMap1.put(SamlConstants.KEY_NAME, "CN=SOAPInitator, O=Example");
    cbackMap1.put(SamlConstants.KEY_PASSWORD, "myinitatkeypass");
    cbackMap1.put(SamlConstants.KEY_STORE_PATH, "keystores/initiator.jceks");
    cbackMap1.put(SamlConstants.KEY_STORE_PASSWORD, "myinitatstorepass");
    cbackMap1.put(SamlConstants.KEY_STORE_TYPE, "jceks");
    
    SAMLGenerateCallbackHandler cbHandler1 = new SAMLGenerateCallbackHandler(cbackMap1);
    cbHandler1.setWSSConsumingContextForTrustClient(concont1);
    cbHandler1.setWSSGenerationContextForTrustClient(gencont1);
    
    SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class,
                                                       cbHandler1, "system.wss.generate.saml");

    指定された X.509 certificate は、WS-Trust 要求の中で、trust:UseKey エレメントの内容として外部 STS に送信されます。 詳しくは、SAML Token Profile 標準で定義されている SAML アサーションについての説明を参照してください。 この例において、WS-Trust の要求メッセージと応答メッセージの整合性と機密性を保護するために、SSL が使用されています。

タスクの結果

これで、WSS API を使用することによって、holder-of-key サブジェクト確認方式で、非対称鍵を使用して外部 STS から SAML トークンを要求するための主なビルディング・ブロックについて学習しました。 SAML トークンを使用して要求メッセージに署名することについては、WSS API を使用した、非対称鍵による自己発行 SAML holder-of-key トークンの伝搬のサンプル・コードを参照し、十分な理解を得てください。


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



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