OAuth 2.0 para aplicaciones de primera parte: Generar un JWT de certificación de cliente
Cuando utilice flujos de identidad desatendidos que implementan el estándar borrador de OAuth 2.0 para aplicaciones de primera parte, utilice un JWT de certificado de cliente para probar que las aplicaciones que envían solicitudes a Salesforce son aplicaciones de primera parte creadas por su compañía.
Ediciones necesarias
| Disponible en: Salesforce Classic y Lightning Experience |
| Disponible en: Enterprise Edition, Unlimited Edition y Developer Edition |
Salesforce requiere que un JWT esté firmado empleando RSA SHA256, que utiliza un certificado cargado como el secreto de firmas. Antes de empezar, complete estos requisitos previos.
- Cargue un certificado X509 en un Java Key Store (JKS). El tamaño del certificado no puede superar los 4 KB. En caso contrario, intente utilizar un archivo con codificación DER para reducir el tamaño.
- Registre el certificado con su aplicación cliente externa utilizando el campo
clientAssertionCertificateen el tipo ExtlClntAppOauthSettings. - Construya una aplicación que genere un JWT, que está firmado con la clave privada del certificado X509. La aplicación cliente externa asociada utiliza el certificado para verificar la firma. El JWT debe cumplir las reglas generales de formato especificadas en https://tools.ietf.org/html/rfc7519.
Nota Salesforce no requiere reclamaciones de Id. de JWT ID (JTI) en sus tokens de soporte de JWT. Sin embargo, si pasa una reclamación de JTI en su token de soporte de JWT, Salesforce valida que la reclamación de JTI no se envió antes. Esta validación evita ataques de reproducción de JWT.
Para crear un JWT válido, siga estos pasos.
-
Cree un encabezado JWT con este formato:
{"alg":"RS256"}. -
El encabezado JWT tiene una codificación Base64, tal y como se define en http://tools.ietf.org/html/rfc4648#page-7. El resultado es similar a
eyJhbGciOiJSUzI1NiJ9. -
Cree un conjunto de solicitudes de JSON para el JWT con estos parámetros.
Parámetro Descripción issEl emisor debe contener client_idde OAuth para la aplicación cliente externa para la que registró el certificado.audLa audiencia identifica el servidor de autorización como una audiencia dirigida. El servidor de autorización debe verificar que es una audiencia dirigida para el token.
Utilice su URL de sitio de Experience Cloud, como https://MyExperienceCloudSite.my.site.com.
expLa fecha y hora a la que caduca el token, expresada como el número de segundos desde 1970-01-01T0:0:0Z según la zona horaria UTC. Salesforce permite a 3 minutos de desfase de reloj. Por ejemplo, si la hora de caducidad está establecida en 1735743600 segundos o el 1 de enero de 2025 a las 15:00:00 UTC, el token sigue válido hasta las 15:03:00 UTC en esta fecha. Este es un conjunto de reclamaciones JWT de ejemplo.{"iss": "3MVG99OxTyEMCQ3gNp2PjkqeZKxnmAiG1xV4oHh9AKL_rSK.BoSVPGZHQ ukXnVjzRgSuQqGn75NL7yfkQcyy7", "aud": "https://MyExperienceCloudSite.my.site.com", "exp": "1333685628"} -
Codifique con Base64url el conjunto de solicitudes de JWT sin saltos de línea. A continuación se incluye un ejemplo.
eyJpc3MiOiAiM01WRzk5T3hUeUVNQ1EzZ05wMlBqa3FlWkt4bm1BaUcxeFY0b0hoOUFLTF9yU0su Qm9TVlBHWkhRdWtYblZqelJnU3VRcUduNzVOTDd5ZmtRY3l5NyIsICJwcm4iOiAibXlAZW1haWwu Y29tIiwgImF1ZCI6ICJodHRwczovL2xvZ2luLnNhbGVzZm9yY2UuY29tIiwgImV4cCI6ICIxMzMz Njg1NjI4In0= -
Cree una cadena para el encabezado de JWT codificado y el conjunto de solicitudes de JWT codificado con este formato.
encoded_JWT_Header + "." + encoded_JWT_Claims_SetEn este ejemplo, el encabezado de JWT codificado está resaltado.eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiAiM01WRzk5T3hUeUVNQ1EzZ05wMlBqa3FlWkt4bm1BaUcxeFY0b0hoOUFLTF9yU0su Qm9TVlBHWkhRdWtYblZqelJnU3VRcUduNzVOTDd5ZmtRY3l5NyIsICJwcm4iOiAibXlAZW1haWwu Y29tIiwgImF1ZCI6ICJodHRwczovL2xvZ2luLnNhbGVzZm9yY2UuY29tIiwgImV4cCI6ICIxMzMz Njg1NjI4In0= - Descargue el certificado X509 desde el JKS.
- Firme la cadena resultante utilizando RSA SHA256.
-
Cree una cadena de la cadena desde el paso 5. Cree la cadena en este formato.
existing_string + "." + base64_encoded_signatureEn este ejemplo, la firma con codificación base64 está resaltada.eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiAiM01WRzk5T3hUeUVNQ1EzZ05wMlBqa3FlWkt4bm1BaUcxeFY0b0hoOUFLTF9yU0su Qm9TVlBHWkhRdWtYblZqelJnU3VRcUduNzVOTDd5ZmtRY3l5NyIsICJwcm4iOiAibXlAZW1haWwu Y29tIiwgImF1ZCI6ICJodHRwczovL2xvZ2luLnNhbGVzZm9yY2UuY29tIiwgImV4cCI6ICIxMzMz Njg1NjI4In0=.iYCthqWCQucwi35yFs-nWNgpF5NA_a46fXDTNIY8ACko6BaEtQ9E6h4Hn1l_pcwcK I_GlmfUO2dJDg1A610t09TeoPagJsZDm_H83bsoZUoI8LpAA1s-2aj_Wbysqb1j4uDToz 480WtEbkwIv09sIeS_-QuWak2RXOl1Krnf72mpVGS4WWSULodgNzlKHHyjAMAHiBHIDNt 36y2L2Bh7M8TNWiKa_BNM6s1FNKDAwHEWQrNtAeReXgRy0MZgQY2rZtqT2FcDyjY3JVQb En_CSjH2WV7ZlUwsKHqGfI7hzeEvVdfOjH9NuaJozxvhPF489IgW6cntPuT2V647JWi7ngUtilice el JWT firmado en el parámetroclient_assertioncuando configure flujos desatendidos utilizando el estándar OAuth 2.0 para aplicaciones de primera parte.

