使用 API 向自签发 SAML 令牌添加属性

SAML 库 API 可用于创建具有定制属性的自签发 SAML 令牌。

关于此任务

自签发 SAML 令牌是使用 SAML 令牌生成器创建的,无法使用回调处理程序属性添加定制属性。但是,使用 SAML 库 API 时,可以创建 SAMLIssuerConfig.properties 文件中定义的定制 SAML 属性回调处理程序,可用于向自签发 SAML 令牌添加属性。SAML 属性回调处理程序还可由使用 newSAMLToken 方法的应用程序使用。

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