Criando um Token sender-vouches SAML Utilizando a API

Utilize a API de biblioteca SAML para criar o token sender-vouches SAML, que inclui o método de confirmação sender-vouches. O método de confirmação sender-vouches é utilizado quando um servidor precisa propagar o comportamento ou a identidade do cliente.

Sobre Esta Tarefa

Quando a função SAML é instalada em um servidor WebSphere, uma API de biblioteca SAML é fornecida. Utilize a biblioteca para criar um token sender-vouches SAML. É possível utilizar a API da biblioteca SAML para criar os objetos de configuração SAML necessários. Em seguida, utilize esses objetos de configuração para gerar um token sender-vouches SAML.

Procedimento

  1. Crie uma instância SAMLTokenFactory utilizando a versão do token SAML como um parâmetro.
    1. Utilize a seguinte linha de código para importar o método:
      import com.ibm.websphere.wssecurity.wssapi.token.SAMLTokenFactory;
    2. Utilize uma das seguintes linhas de código para criar a instância, dependendo da versão do token.
      • Inclua a seguinte linha de código para criar uma instância SAMLTokenFactory para um token SAML versão 1.1:
        SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11);
      • Inclua a seguinte linha de código para criar uma instância SAMLTokenFactory para um token SAML versão 2.0:
        SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token20);
  2. Após você criar a instância, SAMLTokenFactory é utilizada para criar uma instância RequesterConfig, que determina como o token será gerado, de acordo com os requisitos de autenticação do solicitante. Utilize esta linha de código para criar a instância RequesterConfig para o token sender-vouches:
    RequesterConfig reqData = samlFactory.newSenderVouchesTokenGenerateConfig();
    A instância RequestConfig padrão é suficiente para gerar um token sender-vouches simples, mas asserções adicionais podem ser incluídas no token SAML por meio da customização da instância RequesterConfig. Por exemplo, para incluir informações de autenticação de senha no token, utilize o método setAuthenticationMethod:
    reqData.setAuthenticationMethod(“password”);
    A validação de confiança para uma asserção sender-vouches é responsabilidade do remetente, não do emissor, assim, o elemento Enveloped-Signature não é necessário na asserção. Para remover o elemento Enveloped-Signature da asserção SAML, utilize o método setAssertionSignatureRequired; por exemplo:
    reqData.setAssertionSignatureRequired(false);
  3. Utilize a API SAMLTokenFactory para criar uma instância ProviderConfig, que descreve o emissor do token. A instância ProviderConfig especifica o nome do emissor SAML, bem como informações do keystore e do truststore, que identificam a chave para assinatura e criptografia SAML. A instância ProviderConfig é criada por meio do uso de valores de propriedade de um arquivo de propriedades. O arquivo de propriedades especifica o valor padrão do objeto ProviderConfig. Em um ambiente de cliente Java™, esse arquivo de propriedades é definido por uma propriedade de sistema JVM, com.ibm.webservices.wssecurity.platform.SAMLIssuerConfigDataPath.
    No ambiente de tempo de execução WebSphere Application Server, o nome do arquivo de propriedades é SAMLIssuerConfig.properties. O arquivo pode estar localizado no diretório de configuração no nível do servidor ou no diretório no nível da célula, nessa ordem de precedência. Consulte o exemplo a seguir do caminho do nível do servidor:
    app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/nodes/$NODENAME/servers/$SERVERNAME/SAMLIssuerConfig.properties
    Consulte o exemplo a seguir do caminho do nível da célula:
    app_server_root/profiles/$PROFILE/config/cells/$CELLNAME/sts/SAMLIssuerConfig.properties

    A propriedade de sistema JVM, com.ibm.webservices.wssecurity.platform.SAMLIssuerConfigDataPath, será ignorada se a propriedade for definida no ambiente de tempo de execução do servidor. Para obter uma descrição detalhada de todas as propriedades, leia sobre a configuração de um token SAML durante a criação do token.

    Utilize a seguinte linha de código para criar uma instância ProviderConfig padrão:

    ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(“any issuer name”);
    O nome do emissor é opcional. Se o nome do emissor for especificado, ele aparecerá na asserção do SAML. Se o nome do emissor não for especificado, uma propriedade de nome do emissor padrão de SAMLIssuerConfig.properties será utilizada como nome do emissor.
  4. Opcional: Durante a criação de um novo token SAML, SAMLTokenFactory utiliza um Java Authentication and Authorization Service (JAAS) subject ou uma instância CredentialConfig para preencher o novo token SAML. Para utilizar um JAAS subject para preencher o token, utilize a API getCallerSubject() ou a API getRunAsSubject() do com.ibm.websphere.security.auth.WSSubject para obter um JAAS subject que represente o cliente solicitante ou a identidade do encadeamento de execução.
    • Quando você utiliza o JAAS subject para criar um novo token SAML, a API SAMLTokenFactory procura um objeto SAMLToken na lista PrivateCredentials do subject. Se um objeto SAMLToken existir, os objetos NameId ou NameIdentifier serão copiado no novo token SAML. O SAMLTokenFactory também copia os atributos SAML e o método AuthenticationMethod do token SAML existente no novo token SAML. O novo token SAML inclui um novo nome de emissor, novo certificado de assinatura, método de confirmação, novo KeyInfo para o método de confirmação holder-of-key e novas condições NotBefore e NotOnAfter. Essas configurações de token são determinadas pelos parâmetros de configuração nos objetos ProviderConfig e RequesterConfig.

      Se não houver um objeto SAMLToken no assunto, apenas o nome do principal WSPrincipal será copiado do assunto no novo token SAML. Nenhum outro atributo no subject será criado no novo token SAML. Da mesma forma, o nome do emissor, o certificado de assinatura, o método de confirmação, KeyInfo para holder-of-key e as condições NotBefore e NotOnOrAfter são determinados pelos parâmetros de configuração nos objetos ProviderConfig e RequesterConfig.

      Alternativamente, é possível usar o método RunAsSubject no encadeamento de execução para criar o token SAML. Ao usar esse método, não transmita o JAAS subject ou o objeto CredentialConfig ao SAMLTokenFactory para criar o token SAML. Em vez disso, o conteúdo do token SAML existente será copiado no novo token SAML, conforme descrito anteriormente.

    • Outro método de criação de um token SAML é o uso do objeto CredentialConfig para preencher o NameId e Atributos SAML programaticamente. Utilize esse método nas seguintes circunstâncias:
      • Atributos SAML customizados devem ser incluídos no novo token SAML.
      • O token SAML é criado manualmente em vez de se usar SAMLTokenFactory para preencher o token SAML automaticamente a partir de um JAAS subject.
      • Não existe um token SAML existente no subject.
      • Não existe um JAAS subject disponível.
    1. Para criar um objeto CredentialConfig sem o uso do JAAS subject, utilize esta linha de código:
      CredentialConfig cred = samlFactory.newCredentialConfig ();
      Não existe um valor inicial fornecido para esse objeto CredentialConfig, portanto, é necessário utilizar métodos setter para preencher o objeto CredentialConfig.
    2. Para preencher o NameIdentifier ou NameID SAML, utilize a seguinte linha de código:
      cred.setRequesterNameID("any name");
      O valor do parâmetro transmitido para o método setRequesterNameID() é utilizado como nome do principal no token SAML. O nome aparece na asserção como NameIdentifier em um token SAML Versão 1.1, ou NameId no token SAML Versão 2.0. Por exemplo, se o valor do parâmetro transmitido para o método setRequesterNameID() for Alice, a asserção a seguir será gerada em um token SAML Versão 1.1:
      <saml:NameIdentifier>Alice</saml:NameIdentifier>
      A asserção a seguir é gerada em um token SAML Versão 2.0:
      <saml2:NameID>Alice</saml2:NameID> 
    3. Para incluir atributos SAML na parte <AttributeStatement> de uma asserção, utilize este código:
      SAMLAttribute samlAttribute = new SAMLAttribute("email" /* Name*/, new String[] {"joe@websphere"} 
      /*Attribute Values*/, null, "IBM WebSphere namespace" /* namespace*/, "email" /* format*/, "joe" /*friendly name */);
      ArrayList<SAMLAttribute> al = new ArrayList<SAMLAttribute>();
      al.add(samlAttribute)
      sattribute = new SAMLAttribute("Membership", new String[] {"Super users", "Gold membership"}, null, null /* format*/, null, null );
      al.add(samlAttribute );
      cred.setSAMLAttributes(al);
      Esse código de amostra gera as seguintes asserções <Attribute>:
      <saml:Attribute AttributeName="email" NameFormat="email" AttributeNamespace="IBM WebSphere namespace">
      <saml:AttributeValue>joe@websphere</saml:AttributeValue>
      </saml:Attribute>
      <saml:Attribute AttributeName="Membership">
      <saml:AttributeValue>Super users</saml:AttributeValue><saml:AttributeValue>Gold membership</saml:AttributeValue>
      </saml:Attribute>
  5. Gere um token sender-vouches SAML utilizando esta linha de código:
    SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);
    Esse método requer a permissão de segurança Java wssapi.SAMLTokenFactory.newSAMLToken.

    Amostras de código completas utilizando linhas de código das etapas anteriores estão incluídas na seção Exemplo.

Exemplo

Utilize este código de amostra para criar um token sender-vouches SAML versão 1.1 a partir do subject:
SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11)

RequesterConfig reqData = samlFactory.newSenderVouchesTokenGenerateConfig();

ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(“WebSphere Server”);

Subject subject =  com.ibm.websphere.security.auth.WSSubject.getRunAsSubject(); 

SAMLToken samlToken =  samlFactory.newSAMLToken(subject, reqData, samlIssuerCfg);
Utilize este código de amostra para criar um token sender-vouches SAML versão 1.1 sem usar o subject:
SAMLTokenFactory samlFactory = SAMLTokenFactory.getInstance(SAMLTokenFactory.WssSamlV11Token11);

RequesterConfig reqData = samlFactory.newSenderVouchesTokenGenerateConfig();
reqData.setAuthenticationMethod("Password"); //Método de autenticação para Asserção

ProviderConfig samlIssuerCfg = samlFactory.newDefaultProviderConfig(Self issuer);

CredentialConfig cred = samlFactory.newCredentialConfig ();
cred.setRequesterNameID("Alice");   // NameIdentifier do SAML
//Atributos do SAML:	
SAMLAttribute attribute = new SAMLAttribute
   ("email" /* Name*/, new String[] {"joe@websphere"} 
   /*Attribute Values in String*/,null 
   /*Attribute Values in XML */, "WebSphere" /* Namespace*/, "email" /* format*/, "joe" /*Friendly_name */);
ArrayList<SAMLAttribute> al = new ArrayList<SAMLAttribute>();
al.add(attribute);
attribute = new SAMLAttribute("Membership", new String[] {"Super users", "My team"}, null, null, null, null  );
al.add(attribute);
cred.setSAMLAttributes(al);

SAMLToken samlToken = samlFactory.newSAMLToken(cred, reqData, samlIssuerCfg);

Í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_createsendervouchestoken
Nome do arquivo: twbs_createsendervouchestoken.html