WSS API を使用した SAML 属性の挿入

Java™ API for XML-Based Web Services (JAX-WS) プログラミング・モデルおよび Web Services Security API (WSS API) を使用することによって、自己発行 SAML トークンにカスタム属性を挿入することができます。

始める前に

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

このタスクについて

このタスクは、自己発行 SAML セキュリティー・トークンにカスタム属性を挿入するサンプル・コードを示します。 この例では、bearer サブジェクト確認方式が使用されています。 どの SAML セキュリティー・トークンに対してでも属性を追加することが可能であり、他のサブジェクト確認方式についても同じコードを使用できます。

手順

SAML セキュリティー・トークン作成時にカスタム属性を挿入します。例:
import com.ibm.websphere.wssecurity.wssapi.token.SecurityToken;
import com.ibm.websphere.wssecurity.callbackhandler.SAMLGenerateCallbackHandler;
import com.ibm.websphere.wssecurity.wssapi.token.SAMLToken;
import com.ibm.wsspi.wssecurity.core.token.config.WSSConstants;
import com.ibm.wsspi.wssecurity.saml.config.SamlConstants;
import com.ibm.wsspi.wssecurity.saml.data.SAMLAttribute;

WSSFactory factory = WSSFactory.getInstance();
			HashMap<Object, Object> map = new HashMap<Object, Object>();
			map.put(SamlConstants.CONFIRMATION_METHOD, "Bearer");
map.put(SamlConstants.Token_REQUEST, "issue");
			map.put(SamlConstants.TOKEN_TYPE, WSSConstants.SAML.SAML20_VALUE_TYPE);
			map.put(SamlConstants.SAML_NAME_IDENTIFIER, "Alice");
			map.put(SamlConstants.SIGNATURE_REQUIRED, "true");			
ArrayList<SAMLAttribute> al = new ArrayList<SAMLAttribute>();
String groups[] = {"IBMer", "Texan"};
SAMLAttribute sattribute = new SAMLAttribute("Membership", groups, null,null, null, null);
al.add(sattribute);
String gender[] = {"Female"};
sattribute = new SAMLAttribute("Gender", gender, null,null, null, null);
al.add(sattribute);
map.put(SamlConstants.SAML_ATTRIBUTES, al);
			SAMLGenerateCallbackHandler callbackHandler = new SAMLGenerateCallbackHandler(map);				
SecurityToken samlToken = factory.newSecurityToken(SAMLToken.class, callbackHandler,
                                                  "system.wss.generate.saml");

タスクの結果

これで SAML セキュリティー・トークンにカスタム属性が挿入されました。

以下の例は、SAML Assertion 中のカスタム属性を示しています。
<saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
				              				              Version="2.0"
                       ID="_E62A1CA3C2F21D9A9B1287772824570"
                       IssueInstant="2010-10-22T18:40:24.531Z">
    <saml2:Issuer>example.com</samls2:Issuer>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    ...
    </ds:Signature>
    <saml2:Subject>
        <saml2:NameID>Alice</saml2:NameID>        <saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"></saml2:SubjectConfirmation>
    </saml2:Subject>
    <saml2:Conditions NotBefore="2010-10-22T18:40:24.531Z"
		                  		                  NotOnOrAfter="2010-10-22T19:40:24.531Z">
    </saml2:Conditions>
    <saml2:AttributeStatement>
        <saml2:Attribute Name="Membership">
            <saml2:AttributeValue>IBMer</saml2:AttributeValue>
            <saml2:AttributeValue>Texan</saml2:AttributeValue>
        </saml2:Attribute>
        <saml2:Attribute Name="Gender">
            <saml2:AttributeValue>Female</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
</saml2:Assertion>

次のタスク

このコードを、『WSS API を使用した自己発行 SAML bearer トークンの伝搬』のトピックに示されているサンプル・コードにマージして、SAML セキュリティー・トークンを生成します。 SAML Assertions の中に SAML 属性が表示されます。

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



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