Customizando o NameID para tokens SAML emitidos automaticamente usando a API

A API da biblioteca SAML pode ser usada para criar um token SAML que tenha um NameID customizado.

Sobre Esta Tarefa

Ao criar tokens SAML emitidos automaticamente usando o gerador de tokens SAML, não há como customizar o NameID usando as propriedades do manipulador de retorno de chamada. No entanto, usando a API da biblioteca SAML, é possível criar um manipulador de retorno de chamada NameID SAML, definido no arquivo SAMLIssuerConfig.properties, que pode customizar o NameID de um token SAML emitido automaticamente. Os aplicativos que usam o método newSAMLToken também podem usar um manipulador de retorno de chamada NameID SAML.

O manipulador de retorno de chamada NameID SAML será executado para todos os tokens SAML que são criados a partir do servidor de aplicativos com o arquivo SAMLIssuerConfig.properties modificado.

Procedimento

  1. Desenvolva um manipulador de retorno de chamada NameID SAML. Por Exemplo:
    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. Inclua a propriedade customizada NameIDProvider no arquivo (cellRoot)/sts/SAMLIssuerConfig.properties. Por exemplo: NameIDProvider =test.saml.NameIDProvider

Resultados

Quando essa tarefa é concluída usando o código de amostra fornecido, o seguinte elemento é incluído em todos os tokens SAML:
<saml:Subject>
<saml:NameID>newNameID</saml:NameID>
</saml:Subject>

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_customizingSAMLnameid
Nome do arquivo: twbs_customizingSAMLnameid.html