Configuración de cifrado en OAM

En este artículo se tratan las distintas propiedades de configuración de cifrado en OAM que se utilizan para afectar a los intercambios de SSO de federación, incluidos:

Algoritmos de hash

OAM soporta el consumo y la emisión de mensajes SAML firmados con

Por defecto, OAM utiliza SHA-1 al firmar mensajes salientes.

Los mensajes se firman de forma diferente, según el enlace utilizado:

SHA-1 (Fin de creación)

Un ejemplo de un mensaje AuthnRequest firmado enviado mediante el enlace HTTP-Redirect es:

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

Un ejemplo de una afirmación de SAML 2.0 enviada mediante el enlace HTTP-POST es:

<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 (Fin de actualización)

Un ejemplo de un mensaje AuthnRequest firmado enviado mediante el enlace HTTP-Redirect es:

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

Un ejemplo de una afirmación de SAML 2.0 enviada mediante el enlace HTTP-POST es:

<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

OAM se puede configurar para utilizar SHA-1 o SHA-256 en firmas de SAML:

El comando WLST configureFedDigitalSignature() de OAM se utiliza para configurar cómo OAM debe calcular una firma:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conéctese al servidor de administración de WLS: connect().

  3. Navegue a la rama Domain Runtime: domainRuntime().

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

  5. Se pueden configurar los siguientes parámetros:

    Un ejemplo es:

    configureFedDigitalSignature(partner="AcmeIdP", partnerType="idp", algorithm="SHA-256") (Fin de creación)

  6. Salga del entorno WLST: exit()

Firma de Mensajes Salientes

Configuración de OOTB

A continuación se muestra la configuración booleana de OOTB que indica cuándo OAM debe firmar los mensajes de SAML salientes (si es verdadero, OAM firma los mensajes salientes):

Configuración

Supongamos que ya está en el entorno WLST y conectado mediante:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conéctese al servidor de administración de WLS: connect().

  3. Navegue a la rama Domain Runtime: domainRuntime().

SAML 2.0 AuthnRequest

Para configurar OAM para que firme un SAML 2.0 AuthnRequest saliente, ejecute uno de los siguientes comandos:

Otra Configuración

Para configurar las propiedades definidas en los perfiles de socio SP/IdP anteriores, ejecute uno de los siguientes comandos:

Metadatos

Al cambiar la propiedad saml20sendsignedauthnrequest a nivel global, se cambian los metadatos de SAML 2.0 generados por OAM, como:

La AuthnRequestsSignedattribute del elemento SPSSODescriptor se define según saml20sendsignedauthnrequest.

Un ejemplo de metadatos de SAML 2.0 muestra estos dos atributos:

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

Requiere que se firmen los mensajes

Configuración de OOTB

A continuación se muestran los valores booleanos de OOTB que controlan cuándo OAM necesita que se firmen los mensajes de SAML entrantes (si es verdadero, OAM necesita que se firme el mensaje entrante):

Nota importante: si se firma un mensaje entrante, OAM lo verifica y devuelve un error si falla la validación de firma, incluso si OAM no necesita que se firme ese tipo de mensaje.

Configuración

Supongamos que ya está en el entorno WLST y conectado mediante:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conéctese al servidor de administración de WLS: connect().

  3. Navegue a la rama Domain Runtime: domainRuntime().

SAML 2.0 AuthnRequest

Para configurar OAM para que requiera o no la firma de los mensajes entrantes de AuthnRequest, ejecute uno de los siguientes comandos:

Afirmación SAML 1.1 contenida en un mensaje de respuesta

Para configurar OAM para que requiera o no la firma de las afirmaciones de SAML 1.1 entrantes, ejecute uno de los siguientes comandos:

Afirmación de SAML 2.0 contenida en un mensaje de respuesta

Para configurar OAM para que requiera o no la firma de las afirmaciones de SAML 2.0 entrantes, ejecute uno de los siguientes comandos:

Otra Configuración

Para configurar las propiedades definidas en los perfiles de socio SP/IdP anteriores, ejecute uno de los siguientes comandos:

Metadatos

Al cambiar las propiedades saml20requiresignedauthnrequest o saml20requiresignedassertion a nivel global, se cambian los metadatos de SAML 2.0 generados por OAM, como:

Un ejemplo de metadatos de SAML 2.0 muestra estos dos 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 en el mensaje

OAM se puede configurar para enviar el certificado de firma X.509 en el mensaje XML SAML saliente enviado a través de los enlaces HTTP-POST o SOAP.

La propiedad booleana includecertinsignature indica si el certificado se ha agregado o no al mensaje.

Para configurar OAM para que envíe el certificado de firma X.509 en el mensaje saliente, ejecute uno de los siguientes comandos para definir la propiedad booleana includecertinsignature:

Cifrado de SAML 2.0

El protocolo SAML 2.0 define una forma de cifrar varios datos en mensajes:

OAM permite a un administrador indicar qué tipos de datos se deben cifrar.

Configuración de OOTB

A continuación se muestran los valores booleanos de OOTB que indican cuándo OAM debe cifrar los mensajes de SAML salientes (si es verdadero, OAM cifra los datos salientes):

Al crear un nuevo partner de SP, la configuración de dicho partner indica que IdP no debe cifrar la afirmación:

Afirmación cifrada

Para configurar IdP para cifrar la afirmación saliente para un partner de SP a través de la consola de administración de OAM, realice los siguientes pasos:

  1. Vaya a la consola de administración de OAM: http(s)://oam-admin-host:oam-adminport/oamconsole.
  2. Vaya a Federación de identidad, Administración de proveedores de identidad.
  3. Abra el socio del SP.
  4. En la sección Avanzado, active la casilla de control Cifrar afirmación.
  5. Haga clic en Guardar.

Descripción de la ilustración Access_Management.jpg

Para configurar el socio de SP mediante WLST, realice los siguientes pasos:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.
  2. Conéctese al servidor de administración de WLS: connect().
  3. Navegue a la rama Domain Runtime: domainRuntime().
  4. Ejecute el comando updatePartnerProperty(): updatePartnerProperty("PARTNER", "sp", "sendencryptedassertion", "true/false","boolean")
    1. Sustituya PARTNER por un nombre de socio.
    2. Defina el valor en true o false.
    3. Un ejemplo es: updatePartnerProperty("AcmeSP", "sp", "sendencryptedassertion", "true","boolean")
  5. Salga del entorno WLST: exit().

NameID/Atributos cifrados

Para configurar las propiedades, realice los siguientes pasos:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.
  2. Conéctese al servidor de administración de WLS: connect().
  3. Navegue a la rama Domain Runtime: domainRuntime().
  4. Ejecute uno de los comandos siguientes:
    1. Para configurar en un nivel de perfil de socio, ejecute: putBooleanProperty("/fedpartnerprofiles/PARTNER_PROFILE/PROPERTY_NAME", "true/false")
      1. Sustituya PARTNER_PROFILE por un nombre de perfil de partner.
      2. Sustituya PROPERTY_NAME por el nombre de la propiedad que se va a definir.
      3. Defina el valor en true o false.
      4. Un ejemplo es: putBooleanProperty("/fedpartnerprofiles/saml20-sp-partner-profile/sendencryptedattribute", "true")
    2. Para configurar a nivel de partner, ejecute: updatePartnerProperty("PARTNER", "PARTNER_TYPE", "PROPERTY_NAME","true/false", "boolean")
      1. Sustituya PARTNER por un nombre de socio.
      2. Sustituya PARTNER_TYPE por el tipo de partner especificado (idp o sp).
      3. Sustituya PROPERTY_NAME por el nombre de la propiedad que se va a definir.
      4. Defina el valor en true o false.
      5. Un ejemplo es: updatePartnerProperty("AcmeSP", "sp", "sendencryptedattribute", "true","boolean")
  5. Salga del entorno WLST: exit()

algoritmo de cifrado

El algoritmo de cifrado se puede definir en el nivel Socio o Perfil de socio, definiendo la propiedad de cadena defaultencryptionmethod en uno de los siguientes valores:

Por defecto, esa propiedad está definida en http://www.w3.org/2001/04/xmlenc#aes128-cbc (AES-128 CBC).

Para configurar la propiedad defaultencryptionmethod, realice los siguientes pasos:

  1. Introduzca el entorno WLST ejecutando: $IAM_ORACLE_HOME/common/bin/wlst.sh.

  2. Conéctese al servidor de administración de WLS: connect().

  3. Navegue a la rama Domain Runtime: domainRuntime().

  4. Ejecute uno de los comandos siguientes:

    1. Para configurar en un nivel de perfil de socio, ejecute:

      putStringProperty("/fedpartnerprofiles/PARTNER_PROFILE/defaultencryptionmethod", "ALGORITHM") (Fin de creación)

      1. Sustituya PARTNER_PROFILE por un nombre de perfil de partner.

      2. Sustituya ALGORITHM por uno de los valores de algoritmo anteriores.

      3. Un ejemplo es:

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

    2. Para configurar a nivel de socio, ejecute:

      updatePartnerProperty("PARTNER", "PARTNER_TYPE","defaultencryptionmethod", "ALGORITHM", "string") (Fin de creación)

      1. Sustituya PARTNER por un nombre de socio.

      2. Sustituya PARTNER_TYPE por el tipo de partner especificado (idp o sp).

      3. Sustituya ALGORITHM por uno de los valores de algoritmo anteriores.

      4. Un ejemplo es:

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

  5. Salga del entorno WLST: exit()

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.