API を使用した自己発行 SAML トークンへの属性の追加

SAML ライブラリー API を使用して、カスタム属性のある自己発行 SAML トークンを作成することができます。

このタスクについて

SAML トークン生成プログラムを使用して自己発行 SAML トークンが作成されるときには、 コールバック・ハンドラー・プロパティーを使用してカスタム属性を追加する方法はありません。しかし、SAML ライブラリー API を使用することによって、 自己発行 SAML トークンに属性を追加できる、SAMLIssuerConfig.properties ファイル内に定義されたカスタム SAML 属性コールバック・ハンドラーを作成できます。newSAMLToken メソッドを使用するアプリケーションも SAML 属性コールバック・ハンドラーを使用できます。

SAML 属性コールバック・ハンドラーは、 変更された SAMLIssuerConfig.properties ファイルを使用してアプリケーション・サーバーから作成されるすべての SAML トークンに対して実行されます。

手順

  1. カスタム SAML 属性コールバック・ハンドラーを開発します。 以下に例を示します。
    package test.saml;
    
    import java.io.IOException;
    import javax.security.auth.callback.Callback;
    import javax.security.auth.callback.UnsupportedCallbackException;
    import com.ibm.websphere.wssecurity.callbackhandler.Saml11AttributeCallback;
    import com.ibm.wsspi.wssecurity.saml.data.SAMLAttribute;
    import java.util.ArrayList;
    
    public class AttributeProvider implements javax.security.auth.callback.CallbackHandler {
        @Override
        	public void handle(Callback[] callbacks) throws IOException,
        UnsupportedCallbackException {
            if (callbacks == null || callbacks.length == 0) {
                throw new UnsupportedCallbackException(null, "There is no callback.");
            }
            for (int i = 0; i < callbacks.length; i++) {
                if (callbacks[i] instanceof Saml11AttributeCallback) {
                    Saml11AttributeCallback callback = (Saml11AttributeCallback)callbacks[i];
                    SAMLAttribute attr = new SAMLAttribute("newAttribute", new String[]{"newValue"}, null, null, null, null);
                    ArrayList<SAMLAttribute> attrList = callback.getSAMLAttributes();               
                    if (attrList == null) {
                        attrList = new ArrayList<SAMLAttribute>();
                        attrList.add(attr);
                        callback.setSAMLAttributes(attrList);
                    } else {
                        attrList.add(attr);
                    }
                }
            }
        }
    }
  2. AttributeProvider カスタム・プロパティーを (cellRoot)/sts/SAMLIssuerConfig.properties ファイルに追加します。 例: AttributeProvider=test.saml.AttributeProvider

タスクの結果

示されたサンプル・コードを使用してこのタスクを完了すると、以下のエレメントがすべての SAML トークンに追加されます。
<saml:AttributeStatement>
    <saml:Attribute Name="newAttribute">
        <saml:AttributeValue>newValue</saml:AttributeValue>
    </saml:Attribute>
</saml:AttributeStatement>

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



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