Loading
Identificar sus usuarios y gestionar el acceso
Flujo de afirmación de soporte SAML de OAuth 2.0 para aplicaciones autorizadas previamente

Flujo de afirmación de soporte SAML de OAuth 2.0 para aplicaciones autorizadas previamente

Con el flujo de afirmación de soporte SAML de OAuth 2.0, un cliente (a través de una aplicación conectada) puede utilizar autorización previa suministrando una afirmación SAML 2.0 firmada para solicitar un token de acceso OAuth. La firma digital aplicada a la afirmación SAML autentica la aplicación autorizada. Una afirmación de SAML es un token de seguridad XML emitido por un proveedor de identidad y consumido por un proveedor de servicio. El proveedor de servicio se basa en su contenido para identificar al asunto de la afirmación para fines relacionados con la seguridad.

Ediciones necesarias

Disponible en: Salesforce Classic y Lightning Experience
Disponible en: Todas las ediciones

El flujo de afirmación de soporte SAML de OAuth 2.0 es similar al flujo de un token de actualización dentro de OAuth. La afirmación SAML se publica en el extremo del token de OAuth, que a su vez procesa la afirmación y emite un access_token basÔndose en la aprobación anterior de la aplicación. Sin embargo, el cliente no necesita tener o almacenar un refresh_token ni necesita pasar un client_secret al extremo de tokens.

El flujo de afirmación del soporte SAML de OAuth 2.0 implica estos pasos.

  1. Cree una aplicación conectada y registre un certificado X509. Este certificado se corresponde con la clave privada de la aplicación. Cuando se guarda la aplicación conectada, la clave del consumidor (client_id de OAuth) se genera y asigna a la aplicación.
  2. Escriba una aplicación que genere una afirmación SAML y fírmela con la clave privada.
  3. Para implementar el flujo, la aplicación conectada publica la afirmación de soporte SAML en el extremo de tokens de Salesforce.
  4. Salesforce valida la firma utilizando el certificado registrado para la aplicación conectada. AdemÔs, valida la audiencia, el emisor, el asunto y la validez de la afirmación.
  5. Suponiendo que la afirmación es vÔlida y que el usuario o administrador autorizó la aplicación anteriormente, Salesforce emite un token de acceso.
    Nota
    Nota Este flujo no admite tokens de actualización.

Crear una afirmación de soporte SAML

Cree una afirmación de soporte SAML vÔlida que incluya estos parÔmetros.

ParÔmetro Descripción
Issuer El valor debe ser el client_id OAuth de la aplicación conectada para la que el desarrollador registró su certificado.
Audience El valor debe ser https://login.salesforce.com o https://test.salesforce.com.
Recipient

El valor debe ser una de estas URL.

  • https://<URL_Inicio_Sesión_Mi_Dominio>/services/oauth2/token
  • https://login.salesforce.com/services/oauth2/token
  • https://test.salesforce.com/services/oauth2/token
  • https://<site_URL>/services/oauth2/token

    PodrÔ encontrar su URL de inicio de sesión de Mi dominio en la pÔgina Configuración de Mi dominio.

    Si estĆ” implementando este flujo para un sitio de Experience Cloud, introduzca la URL del sitio, como acme.my.site.com/customers.

Subject NameID Este valor debe ser el nombre de usuario del usuario de Salesforce.

La afirmación de soporte SAML debe ajustarse también a estas reglas.

A continuación se incluye una afirmación de muestra.

<?xml version="1.0" encoding="UTF-8"?>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="_cd3649b3639560458bc9d9b33dfee8d21378409114655" IssueInstant="2013-09-05T19:25:14.654Z" Version="2.0">
  <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">3MVG9PhR6g6B7ps45QoRvhVGGMmR_DT4kxXzVXOo6TTHF3QO1nmqOAstC92 4qSUiUeEDcuGV4tmAxyo_fV8j</saml:Issuer>
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
    <ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
    <ds:Reference URI="#_cd3649b3639560458bc9d9b33dfee8d21378409114655">
      <ds:Transforms>
      <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
      <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="ds saml"/>
      </ds:Transform>
      </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    <ds:DigestValue>N8DxylbIeNg8JDO87WIqXGkoIWA=</ds:DigestValue>
    </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>
XV0lFJrkhJykGYQbIs0JBFEHdt4pe2gBgitcXrscNVX2hKGpwQ+WqjF8EKrqV4Q3/Q4KglrXl/6s
xJr6WOmxWtIQC4oWhSvVyfag34zQoecZeunEdFSMlnvPtqBVzJu9hJjy/QDqDWfMeWvF9S50Azd0
EhJxz/Ly1i28o4aCXQQ=
    </ds:SignatureValue>
    <ds:KeyInfo>
    <ds:X509Data>
    <ds:X509Certificate>
MIICOzCCAaSgAwIBAgIGAR7RRteKMA0GCSqGSIb3DQEBBQUAMGExCzAJBgNVBAYTAlVTMQswCQYD
VQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzENMAsGA1UEChMEUEFDUzENMAsGA1UECxME
U0ZEQzEPMA0GA1UEAxMGU0FNTDIwMB4XDTA5MDExMzE4MzUyN1oXDTE0MDExMTE4MzUyN1owYTEL
MAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMQ0wCwYDVQQK
EwRQQUNTMQ0wCwYDVQQLEwRTRkRDMQ8wDQYDVQQDEwZTQU1MMjAwgZ8wDQYJKoZIhvcNAQEBBQAD
gY0AMIGJAoGBAJNGcu8nW6xq2l/dAgbJmSfHLGRn+vCuKWY+LAELw+Kerjaj5Dq3ZGW38HR4BmZk
sG3g4eA1RXn1hiZGI1Q6Ei59QE/OZQx2zVSTb7+oIwRcDHEB1+RraYT3LJuh4JwUDVfEj3WgDnTj
E5vD46l/CR5EXf4VL8uo8T40FkA51AhTAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAehxggY6tBl8x
1SSvCUyUIHvxssAn1AutgZLKWuR1+FXfJzdVdE2F77nrV9YifIERUwhONiS82mBOkKqZZPL1hcKh
KSnFZN2iWmm1sspL73I/eAwVsOUj+bS3v9POo4ceAD/QCCY8gUAInTH0Mq1eOdJMhYKnw/blUyqj
Zn9rajY=
    </ds:X509Certificate>
    </ds:X509Data>
    </ds:KeyInfo>
  </ds:Signature>
<saml:Subject xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">test@example.org</saml:NameID>
  <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
  <saml:SubjectConfirmationData NotOnOrAfter="2013-09-05T19:30:14.654Z" Recipient="https://login.salesforce.com/services/oauth2/token"/>
  </saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotBefore="2013-09-05T19:25:14.654Z" NotOnOrAfter="2013-09-05T19:30:14.654Z" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:AudienceRestriction xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:Audience>https://login.salesforce.com/services/oauth2/token</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
  <saml:AuthnStatement AuthnInstant="2013-09-05T19:25:14.655Z" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
    <saml:AuthnContext xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
    <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</saml:AuthnContextClassRef>
    </saml:AuthnContext>
  </saml:AuthnStatement>
</saml:Assertion>

Solicitar un token de acceso

La aplicación conectada publica afirmaciones de soporte SAML en el extremo de tokens de Salesforce.

A continuación se incluye una solicitud de token de muestra.

POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Content-Type: application/x-www-form-urlencoded

grant_type= urn:ietf:params:oauth:grant-type:saml2-bearer&
assertion=PHNhbWxwOl...[omitted for brevity]...ZT

Cuando se publique, deberƔn proporcionarse estos parƔmetros.

Importante
Importante Cuando desarrolle integraciones de OAuth, pase siempre información confidencial en el cuerpo de una solicitud POST o en un encabezado de solicitud. No utilice parÔmetros GET en la cadena de consulta de URL para pasar información confidencial. La información confidencial incluye, entre otros, nombres de usuario, contraseñas, tokens de OAuth, secretos de cliente y cualquier información de identificación personal. Para obtener mÔs información sobre las prÔcticas recomendadas de seguridad, consulte Almacenamiento de datos confidenciales en la Guía de codificación segura.
ParÔmetro Descripción
grant_type El tipo de otorgamiento de OAuth 2.0 que solicita la aplicación conectada. El valor debe ser urn:ietf:params:oauth:grant-type:saml2-bearer
assertion La afirmación de soporte SAML, con codificación base64url como se define aquí: http://tools.ietf.org/html/rfc4648#page-7.

TambiƩn puede incluir estos parƔmetros estƔndar.

ParÔmetro Descripción
format

Si no se incluye en el encabezado de la solicitud, puede especificar el formato de devolución esperado. El parÔmetro format tiene preferencia sobre el encabezado de la solicitud. Se admiten estos formatos.

  • urlencoded
  • json predeterminados
  • xml
scope No puede especificar Ômbitos en un flujo de afirmación de soporte SAML. En su lugar, el valor de este parÔmetro es la combinación de los Ômbitos emitidos de tokens de acceso anteriores.

Salesforce otorga un token de acceso

Después de verificar la solicitud, Salesforce envía una respuesta al cliente. Las respuestas para los tokens del flujo del token de soporte SAML de OAuth 2.0 siguen el mismo formato que los flujos authorization_code, aunque nunca se emite ningún refresh_token.

Nota
Nota Las solicitud de flujo de soporte de afirmación de SAML y de soporte JWT de OAuth 2.0 comprueban todas las aprobaciones anteriores para el usuario que incluyan un token de actualización. Si Salesforce encuentra aprobaciones coincidentes, combina los valores de los Ômbitos aprobados. Salesforce emite a continuación un token de acceso. Si Salesforce no encuentra aprobaciones previas que incluían un token de actualización o ningún Ômbito aprobado disponible, la solicitud falla como no autorizada.
 
Cargando
Salesforce Help | Article