Usando a API para incluir atributos a tokens SAML emitidos automaticamente

A API da biblioteca SAML pode ser usada para criar um token SAML emitido automaticamente que tenha atributos customizados.

Sobre Esta Tarefa

Ao criar tokens SAML emitidos automaticamente usando o gerador de tokens SAML, não há como incluir atributos customizados 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 do atributo SAML customizado, definido no arquivo SAMLIssuerConfig.properties, que pode incluir atributos em um token SAML emitido automaticamente. Os aplicativos que usam o método newSAMLToken também podem usar um manipulador de retorno de chamada do atributo SAML.

O manipulador de retorno de chamada do atributo 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 de atributo SAML customizado. 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.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. Inclua a propriedade customizada AttributeProvider no arquivo (cellRoot)/sts/SAMLIssuerConfig.properties. Por exemplo: AttributeProvider=test.saml.AttributeProvider

Resultados

Quando essa tarefa é concluída usando o código de amostra fornecido, o seguinte elemento é incluído em todos os tokens SAML:
<saml:AttributeStatement>
    <saml:Attribute Name="newAttribute">
        <saml:AttributeValue>newValue</saml:AttributeValue>
    </saml:Attribute>
</saml:AttributeStatement>

Í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_addingattributestoselfissuedSAMLtokens
Nome do arquivo: twbs_addingattributestoselfissuedSAMLtokens.html