Definições de Criptografia no OAM

Este artigo aborda as várias propriedades de configuração de criptografia no OAM que são usadas para afetar as trocas de SSO da Federação, incluindo:

Algoritmos de Hash

O OAM suporta o consumo e a emissão de mensagens SAML assinadas com

Por padrão, o OAM usa SHA-1 ao assinar mensagens de saída.

As mensagens são assinadas de maneira diferente, com base no binding que está sendo usado:

SHA-1

Um exemplo de mensagem AuthnRequest assinada enviada por meio do binding HTTP-Redirect é:

https://acme.com/idp/saml20?SAMLRequest=hVPLbtswEPwVgT1LpB6tY8JyoNZ1q9ZujVgJ3N4Yio5ZSKTMpaz470v5ESQB4gA8LWZ2ZnaXo%2BvHuvJ2woDUKkVhQJAnFNelVA8pui2m%2FhXywDJVskorkaK9AHQ9HgGrq4Zmrd2oG7FtBVjPNVJAS5COuLG2oRh3XRd0ca%2B%2FruIoOPN0IOU8aba1MxeDtpXXKj1AeoOxUq7R%2BMX0py%2Fko5iQiKsWd3rj%2FAzyfPN%2FnJd88lCV5Lv37URBuFrGzWTVVaWRgAgL6sq3X0xgln3NaxpBcLjo%2BrLzzH%2BDw%3D%3D&RelayState=id-AkgTE5PMRAZTaKRcZHT-2rIse-oPhCxyI00Xycbf&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=rjZFsFuaFKv77JbspdDwT2wGV366iL3zvWc%2B1aybu%2FW%2BpFwLOfTJBtVsKfwJre1nGCU5SEvFD%2FBBURkxOG1KhR3k%2FrOw%2Bj7g7RlHfSaHKaAO3p6aAGQYPCpz%2Fd0%2BKArDAL%2FDNoH46G6Pnf7VWSb6a2COUiTV6118KaPbex

Um exemplo de uma Asserção SAML 2.0 enviada por meio da associação HTTP-POST é:

<samlp:Response ...<samlp:Response ...>
 <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">...
</saml:Issuer>
 <samlp:Status><samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/></samlp:Status> <saml:Assertion ID="id-BgLUimKUWYyS3JQbf2geeP9EwS-eGKxOPTuPvxgJ" ...> <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">...
</saml:Issuer>
 <dsig:Signature>
 <dsig:SignedInfo>
 <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-excc14n#"/>
<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsasha1"/>
 <dsig:Reference URI="#id-BgLUimKUWYyS3JQbf2geeP9EwS-eGKxOPTuPvxgJ">
 <dsig:Transforms>
 <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/>
 <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> </dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
 <dsig:DigestValue>uS85cIFf4z9KcHH/z60fNRPLoyo=</dsig:DigestValue>
 </dsig:Reference>
 </dsig:SignedInfo>
 <dsig:SignatureValue>NiTyPtOEjyG...SpVjbhKxY=</dsig:SignatureValue>
 </dsig:Signature>
 <saml:Subject>
 ...
 </saml:Subject> <saml:Conditions ...>
 ...
 </saml:Conditions> <saml:AuthnStatement ...>
 ...
 </saml:AuthnStatement>
 </saml:Assertion> </samlp:Response>

SHA-256

Um exemplo de mensagem AuthnRequest assinada enviada por meio do binding HTTP-Redirect é:

https://acme.com/idp/saml20?SAMLRequest=hVNdb9owFP0rkfec%2BCbAVixClY2hIdGWDui6vhnbFEuOndoOKfv1c%2Fio2kqlkp%2BuzrnnnHuvB5fPpYq2wjppdI7SBFAkNDNc6sccLRfj%2BAJFzlPNqTJa5GgnHLocDhwtVUWK2m%2F0b%2FFUC%2Bej0Eg7wp0MxI33FcG4%2F%2FFLDswb9bFN2dNp61G584V4vJ3o4PJUi7MYTXWaRd0vtKoP%2BAolHYsdTU71nHbJQzgEo8JbULASlTImGmJN%2B6%2FT5eC44lr3A7%2F20G6HAzZC9lo7GxJfXng7aVEGq9h4ZD8dLv0PCNNGPvpLMOQIYNLVv9AX4lebrZ69B1MpoZJdnuUxtpkrRelayState=id-BiQreMi9cMY3oFI9PKMNKtuOjpuFS2PrW4R8KKvd&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256&Signature=PvyMUD%2FKXnCc0drlN1pvoK171znJkajEHLgtzE4I7YFQIvP4wp3M%2FV7y08x0Qkv0jwo9K4VBG%2BQUBFtXr41ZDp%2BHOb7GlmaY973n7X2UDlbUbVlrJX%2FqS1GyyNY6MSMcO5K0J7VJcQXf8CvGEcVHr%2FZhPjihnAO2vi%2Bej3fbfgo%3D

Um exemplo de uma Asserção SAML 2.0 enviada por meio da associação HTTP-POST é:

<samlp:Response ...<samlp:Response ...>
 <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">...
</saml:Issuer>
 <samlp:Status><samlp:StatusCode
Value="urn:oasis:names:tc:SAML:2.0:status:Success"/></samlp:Status> <saml:Assertion ID="id-5B4KZ-PeUzikxtC-Cr9g6uFQ-muwj3ZmC4PUW4wT" ...> <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">...
</saml:Issuer>
 <dsig:Signature>
 <dsig:SignedInfo>
 <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-excc14n#"/>
<dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsasha256"/>
 <dsig:Reference URI="#id-5B4KZ-PeUzikxtC-Cr9g6uFQ-muwj3ZmC4PUW4wT">
 <dsig:Transforms>
 <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/>
 <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
 </dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
 <dsig:DigestValue>Ppx/...L9ooHtsvgxvI=</dsig:DigestValue>
 </dsig:Reference>
 </dsig:SignedInfo>
 <dsig:SignatureValue>G6yppQXy...SzHz2oa+zA=</dsig:SignatureValue>
 </dsig:Signature>
 <saml:Subject>
 ...
 </saml:Subject> <saml:Conditions ...>
 ...
 </saml:Conditions> <saml:AuthnStatement ...>
 ...
 </saml:AuthnStatement>
 </saml:Assertion> </samlp:Response>

Comando WLST

O OAM pode ser configurado para usar SHA-1 ou SHA-256 em assinaturas SAML:

O comando WLST configureFedDigitalSignature() do OAM é usado para configurar como o OAM deve calcular uma assinatura:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. Execute o comando configureFedDigitalSignature(): configureFedDigitalSignature(partner="", partnerProfile="", partnerType="",default="false", algorithm="SHA-256", displayOnly="false", delete="false").

  5. Os seguintes parâmetros podem ser definidos:

    Um exemplo é:

    configureFedDigitalSignature(partner="AcmeIdP", partnerType="idp", algorithm="SHA-256")

  6. Saia do ambiente WLST: exit()

Assinando Mensagens Enviadas

Configuração do OOTB

Abaixo estão as definições boolianas do OOTB que indicam quando o OAM precisa assinar mensagens SAML de saída (se verdadeiro, o OAM assina as mensagens de saída):

Configuração

Suponha que você já esteja no ambiente WLST e conectado usando:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

SAML 2.0 AuthnRequest

Para configurar o OAM para assinar um SAML 2.0 AuthnRequest de saída, execute um dos seguintes comandos:

Outras Definições

Para configurar as propriedades definidas nos Perfis de Parceiro SP/IdP acima, execute um dos seguintes comandos:

Metadados

A alteração da propriedade saml20sendsignedauthnrequest em um nível global altera os Metadados SAML 2.0 gerados pelo OAM, como:

O AuthnRequestsSignedattribute no elemento SPSSODescriptor é definido com base em saml20sendsignedauthnrequest.

Uma amostra de Metadados SAML 2.0 mostra esses dois atributos:

<md:EntityDescriptor ...>
 <dsig:Signature>
 ...
 </dsig:Signature> <md:IDPSSODescriptor WantAuthnRequestsSigned="false" ...>
 ...
 </md:IDPSSODescriptor>
 <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true"
...>
 </md:SPSSODescriptor> </md:EntityDescriptor>

Exigindo que as Mensagens sejam Assinadas

Configuração do OOTB

Veja a seguir as definições boolianas do OOTB que controlam quando o OAM precisa exigir que as mensagens SAML de entrada sejam assinadas (se verdadeiro, o OAM exigirá que a mensagem de entrada seja assinada):

Observação Importante: Se uma mensagem de entrada for assinada, o OAM a verificará e retornará um erro se a validação da assinatura falhar, mesmo que o OAM não exija que esse tipo de mensagem seja assinado.

Configuração

Suponha que você já esteja no ambiente WLST e conectado usando:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

SAML 2.0 AuthnRequest

Para configurar o OAM para exigir ou não que as mensagens AuthnRequest de entrada sejam assinadas, execute um dos seguintes comandos:

Asserção SAML 1.1 contida em uma mensagem de Resposta

Para configurar o OAM para exigir ou não a assinatura das Asserções SAML 1.1 recebidas, execute um dos seguintes comandos:

Asserção SAML 2.0 contida em uma mensagem de Resposta

Para configurar o OAM para exigir ou não a assinatura das Asserções SAML 2.0 recebidas, execute um dos seguintes comandos:

Outras Definições

Para configurar as propriedades definidas nos Perfis de Parceiro SP/IdP acima, execute um dos seguintes comandos:

Metadados

A alteração das propriedades saml20requiresignedauthnrequest ou saml20requiresignedassertion em um nível global altera os Metadados SAML 2.0 gerados pelo OAM, como:

Uma amostra de Metadados SAML 2.0 mostra esses dois atributos:

<md:EntityDescriptor ...>
 <dsig:Signature>
 ...
 </dsig:Signature>
 <md:IDPSSODescriptor WantAuthnRequestsSigned="false" ...>
 ...
 </md:IDPSSODescriptor>
 <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true"
...>
 </md:SPSSODescriptor> </md:EntityDescriptor>

X.509 Certificado na Mensagem

O OAM pode ser configurado para enviar o certificado de assinatura X.509 na mensagem SAML XML de saída enviada por meio das associações HTTP-POST ou SOAP.

A propriedade booliana includecertinsignature indica se o certificado foi adicionado ou não à mensagem.

Para configurar o OAM para enviar o certificado de assinatura X.509 na mensagem de saída, execute um dos seguintes comandos para definir a propriedade booliana includecertinsignature:

Criptografia SAML 2.0

O protocolo SAML 2.0 define uma forma de criptografar vários dados em mensagens:

O OAM permite que um administrador indique quais tipos de dados devem ser criptografados.

Configuração do OOTB

Veja a seguir as definições boolianas do OOTB que indicam quando o OAM precisa criptografar mensagens SAML de saída (se verdadeiro, o OAM criptografa os dados de saída):

Ao criar um novo Parceiro SP, a configuração desse Parceiro indica que o IdP não deve criptografar a Asserção:

Asserção criptografada

Para configurar IdP para criptografar a Asserção de saída de um Parceiro SP por meio da Console de Administração do OAM, execute as seguintes etapas:

  1. Vá para a Console de Administração do OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.
  2. Navegue até Federação de Identidade, Administração do Provedor de Identidade.
  3. Abra o Parceiro SP.
  4. Na seção Avançado, marque a caixa de seleção Criptografar Asserção.
  5. Clique em Salvar.

Descrição da ilustração Access_Management.jpg

Para configurar o Parceiro SP via WLST, execute as seguintes etapas:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.
  2. Conecte-se ao servidor de Administração WLS: connect().
  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().
  4. Execute o comando updatePartnerProperty(): updatePartnerProperty("PARTNER", "sp", "sendencryptedassertion", "true/false","boolean")
    1. Substitua PARTNER por um nome de Parceiro.
    2. Defina o valor como verdadeiro ou falso.
    3. Um exemplo é: updatePartnerProperty("AcmeSP", "sp", "sendencryptedassertion", "true","boolean")
  5. Saia do ambiente WLST: exit().

NameID/Atributos Criptografados

Para configurar as propriedades, siga estas etapas:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.
  2. Conecte-se ao servidor de Administração WLS: connect().
  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().
  4. Execute um destes comandos:
    1. Para configurar em um nível de Perfil do parceiro, execute: putBooleanProperty("/fedpartnerprofiles/PARTNER_PROFILE/PROPERTY_NAME", "true/false")
      1. Substitua PARTNER_PROFILE por um nome de Perfil de Parceiro.
      2. Substitua PROPERTY_NAME pelo nome da propriedade a ser definida.
      3. Defina o valor como verdadeiro ou falso.
      4. Um exemplo é: putBooleanProperty("/fedpartnerprofiles/saml20-sp-partner-profile/sendencryptedattribute", "true")
    2. Para configurar em um nível de Parceiro, execute: updatePartnerProperty("PARTNER", "PARTNER_TYPE", "PROPERTY_NAME","true/false", "boolean")
      1. Substitua PARTNER por um nome de Parceiro.
      2. Substitua PARTNER_TYPE pelo tipo de Parceiro especificado (idp ou sp).
      3. Substitua PROPERTY_NAME pelo nome da propriedade a ser definida.
      4. Defina o valor como verdadeiro ou falso.
      5. Um exemplo é: updatePartnerProperty("AcmeSP", "sp", "sendencryptedattribute", "true","boolean")
  5. Saia do ambiente WLST: exit()

Algoritmo de Criptografia

O algoritmo de criptografia pode ser definido no nível do Parceiro ou no nível do Perfil do Parceiro, definindo a propriedade de string defaultencryptionmethod para um dos seguintes valores:

Por padrão, essa propriedade é definida como http://www.w3.org/2001/04/xmlenc#aes128-cbc (AES-128 CBC).

Para configurar a propriedade defaultencryptionmethod, siga estas etapas:

  1. Informe o ambiente WLST executando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conecte-se ao servidor de Administração WLS: connect().

  3. Navegue até a ramificação Runtime do Domínio: domainRuntime().

  4. Execute um destes comandos:

    1. Para configurar em um nível de Perfil do parceiro, execute:

      putStringProperty("/fedpartnerprofiles/PARTNER_PROFILE/defaultencryptionmethod", "ALGORITHM")

      1. Substitua PARTNER_PROFILE por um nome de Perfil de Parceiro.

      2. Substitua ALGORITHM por um dos valores de algoritmo acima.

      3. Um exemplo é:

      putStringProperty("/fedpartnerprofiles/saml20-sp-partner-profile/defaultencryptionmethod", "http://www.w3.org/2001/04/xmlenc#tripledes-cbc")

    2. Para configurar em um nível de Parceiro, execute:

      updatePartnerProperty("PARTNER", "PARTNER_TYPE","defaultencryptionmethod", "ALGORITHM", "string")

      1. Substitua PARTNER por um nome de Parceiro.

      2. Substitua PARTNER_TYPE pelo tipo de Parceiro especificado (idp ou sp).

      3. Substitua ALGORITHM por um dos valores de algoritmo acima.

      4. Um exemplo é:

      updatePartnerProperty("AcmeSP", "sp", "defaultencryptionmethod","http://www.w3.org/2001/04/xmlenc#tripledes-cbc", "string")

  5. Saia do ambiente WLST: exit()

Mais Recursos de Aprendizagem

Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.