使用 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.NameIDCallback;
    import com.ibm.wsspi.wssecurity.saml.data.SAMLNameID;
    
    public class NameIDProvider 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 NameIDCallback) {
                    NameIDCallback callback = (NameIDCallback)callbacks[i];
                    SAMLNameID nameid = new SAMLNameID("newNameID", null, null, null, null);
                    callback.setSAMLNameID(nameid);
                }
            }
        }
    }
  2. 将 NameIDProvider 定制属性添加到 (cellRoot)/sts/SAMLIssuerConfig.properties 文件。 例如:NameIDProvider =test.saml.NameIDProvider

结果

使用提供的样本代码完成此任务时,会向所有 SAML 令牌添加以下元素:
<saml:Subject>
<saml:NameID>newNameID</saml:NameID>
</saml:Subject>

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_customizingSAMLnameid
文件名:twbs_customizingSAMLnameid.html