Propagando Tokens SAML

É possível usar vários métodos de propagação de token SAML para incluir tokens SAML em mensagens de serviços da Web de saída.

Sobre Esta Tarefa

Um cliente de serviços da Web pode incluir dois tipos de tokens em mensagens de serviços da Web de saída:
  • Tokens SAML originais que o cliente recebeu de mensagens de serviços da Web de entrada.
  • Novos tokens SAML autoemitidos.
Os novos tokens SAML podem ser gerados com o uso de atributos de tokens SAML originais ou com o uso de atributos do nome de usuário WSPrincipal no subject RunAs. A configuração de política dos serviços da Web determina quais tokens SAML serão propagados. É possível substituir a configuração de política inserindo programaticamente tokens SAML que você quer propagar no objeto Axis2 RequestContext.

Quatro métodos de propagação são ativados. Esta tabela resume os métodos de propagação e as opções de ligação associadas:

Tabela 1. Métodos de Propagação e Opções de Ligação Associadas. Use a propagação para incluir tokens SAML em mensagens de serviços da Web.
Método de propagação do token SAML Opção de ligação Detalhes da implementação
Propagar o token SAML original. A opção de ligação tokenRequest é configurada para o valor propagation. Envia o token SAML original do servidor onde o token foi recebido para outros servidores utilizando WS-Security.
Propague o nome de segurança do usuário, o nome de segurança exclusivo, IDs de grupo e o nome da região de segurança. A opção de ligação tokenRequest é configurada para o valor issueByWSCredential. Substitui a implementação de sistema padrão.

O token SAML emitido automaticamente contém o nome de segurança do usuário, o nome de segurança exclusivo, IDs de grupo e o nome da região de segurança que são especificados pelo objeto WSCredential no contexto de segurança do usuário.

Propagar os atributos e a identidade do token SAML. Nenhuma opção de ligação está configurada. Implementação de sistema padrão.

O servidor gera automaticamente um novo token SAML contendo os atributos do SAML original, o método de Autenticação e seu NameIdentifier ou NameID e envia o token SAML gerado automaticamente para servidores de recebimento de dados utilizando WS-Security. O nome do emissor do novo token SAML, o certificado de assinatura do emissor e o tempo de vida são determinados pelas propriedades de configuração do provedor SAML.

Propagar o WSPrincipal. A opção de ligação tokenRequest é configurada para o valor issueByWSPrincipal.
Para Usuários de Transição Para Usuários de Transição: A partir da versão 8, a especificação do valor issueByWSPrincipal ou issueByWSCredential tem o mesmo resultado. Caso ainda não esteja usando o valor issueByWSPrincipal, é recomendável usar o valor issueByWSCredential. Se já estiver usando o valor issueByWSPrincipal, é recomendável, eventualmente, substituir esse valor pelo valor issueByWSCredential. trns
Substitui a implementação de sistema padrão.

O token SAML autoemitido contém informações do WSPrincipal no subject RunAs. As informações são armazenadas como NameIdentity ou NameID sem copiar nada do token SAML original, mesmo se o token existir no subject.

Propagar programaticamente um token SAML pré-existente. Insira o token SAML que deseja propagar no RequestContext utilizando a propriedade com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAMLTOKEN_IN_MESSAGECONTEXT. Substitui todas as outras opções de ligação existentes.

Procedimento

  1. Propague o token SAML original configurando a opção de ligação tokenRequest para o valor propagation no arquivo bindings.xml, conforme mostrado nas etapas. Esse método envia o token SAML original para outros servidores utilizando WS-Security. Para que a propagação seja bem-sucedida, deve haver um token SAML válido no subject RunAs. O servidor extrai o token SAML do subject RunAs no contexto de segurança atual e valida as seguintes condições. Se alguma das condições for inválida, o ambiente de tempo de execução do WS-Security não propagará o token SAML e o pedido de propagação falhará.
    • O token SAML não expirou e o prazo de expiração está dentro do espaço de tempo do valor notOnOrAfter.
    • A configuração ConfirmationMethod no token SAML é a mesma que a opção de ligação confirmationMethod definida na configuração do gerador de token.
    • O token ValueType no token SAML corresponde ao ValueType na configuração do gerador de token.

    Execute estas etapas para configurar o valor correto para a opção de ligação tokenRequest. Esse procedimento assume que um aplicativo de cliente de serviços da Web nomeado JaxWSServicesSamples é implementado, e que a ligação da amostra Saml Bearer Client está conectada.

    1. Clique em Aplicativos > Tipos de aplicativos > Aplicativos corporativos do WebSphere > JaxWSServicesSamples > Conjuntos de políticas e ligações do cliente de serviço > Amostra do cliente Bearer do Saml > WS-Security > Autenticação e proteção.
    2. Clique em gen_saml11token na tabela Tokens de Autenticação.
    3. Clique em Manipulador de Retorno de Chamada.
    4. Inclua a propriedade customizada tokenRequest e configure seu valor para propagation.
  2. Para propagar os atributos e a identidade do token SAML utilizando um token SAML autoemitido, modifique o tokenGenerator de saída no arquivo bindings.xml. Esse método envia os atributos do SAML original, NameIdentifier ou NameID, e o método de autenticação do token SAML original para outros servidores utilizando WS-Security. Se não houver um token SAML no subject, o servidor utilizará o WSPrincipal, armazenado como NameIdentifier ou NameID, para criar um token SAML autoemitido. Esse método de propagação é a implementação de sistema padrão. Nesse método, a opção de ligação não é configurada.
    As limitações a seguir se aplicam ao arquivo bindings.xml quando você está utilizando esse método de propagação:
    • Não configure a opção de ligação tokenRequest no arquivo bindings.xml.
    • Não configure a opção de ligação stsURI no arquivo bindings.xml ou configure a opção para este valor: www.websphere.ibm.com/SAML/Issuer/Self.
  3. Para propagar o WSPrincipal, modifique o arquivo bindings.xml conforme mostrado nas etapas. Configure a opção de ligação tokenRequest para o valor issueByPrincipal no arquivo bindings.xml. Com o uso desse método, o token SAML autoemitido é sempre baseado no WSPrincipal, mesmo que haja um token SAML no subject. O novo token SAML contém o nome de usuário do WSPrincipal como o NameId ou NameIdentifier. O token não contém nenhum outro atributo nos objetos WSPrincipal ou WSCredential.
    A limitação a seguir se aplica ao arquivo bindings.xml quando você está utilizando esse método de propagação:
    • Não configure a opção de ligação stsURI no arquivo bindings.xml ou configure a opção para o valor www.websphere.ibm.com/SAML/Issuer/Self.

    Execute estas etapas para configurar o valor correto para a opção de ligação tokenRequest. Esse procedimento assume que um aplicativo de cliente de serviços da Web nomeado JaxWSServicesSamples é implementado, e que a ligação da amostra Saml Bearer Client está conectada.

    1. Clique em Aplicativos > Tipos de aplicativos > Aplicativos corporativos do WebSphere > JaxWSServicesSamples > Conjuntos de políticas e ligações do cliente de serviço > Amostra do cliente Bearer do Saml > WS-Security > Autenticação e proteção.
    2. Clique em gen_saml11token na tabela Tokens de Autenticação.
    3. Clique em Manipulador de Retorno de Chamada.
    4. Inclua a propriedade customizada tokenRequest e configure seu valor para issueByPrincipal.
  4. Para propagar um token SAML pré-existente por meio da inserção de SAMLToken no RequestContext, siga estas etapas. Utilize este método para enviar um token SAML que você criou nos servidores de recebimento de dados utilizando WS-Security. A propagação é acionada automaticamente se o tempo de execução do WS-Security detectar um token SAML no RequestContext. O token pré-existente substitui quaisquer outras opções de ligação existentes. Para usar esse método de propagação, salve o token SAML existente no RequestContext especificando com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAMLTOKEN_IN_MESSAGECONTEXT como a chave, conforme mostrado nas seguintes etapas.
    1. Gere um token SAML usando o método SAMLToken samlToken = <token type>, por exemplo:
      SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);
    2. Salve o SAMLToken no RequestContext, por exemplo:
      Map requestContext = ((BindingProvider)port).getRequestContext();
         requestContext.put("com.ibm.wsspi.wssecurity.core.token.config.WSSConstants.SAMLTOKEN_IN_MESSAGECONTEXT", samlToken );
    Essa opção de propagação pode coexistir com outros métodos de propagação, além de substituir os outros métodos. Se o token SAML no RequestContext expirar, ou o prazo de expiração do token for menor que o tempo atual mais o cushion do cache, o ambiente de tempo de execução do WS-Security irá ignorar o token SAML e utilizará um dos outros métodos de propagação configurados no arquivo bindings.xml. Para evitar o uso dos outros três métodos de propagação, inclua a seguinte opção de ligação nas propriedades customizadas sob o manipulador de retorno de chamada na configuração de TokenGenerator: failOverToTokenRequest = false.
  5. Para propagar as associações ao grupo do usuário, o nome de segurança exclusivo e o nome da região contidos no objeto com.ibm.websphere.security.cred.WSCredential modificam o arquivo bindings.xml, conforme mostrado nas etapas. Configure a opção de ligação tokenRequest para o valor issueByWSCredencital no arquivo bindings.xml. Usando esse método, o token SAML emitido automaticamente é sempre se baseia no WSCredential, mesmo se houver um token SAML no assunto.

    O novo token SAML 1.1 contém as seguintes asserções:

    • O elemento NameIdentifier contém o valor SecurityName a partir de WSCredential com o elemento NameQualifier configurado para o nome da região a partir de WSCredential. O SecurityName é obtido ao chamar o método WSCredential.getSecurityName(). O nome da região é obtido ao chamar o método WSCredential.getRealmName().
    • Todos os atributos possuem um AttributeNamespace configurado para com.ibm.websphere.security.cred.WSCredential como o valor.
    • O atributo GroupIds contém todos os nomes de grupos ao qual o usuário pertence. Os nomes do grupo são obtidos ao chamar o método WSCredential.getGroupIds().
    • O atributo UniqueSecurityName contém o nome de segurança exclusivo, que é obtido ao chamar o método WSCredential.getUniqueSecurityName().
    • Opcionalmente, é possível asserir o nome da região a partir de WSCredential ao incluir a propriedade customizada includeRealmName=true no manipulador de retorno de chamada.

    O novo token SAML 2.0 contém as seguintes asserções:

    • O elemento NameID contém o valor SecurityName a partir de WSCredential com o elemento NameQualifier configurado para o nome da região a partir de WSCredential. O SecurityName é obtido ao chamar o método WSCredential.getSecurityName(). O nome da região é obtido ao chamar o método WSCredential.getRealmName().
    • Todos os atributos possuem um NameFormat configurado para com.ibm.websphere.security.cred.WSCredential como o valor.
    • O atributo GroupIds contém todos os nomes de grupos ao qual o usuário pertence. Os nomes do grupo são obtidos ao chamar o método WSCredential.getGroupIds().
    • O atributo UniqueSecurityName contém o nome de segurança exclusivo, que é obtido ao chamar o método WSCredential.getUniqueSecurityName().
    • Opcionalmente, é possivel asserir o nome da região a partir de WSCredential ao incluir a propriedade customizada includeRealmName=true no manipulador de retorno de chamada.
    A limitação a seguir se aplica ao arquivo bindings.xml quando estiver usando o método de propagação:
    • Não configure a opção de ligação stsURI no arquivo bindings.xml.
    Execute estas etapas para configurar o valor correto para a opção de ligação tokenRequest. Esse procedimento assume que um aplicativo cliente de serviços da Web nomeado JaxWSServicesSamples é implementado e que a ligação da amostra Saml Bearer Client sample está conectada.
    1. Clique em Aplicativos > Tipos de aplicativos > Aplicativos corporativos do WebSphere > JaxWSServicesSamples > Conjuntos de políticas e ligações do cliente de serviço > Amostra do cliente Bearer do Saml > WS-Security > Autenticação e proteção.
    2. Clique em gen_saml11token na tabela Tokens de Autenticação.
    3. Clique em Manipulador de Retorno de Chamada.
    4. Inclua a propriedade customizada tokenRequest e configure seu valor para issueByWSCredential.
    O exemplo a seguir ilustra as instruções NameIdentifier e Attribute a partir de uma asserção SAML 1.1 emitida automaticamente com base no WSCredential:
    <saml:AttributeStatement>
        <saml:Subject>
            <saml:NameIdentifier NameQualifier="ldap.acme.com:9080">uid=alice,dc=acme,dc=com</saml:NameIdentifier>
            <saml:SubjectConfirmation>
                <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod>
            </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:Attribute AttributeName="UniqueSecurityName" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>uid=alice,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
        <saml:Attribute AttributeName="GroupIds" AttributeNamespace="com.ibm.websphere.security.cred.WSCredential">
            <saml:AttributeValue>cn=development,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=deployment,dc=acme,dc=com</saml:AttributeValue>
            <saml:AttributeValue>cn=test,dc=acme,dc=com</saml:AttributeValue>
        </saml:Attribute>
    </saml:AttributeStatement>
    O exemplo a seguir ilustra as instruções NameID e Attribute a partir de uma asserção SAML 2.0 emitida automaticamente com base no WSCredential:
    <saml2:AttributeStatement>
        <saml2:Attribute Name="UniqueSecurityName"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>uid=alice,dc=acme,dc=com</saml2:AttributeValue>
        <saml2:Attribute>
        <saml2:Attribute AttributeName="GroupIds"
               NameFormat="com.ibm.websphere.security.cred.WSCredential">
            <saml2:AttributeValue>cn=development,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=deployment,dc=acme,dc=com</saml2:AttributeValue>
            <saml2:AttributeValue>cn=test,dc=acme,dc=com</saml2:AttributeValue>
        </saml2:Attribute>
    </saml2:AttributeStatement>
    <saml2:NameID NameQualifier="ldap.acme.com:9060">alice</saml2:NameID>

Í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_propagatesamltoken
Nome do arquivo: twbs_propagatesamltoken.html