Asserções SAML Definidas no Padrão SAML Token Profile
O padrão OASIS Web Services Security SAML Token Profile especifica como usar asserções Security Assertion Markup Language (SAML) com a especificação Web Services Security SOAP Message Security.
Esse produto suporta duas versões do padrão OASIS SAML: Assertions and Protocol for the OASIS Security Assertion Markup Language (SAML) V1.1 e Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0.
O padrão descreve o uso de asserções do SAML como tokens de segurança no cabeçalho <wsse:Security>, conforme definido pela especificação WSS: SOAP Message Security. Uma assinatura XML pode ser usada para ligar os objetos e instruções na asserção SAML à mensagem SOAP.
Os métodos de confirmação de objeto definem o mecanismo pelo qual uma entidade fornece evidência (prova) do relacionamento entre o assunto e as solicitações das asserções SAML. O WSS: SAML Token Profile descreve o uso de três métodos de confirmação de objeto: transmissão, holder-of-key e sender-vouches. Esse produto suporta os três métodos de confirmação. Ao usar o método de confirmação de objeto de transmissão, a prova do relacionamento entre o assunto e as solicitações é implícita. Não é executada nenhuma etapa específica para estabelecer o relacionamento.
Como não existe nenhum material chave associado a um token de transmissão, a proteção da mensagem SOAP, se necessária, deve ser executada usando um mecanismo em nível de transporte ou outro token de segurança, como um token X.509 ou do Kerberos, para proteção em nível de mensagem. Ao usar o método de confirmação de objeto holder-of-key, a prova do relacionamento entre o assunto e as solicitações é estabelecido assinando a parte da mensagem SOAP com a chave especificada na asserção SAML. Como existe material chave associado a um token holder-of-key, este token pode ser usado para fornecer proteção em nível de mensagem (assinatura e criptografia) da mensagem SOAP.
- Um emissor configura uma sessão secure sockets layer (SSL) com um receptor usando a autenticação por certificado de cliente.
- Um emissor assina digitalmente as asserções SAML com a mensagem SOAP de inclusão, usando o algoritmo de transformação de referência do token de segurança. Um emissor pode usar a criptografia de mensagens SSL ou SOAP para proteger o sigilo.
Asserção de Transmissão
Uma asserção do SAML será uma asserção de acesso, se incluir o elemento <saml:ConfirmationMethod> de acesso, conforme definido nas especificações do OASIS Web Services Security. Para obter informações adicionais, consulte os documentos de especificação.<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:bearer
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
</saml2:SubjectConfirmation>
Asserção Holder-of-key
Uma asserção SAML é uma asserção holder-of-key se incluir o elemento SubjectConfirmation que contém um elemento saml:ConfirmationMethod com o valor de holder-of-key e um elemento ds:KeyInfo. Para obter informações adicionais, consulte os documentos de especificação.As informações de ds:KeyInfo contidas no elemento SubjectConfirmation identificam uma chave pública ou secreta que foi usada para confirmar a identidade do objeto. A asserção holder-of-key também contém um elemento ds:Signature que protege a integridade do elemento ds:KeyInfo de confirmação, conforme estabelecido pela autoridade de asserção.
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm: holder-of-key
</saml:ConfirmationMethod>
<ds:KeyInfo>
<ds:KeyValue>. . .</ds:KeyValue>
</ds:KeyInfo>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:holder-of-key">
<saml2:SubjectConfirmationData>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
......
</ds:KeyInfo>
</saml2:SubjectConfirmationData>
</saml2:SubjectConfirmation>
Asserção de Sender-vouches
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>
urn:oasis:names:tc:SAML:1.0:cm:sender-vouches
</saml:ConfirmationMethod>
</saml:SubjectConfirmation>
<saml2:SubjectConfirmation
Method="urn:oasis:names:tc:SAML:2.0:cm:sender-vouches">
</saml2:SubjectConfirmation>
Chave Simétrica na Asserção Holder-of-key
Uma asserção holder-of-key do SAML é usada como um token de proteção. Este tipo de token de proteção pode usar uma chave simétrica como uma chave de prova. O cliente usa a chave de prova para demonstrar à parte dependente que o cliente realmente possui o token SAML emitido. Quando um Security Token Service (STS) emitir um token SAML que usa uma chave de prova simétrica, o token conterá uma chave que é criptografada para o serviço de destino. O STS também envia a mesma chave de prova ao solicitante em um elemento <RequestedProofToken> como parte do RequestSecurityTokenResponse (RSTR). O cliente de serviço da Web apresenta então o token SAML para o serviço de destino, também conhecido como o grupo de confiança e sinaliza a mensagem do aplicativo com a chave de prova recebida.<t:KeyType> http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey
</t:KeyType>
<t:KeySize>256</t:KeySize>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:holder-of-key</saml:ConfirmationMethod>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<enc:EncryptedKey xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
<enc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
</enc:EncryptionMethod>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>MIIB3 . . . vO3bdg</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<enc:CipherData>
<enc:CipherValue>P5Kb . . . rOTvII</enc:CipherValue>
</enc:CipherData>
</enc:EncryptedKey>
</ds:KeyInfo>
</saml:SubjectConfirmation>
Chave Pública na Asserção holder-of-key
Quando uma asserção holder-of-key do SAML é usada como um token de proteção, o token pode usar uma chave pública como uma chave de prova. O cliente usa a chave de prova para demonstrar à parte dependente que o cliente realmente possui o token SAML emitido. A vantagem de uma chave de prova pública sobre uma chave simétrica é que o cliente não compartilha a chave secreta com o Security Token Service (STS) e a parte dependente. A chave de prova pública pode ser um certificado X509 ou uma chave pública Rivest Shamir Adleman (RSA).<trust:UseKey>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>MIIGCzCCBPOgAwIBAgIQcSgVwaoQv6dG. . .1GqB
</X509Certificate>
</X509Data>
</KeyInfo>
</trust:UseKey>
<saml:SubjectConfirmation>
<saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:holder-of-key</saml:ConfirmationMethod>
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:KeyValue>
<ds:RSAKeyValue>
<ds:Modulus>hYHQm. . . ZnH1S0=</ds:Modulus>
<ds:Exponent>AQAB</ds:Exponent>
</ds:RSAKeyValue>
</ds:KeyValue>
</ds:KeyInfo>
</saml:SubjectConfirmation>