Loading
Identificar sus usuarios y gestionar el acceso
ƍndice de materias
Seleccionar filtros

          No hay resultados
          No hay resultados
          Estas son algunas sugerencias de bĆŗsqueda

          Compruebe la ortografĆ­a de sus palabras clave.
          Utilice términos de búsqueda mÔs generales.
          Seleccione menos filtros para ampliar su bĆŗsqueda.

          Buscar en toda la Ayuda de Salesforce
          OAuth 2.0 para aplicaciones de primera parte: Flujo de nombre de usuario-contraseƱa desatendido para clientes privados

          OAuth 2.0 para aplicaciones de primera parte: Flujo de nombre de usuario-contraseƱa desatendido para clientes privados

          Para configurar el inicio de sesión de nombre de usuario-contraseña para una aplicación sin plataforma desarrollada por su compañía, utilice este flujo de inicio de sesión de nombre de usuario-contraseña desatendido, que implementa el protocolo estÔndar borrador de OAuth 2.0 para aplicaciones de primera parte. Con este flujo, puede controlar completamente la experiencia de inicio de sesión de front-end en su aplicación de primera parte mientras Salesforce controla el trabajo de backend de autenticación de usuarios y otorgamiento de acceso a recursos protegidos. Este flujo solo es compatible con clientes privados, como aplicaciones cliente-servidor, y solo es compatible con usuarios externos

          Ediciones necesarias

          Disponible en: Salesforce Classic y Lightning Experience
          Disponible en: Enterprise Edition, Unlimited Edition y Developer Edition

          Para configurar el inicio de sesión de nombre de usuario-contraseña desatendido para un cliente privado, también puede utilizar esta versión del flujo Código de autorización y credenciales, que implementa las API de identidad desatendida. Ambos flujos realizan el mismo caso de uso: inicio de sesión de nombre de usuario-contraseña desatendido para una aplicación fuera de Salesforce Platform. Pero hay algunas diferencias clave a tener en cuenta.

          OAuth para aplicaciones propias API de identidad desatendida
          Admitido solo para clientes privados. Admitido para clientes pĆŗblicos y privados.
          Se ajusta al proyecto de protocolo de OAuth 2.0 para aplicaciones de primera parte. Flujo de Salesforce patentado que estƔ construido sobre el estƔndar de OAuth 2.0.
          Solo se admite para el marco de trabajo de la aplicación cliente externa Salesforce. Del mismo modo, la única forma de configurar parÔmetros de aplicación cliente externa para este flujo es a través de la API de metadatos. Compatible con la aplicación cliente externa Salesforce y los marcos de trabajo de aplicaciones conectadas.
          Por seguridad, este flujo siempre requiere un JWT de certificado de cliente. Salesforce utiliza el JWT de certificado de cliente para validar que la aplicación fue desarrollada por su compañía. Por seguridad, requiere autenticación o reCAPTCHA, pero no un JWT de certificado de cliente.

          Antes de configurar este flujo, complete estos pasos.

          De forma predeterminada, los usuarios ingresan su nombre de usuario para iniciar sesión. Para proporcionar a los usuarios mÔs opciones, configure el descubrimiento de usuarios desatendidos. Por ejemplo, desarrolle un flujo donde los usuarios ingresen su dirección de email, número de teléfono o incluso un número de pedido. Consulte Inicio de sesión desatendido sin un nombre de usuario.

          A continuación se muestra una descripción general del funcionamiento del flujo.

          • Paso 1: Un usuario final va a su aplicación de primera parte e inicia sesión a travĆ©s de su nombre de usuario y contraseƱa. O bien, si estĆ” utilizando el descubrimiento de usuarios desatendidos, ingresan un identificador como una dirección de email, un nĆŗmero de telĆ©fono o un nĆŗmero de pedido, junto con su contraseƱa.
          • Paso 2: Su aplicación de primera parte acuƱa un JWT de certificado de cliente y genera parĆ”metros para la extensión Proof Key for Code Exchange (PKCE).
          • Paso 3: Para obtener un código de autorización, su aplicación de primera parte envĆ­a una solicitud POST desatendida al extremo services/oauth2/v1/authorization_challenge en su sitio de Experience Cloud. La solicitud incluye un JWT de certificado de cliente junto con las credenciales del usuario.
          • Paso 4: Para confirmar que su aplicación externa envió la solicitud, Salesforce valida el JWT de certificado de cliente y luego valida los otros parĆ”metros.
          • (Opcional) Si estĆ” utilizando descubrimiento de usuarios desatendidos, su controlador Apex encuentra al usuario basĆ”ndose en el identificador que utilizó para iniciar sesión. Si las credenciales de usuario son vĆ”lidas y el usuario tiene una dirección de email o un nĆŗmero de telĆ©fono verificados, el inicio de sesión continĆŗa.
          • Paso 5: Si la solicitud se realiza correctamente, Salesforce devuelve un código de autorización.
          • Paso 6: Para intercambiar el código por un token de acceso, su aplicación de primera parte envĆ­a una solicitud al extremo /services/oauth2/token.
          • Paso 7: Salesforce devuelve una respuesta de token que contiene el token de acceso.
          • Paso 8: Su aplicación de primera parte procesa el token de acceso y crea la sesión del usuario.
          • Paso 9: El usuario final ahora inició sesión y realiza una acción en su aplicación que requiere acceso a un recurso de Salesforce protegido.
          • Paso 10: Su aplicación de primera parte realiza una llamada autenticada a una API de Salesforce.
          • Paso 11: El usuario ahora puede acceder a sus datos de Salesforce en su aplicación de primera parte.

          Paso 1: El usuario final abre la aplicación de primera parte e inicia sesión

          Un usuario final abre su aplicación de primera parte con la intención de iniciar sesión. En su aplicación, su formulario de inicio de sesión aparece mostrando campos de nombre de usuario y contraseña y un botón de inicio de sesión. Salesforce no proporciona este formulario de inicio de sesión. Su aspecto y comportamiento dependen de usted. Su usuario ingresa su nombre de usuario y contraseña y hace clic en el botón de inicio de sesión.

          Paso 2: La aplicación de primera parte acuña un JWT de certificado de cliente y genera valores de code_verifier y code_challenge

          La aplicación acuña un JWT de certificado de cliente.

          La aplicación también genera valores para los parÔmetros PKCE utilizados para verificar el código de autorización.

          Nota
          Nota Recomendamos encarecidamente que implemente siempre PKCE para este flujo. De lo contrario, no obtiene sus beneficios de seguridad.

          Para obtener mÔs información sobre PKCE, consulte la especificación RFC 7636: Clave de prueba para el intercambio de códigos por clientes públicos de OAuth proporcionado por Internet Engineering Task Force (IETF).

          La especificación PKCE definida en RFC 7636 también incluye un parÔmetro code_challenge_method opcional que puede enviar en la solicitud de autorización. Salesforce ignora cualquier valor que envíe en este parÔmetro y establece de forma predeterminada SHA256.

          Paso 3: La aplicación de primera parte solicita desatendidamente un código de autorización

          Desde el navegador, su aplicación envía las credenciales del usuario, junto con otros parÔmetros, al extremo services/oauth2/v1/authorization_challenge en su sitio de Experience Cloud a través de una solicitud POST desatendida.

          No hay encabezados obligatorios para esta solicitud. Opcionalmente, para conectar este flujo con el flujo de invitados desatendido, puede incluir un encabezado Uvid-Hint con un token de acceso basado en JWT que contiene un valor de Id. de visitante exclusivo (UVID).

          Extremo de solicitud POST inicial a reto de autorización: Encabezados
          Encabezado ¿Obligatorio? Descripción
          Uvid-Hint

          No. Si implementa el flujo de usuarios invitados en su aplicación, puede opcionalmente utilizar este encabezado para pasar en un token de acceso basado en JWT que contenga un UVID vinculado a la identidad de un usuario invitado. Al pasar el UVID a un flujo de usuario nombrado, puede llevar información contextual desde una sesión de usuario invitado, como las preferencias de cookies del usuario, a una sesión de usuario nombrada.

          En lugar de pasar un token basado en JWT con UVID en un encabezado, tambiƩn puede pasar el valor UVID sin formato en el cuerpo de la solicitud.

          Un token de acceso basado en JWT que contiene un valor UVID, que es un identificador exclusivo universal (UUID) de Versión 4 que su aplicación genera y gestiona completamente. Para obtener un token de acceso con UVID, debe activar su aplicación cliente externa o aplicación conectada para emitir tokens de acceso basados en JWT e implementar el flujo de invitados desatendido en su aplicación.

          Incluya estos parƔmetros en el cuerpo de la solicitud.

          Extremo de solicitud POST inicial a reto de autorización: ParÔmetros de cuerpo
          ParÔmetro ¿Obligatorio? Descripción
          code_challenge Obligatorio si requería PKCE para su aplicación cliente externa. Para que las funciones de seguridad de este flujo funcionen correctamente, recomendamos encarecidamente que siempre requiera PKCE.

          Especifica el valor de hash SHA256 del valor code_verifier en la solicitud de token. Establezca este parÔmetro para ayudar a evitar ataques de intercepción de códigos de autorización. El valor debe estar codificado con URL base 64 como se define en https://tools.ietf.org/html/rfc4648#section-5

          Si se proporciona code_challenge en la solicitud de autorización y se proporciona code_verifier en la solicitud de token, Salesforce compara los dos valores. Si code_challenge no es vÔlido o no coincide, el inicio de sesión falla con el código de error invalid_request.

          Si code_challenge se proporciona en la solicitud de autorización, pero no hay code_verifier en la solicitud de token, el inicio de sesión falla con el código de error invalid_grant.

          username Sí. El nombre de usuario que el usuario envió a su formulario de inicio de sesión.
          client_id Sí. La clave de consumidor de la aplicación cliente externa.
          password Sí. La contraseña que el usuario envió a su formulario de inicio de sesión.
          client_assertion Sí. El JWT de certificado de cliente que generó, firmado por el certificado configurado para su aplicación cliente externa.
          recaptcha

          Obligatorio si se le aplican estas condiciones:

          • Active Requerir reCAPTCHA para acceder al extremo de reto de autorización de OAuth 2.0 para flujos de autorización de inicio de sesión de nombre de usuario-contraseƱa en su configuración de Registro e inicio de sesión de Experience Cloud.
          • EstĆ” utilizando reCAPTCHA v2 o v3.
          Un token cifrado emitido por la API de reCAPTCHA de Google cuando un usuario completa un reto de reCAPTCHA.
          recaptchaevent

          Obligatorio si se le aplican estas condiciones:

          • Active Requerir reCAPTCHA para acceder al extremo de reto de autorización de OAuth 2.0 para flujos de autorización de inicio de sesión de nombre de usuario-contraseƱa en su configuración de Registro e inicio de sesión de Experience Cloud.
          • EstĆ” utilizando reCAPTCHA Enterprise.

          Un objeto JSON que contiene estos subparƔmetros.

          • token: Un token cifrado emitido por la API de reCAPTCHA de Google cuando un usuario completa un reto de reCAPTCHA.
          • siteKey: La clave del sitio de Google reCAPTCHA.
          • (Opcional)expectedAction: La acción que espera que el usuario realice para iniciar reCAPTCHA, como login. Este parĆ”metro se asigna al parĆ”metro action de Google.
          • projectId: El Id. de proyecto de Google.

          Para obtener mÔs información, consulte la documentación de reCAPTCHA de Google.

          scope No.

          Permisos que definen el tipo de recursos protegidos a los que puede acceder la aplicación cliente externa. Usted asigna Ômbitos a la aplicación cliente externa cuando la construye, y se incluyen con los tokens de OAuth durante el flujo de autorización.

          Utilice este parÔmetro para solicitar un subconjunto de los Ômbitos asignados a su aplicación cliente externa. Si no incluye este parÔmetro, se solicitan todos los Ômbitos asignados a la aplicación.

          uvid_hint

          No. Si implementa el flujo de usuario invitado en su aplicación, puede utilizar opcionalmente este parÔmetro para pasar en un valor UVID vinculado a la identidad de un usuario invitado, incluyendo información contextual desde una sesión de usuario invitado en una sesión de usuario nombrada.

          En lugar de pasar el UVID en el cuerpo de la solicitud, tambiƩn puede pasarla en un token basado en JWT con un UVID a travƩs del encabezado UVID-Hint.

          Un valor UVID sin formato, que es un UUID de versión 4 que genera y gestiona completamente por su aplicación. Para obtener UVID, debe activar su aplicación para emitir tokens de acceso basados en JWT e implementar el flujo de invitados desatendido en su aplicación. Puede opcionalmente utilizar este parÔmetro para pasar en un valor de UVID vinculado a la identidad de un usuario invitado, trasladando información contextual desde una sesión de usuario invitado a una sesión de usuario nombrada.

          En lugar de pasar el UVID en el cuerpo de la solicitud, tambiƩn puede pasarla en un token basado en JWT con un UVID a travƩs del encabezado UVID-Hint.

          login_hint Obligatorio si estÔ utilizando un controlador de Apex de descubrimiento de usuarios desatendido. Un identificador que su controlador de Apex utiliza para buscar la cuenta de Salesforce de un usuario. Por ejemplo, recopile el número de pedido de un usuario en su aplicación y pÔselo en el parÔmetro login_hint. Enviamos el valor login_hint directamente a su controlador de Apex.
          customdata

          Obligatorio si estÔ utilizando un controlador de descubrimiento de usuarios desatendido que gestiona datos personalizados. Por ejemplo, si también estÔ utilizando el controlador con un flujo de inicio de sesión que gestiona datos personalizados, debe pasar datos personalizados en el flujo de contraseña olvidada.

          De lo contrario, es opcional pero puede ser Ćŗtil para ayudar a su gestor a encontrar el usuario.

          Cadena JSON que contiene datos adicionales que su controlador de descubrimiento desatendido de Apex utiliza para buscar la cuenta de Salesforce de un usuario. Por ejemplo, pase información acerca de la configuración regional del usuario.

          A continuación se incluye un ejemplo de solicitud al extremo de reto de autorización.

          POST /services/oauth2/v1/authorization_challenge? HTTP 1.1
          Host: MyExperienceCloudSite.my.site.com
          
          username=janice.edwards@example.com&
          password=*****&
          client_assertion=******&
          recaptcha=********&
          scope=profile&
          code_challenge=********
          

          Paso 4: Salesforce valida la solicitud

          Salesforce intenta primero validar el JWT de certificado de cliente validando que la firma pasada en el parÔmetro client_asssertion coincide con la firma para el certificado configurado para la aplicación cliente externa.

          Si el JWT de certificado de cliente no es vÔlido, Salesforce devuelve un error invalid_attestation y debe volver a enviar la solicitud con todos los parÔmetros que envió originalmente. A continuación se incluye un ejemplo de respuesta de error.

          HTTP/1.1 403 Forbidden
          Content-Type: application/json
          Cache-Control: no-store
          
          {
            "error": "invalid_attestation",
            "error_code": "client_attestation_failed"
          }
          

          Si el JWT del certificado de cliente es vÔlido, pero hay otros problemas con la solicitud, Salesforce devuelve una respuesta de error especificando qué falla con la solicitud. A continuación se muestra un ejemplo de respuesta que se devuelve si el usuario envía un nombre de usuario o una contraseña incorrectos.

          HTTP/1.1 403 Forbidden
          Content-Type: application/json
          Cache-Control: no-store
          
          {
            "error": "authorization_required",
            "auth_session": "uY29tL2F1d*****",
            "error_code": "invalid_credentials"
          }

          La respuesta incluye un parÔmetro auth_session que permanece vÔlido durante 5 minutos después de su emisión. Durante el periodo de tiempo en el que auth_session es vÔlida, puede utilizarla para volver a enviar la solicitud. En las versiones corregidas que vuelva a enviar, incluya solo los valores corregidos para los parÔmetros que provocaron el fallo de la solicitud. También debe volver a enviar password con cada solicitud porque Salesforce no la almacena. Pero para otros parÔmetros, si no provocaron el fallo de la solicitud, puede dejarlos fuera. Salesforce ya sabe que envió estos parÔmetros porque estÔn vinculados a auth_session.

          Nota
          Nota Los parƔmetros de reCAPTCHA no se vinculan a auth_session, pero puede volver a enviar la solicitud sin ellos a no ser que hayan causado el fallo de la solicitud.

          Estos son algunos ejemplos de escenarios de error comunes. Esta lista no es exhaustiva.

          • El usuario envió el nombre de usuario o la contraseƱa incorrectos. Vuelva a enviar la solicitud solo con username, password y auth_session.
          • El token de reCAPTCHA era incorrecto. Vuelva a enviar la solicitud solo con el token de reCAPTCHA, password, y auth_session.

          Transcurridos 5 minutos desde que se emitió la sesión de autenticación, ya no funciona y obtiene un error auth_session_invalid. En ese caso, vuelva a enviar la solicitud completa con todos los parÔmetros que incluyó originalmente.

          (Opcional) El controlador de descubrimiento de usuarios desatendido encuentra el usuario

          Si estÔ utilizando un controlador de descubrimiento de usuarios desatendido, el controlador toma los parÔmetros login_hint y customdata y encuentra el usuario asociado. El controlador confirma que la dirección de email o el número de teléfono del usuario estÔ verificado.

          Para obtener un controlador de ejemplo, consulte Auth.HeadlessUserDiscoveryHandler.

          Paso 5: Salesforce devuelve un código de autorización

          Cuando su solicitud al extremo de reto de autorización se realiza correctamente (ya sea en el primer intento o después de varios reintentos con auth_session), Salesforce devuelve un código de autorización. Este es un ejemplo de una respuesta correcta del código de autorización.

          HTTP/1.1 200 OK
          Content-Type: application/json;charset=UTF-8
          Cache-Control: no-store
          
          {
            "authorization_code": "uY29tL2F1d******"
          }

          Paso 6: Su aplicación intercambia el código de autorización por un token de acceso

          Después de obtener el código de autorización, su aplicación envía una solicitud al extremo services/oauth2/token.

          Esta solicitud no tiene encabezados. Incluya estos parƔmetros en el cuerpo de la solicitud.

          Solicitud de token: ParƔmetros de cuerpo
          ParÔmetro ¿Obligatorio? Descripción
          code Sí. El servidor de autorización crea un código de autorización, que es un token efímero que pasa al cliente después de una autenticación correcta. El cliente envía el código de autorización al servidor de autorización para obtener un token de acceso y, opcionalmente, un token de actualización.
          client_id Sí. La clave de consumidor de la aplicación cliente externa.
          client_secret Sí. El secreto de consumidor de la aplicación cliente externa. En este flujo, actúa como una contraseña que la aplicación utiliza para acceder a Salesforce.
          redirect_uri Sí. La URL donde se redirige a los usuarios después de una autenticación satisfactoria. redirect_URI debe coincidir con uno de los valores del campo URL de devolución de llamada de la aplicación cliente externa. De lo contrario, la aprobación falla. Este valor debe tener codificación de URL.
          grant_type Sí. El tipo de validación que la aplicación puede proporcionar para probar que es un visitante seguro. Para este flujo, el valor debe ser authorization_code.
          code_verifier Obligatorio si requería PKCE para su aplicación cliente externa. Para que las funciones de seguridad de este flujo funcionen correctamente, recomendamos encarecidamente que siempre requiera PKCE.

          Especifica 128 bytes de datos aleatorios con alta entropía para hacer que intentar determinar el valor del código sea difícil. Establezca este parÔmetro para ayudar a evitar ataques de intercepción de códigos de autorización. El valor debe estar codificado con base64url como se define en https://datatracker.ietf.org/doc/html/rfc4648#section-5.

          Si existe un valor code_verifier en la solicitud de token y un valor code_challenge en la solicitud de autorización, Salesforce compara los dos valores. Si code_verifier no es vÔlido o no coincide, el inicio de sesión falla con el código de error invalid_grant.

          Si el valor code_verifier estÔ en la solicitud de token, pero no hay valor code_challenge en la solicitud de autorización, el inicio de sesión falla con el código de error invalid_grant.

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

          POST services/oauth2/token? HTTP 1.1
          Host: MyExperienceCloudSite.my.site.com
          
          code=********&
          client_id=**********&
          client_secret=*********&
          redirect_uri=<callback_URL>&
          grant_type=authorization_code&
          code_verifier=*******

          Paso 7: Salesforce otorga un token de acceso

          Después de validar las credenciales de la aplicación. Salesforce devuelve un token de acceso. A continuación se incluye un ejemplo de respuesta de token de acceso en formato JSON.

          {
          "access_token":"*******************",
          "sfdc_community_url":"https://MyDomainName.my.site.com",
          "sfdc_community_id":"0DBxxxxxxxxxxxx",
          "signature":"ts6wm/svX3jXlCGR4uu+SbA04M6qhD1SAgVTEwZ59P4=",
          "scope":"openid api",
          "id_token":"XXXXXX",
          "instance_url":"https://yourInstance.salesforce.com",
          "id":"https://yourInstance.salesforce.com/id/00Dxxxxxxxxxxxx/005xxxxxxxxxxxx",
          "token_type":"Bearer",
          "issued_at":"1667600739962"
          }

          La respuesta del token de acceso contiene estos parƔmetros.

          ParƔmetros de respuesta de token
          ParÔmetro ¿Obligatorio? Descripción
          access_token Sí. Token de OAuth que una aplicación cliente externa utiliza para solicitar el acceso a un recurso protegido en nombre de la aplicación cliente. Pueden acompañar permisos adicionales en la forma de Ômbitos al token de acceso.
          id Sí. Una URL de identidad que se puede utilizar para identificar al usuario y para consultar con el fin de obtener mÔs información acerca del usuario. Consulte URL de identidad.
          id_token No. Una estructura de datos firmada que contiene atributos de usuario autenticados, incluyendo un identificador único para el usuario y una marca de tiempo que indica el momento en que se emite el token. También identifica la aplicación solicitante. Consulte Especificaciones de OpenID Connect.
          instance_url Sí. Una URL que indica la instancia de la organización del usuario. Por ejemplo, https://yourInstance.salesforce.com/.
          issued_at Sí. Una marca de hora de la creación de la firma, expresada como el número de milisegundos desde 1970-01-01T0:0:0Z UTC.
          refresh_token No. Token obtenido del servidor web, usuario-agente o flujo de token de aplicación híbrida. Se trata de un valor secreto. Tome las medidas apropiadas para protegerlo. Este parÔmetro solo se devuelve si su aplicación cliente externa o aplicación conectada se configura con un Ômbito refresh_token.
          signature Sí. Firma HMAC-SHA256 con codificación Base64 firmada con client_secret. La firma puede incluir el Id. concatenado y el valor issued_at, que puede utilizar para verificar que la URL de identidad no cambió desde que la envió el servidor.
          sfdc_community_url SĆ­. La URL del sitio de Experience Cloud.
          sfdc_community_id SĆ­. El Id. de sitio de Experience Cloud del usuario.
          state No. El estado solicitado por el cliente. Este valor solo se incluye si el parƔmetro state estƔ incluido en la cadena de consulta original.
          token_type SĆ­. Un tipo de token Bearer, que se utiliza para todas las respuestas que influyen un token de acceso.

          Paso 8: La aplicación crea la sesión del usuario

          La aplicación recibe la respuesta del token de acceso y crea la sesión del usuario.

          Paso 9: El usuario inicia sesión y realiza una acción en la aplicación

          El usuario final ahora tiene su sesión iniciada y realiza una acción en su aplicación que requiere acceso a datos de Salesforce. Por ejemplo, hace clic en un botón para ver su historial de pedidos, que se almacena en Salesforce.

          Nota
          Nota Cuando configura su aplicación cliente externa o aplicación conectada para el flujo Código de autorización y credenciales, establece la política Usuarios permitidos en Usuarios aprobados por el administrador se han autorizado previamente y configura qué perfiles o conjuntos de permisos pueden acceder a la aplicación. Con esta política, los usuarios acceden a la aplicación sin autorizarla, de modo que no obtienen una pantalla de autorización solicitÔndoles permitir a la aplicación acceder a sus datos.

          Paso 10: La aplicación realiza una llamada autenticada a un extremo de Salesforce

          Para acceder a los datos de Salesforce del usuario, su aplicación utiliza el token de acceso para realizar una llamada autenticada a un extremo de Salesforce protegido, como una API de Salesforce.

          Paso 11: El usuario puede acceder a datos de Salesforce

          El usuario puede ahora acceder a datos de Salesforce protegidos en su aplicación. Por ejemplo, puede ver su historial de pedidos. Desde la perspectiva del usuario, el proceso completo desde el inicio de sesión hasta el acceso a sus datos se produjo sin requerir nunca salir de la aplicación.

           
          Cargando
          Salesforce Help | Article