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
          API de identidad desatendida: Flujo de invitados desatendido para clientes privados

          API de identidad desatendida: Flujo de invitados desatendido para clientes privados

          Para usuarios que interactúan con su aplicación de plataforma sin conexión pero no tienen necesariamente iniciada la sesión, puede utilizar el Flujo de invitados desatendido para identificar usuarios con un Id. de visitante exclusivo (UVID). Cuando el usuario inicia sesión o se registra, puede trasladar el UVID y mantener cualquier información contextual asociada con ella, como las preferencias de un usuario. Este flujo es una variación del flujo Código de autorización y credenciales.

          Ediciones necesarias

          Disponible en: Salesforce Classic (no disponible en todas las organizaciones) y Lightning Experience
          Disponible en: Enterprise Edition, Unlimited Edition y Developer Edition

          Antes de configurar este flujo, complete estos pasos.

          Por ejemplo, aloja una aplicación de comercio electrónico fuera de la plataforma Salesforce. Desea que los usuarios puedan guardar artículos en un carrito sin iniciar sesión. Puede utilizar el flujo de usuario invitado para generar un UVID para el usuario, y puede almacenar la información del carrito del usuario y vincularla al UVID. Cuando el usuario inicia sesión o se registra por última vez, pasa el UVID en un flujo de registro o inicio de sesión desatendido. Debido a que tiene el contexto del carrito desde UVID, puede guardar los artículos del usuario, dándole una mejor experiencia.

          El ejemplo de carrito de compra es solo una de muchas posibilidades cuando se incluye el UVID y el flujo de invitado. Otras posibilidades incluyen comprender lo que hace que sus usuarios deseen inscribirse en su aplicación y recordar sus preferencias.

          El flujo de invitado y UVID solo son compatibles con tokens de acceso basados en tokens Web de JSON (JWT). Para conectar el UVID a un usuario nombrado, debe configurar el flujo de usuario nombrado para emitir tokens de acceso basados en JWT también.

          Estas instrucciones le indican cómo implementar el flujo para un cliente privado con su propio backend. Los clientes privados tienen un lugar seguro para almacenar el secreto de consumidor de su aplicación, que funciona como una contraseña para el intercambio de códigos, de modo que recomendamos enviar el secreto de consumidor cuando solicite un token de acceso.

          También recomendamos que proteja aún más su flujo implementando la extensión OAuth 2.0 Proof Key for Code Exchange (PKCE). PKCE ayuda a garantizar que el cliente que inicia el flujo es el mismo cliente que lo completa. Para obtener más información acerca de cómo funciona PKCE y cómo puede aplicarlo, consulte Construir la extensión PKCE en sus implementaciones.

          Esta es una descripción general del flujo de invitados. Estos pasos cubren el flujo hasta el punto en que se identifica el usuario invitado, pero no se inicia sesión.

          Diagrama de secuencia que muestra el flujo de usuario invitado desatendido para clientes privados
          • El visitante desconocido llega a la aplicación, o realiza una acción como hacer clic en un botón (1).
          • La aplicación busca un UVID. Si no puede encontrar uno, solicita un UVID de su backend cliente (2).
          • Si se solicita, el backend cliente genera un UVID y lo envía a su aplicación (3).
          • Su aplicación recibe el UVID (4a).
          • Si está utilizando PKCE, su aplicación genera parámetros de PKCE (4b).
          • Para obtener un código de autorización, su aplicación envía el UVID en una solicitud GET o POST sin encabezado al extremo de autorización (services/oauth2/authorize) (5).
          • Salesforce valida el UVID y devuelve un redireccionamiento 302 a una URL preconfigurada que contiene el código de autorización (6).
          • El backend de cliente de su aplicación extrae el código y otros parámetros del redireccionamiento 302 e intercambia el código de un token de acceso con una solicitud en el extremo de tokens de Salesforce (services/oauth2/token) (7).
          • Salesforce devuelve un token de acceso basado en JWT de invitado con el UVID en la reclamación de sujeto (8).
          • El backend de cliente de su aplicación procesa el token de acceso basado en JWT de invitados y almacena el valor de UVID, que puede mantenerse privado. Devuelve una sesión de invitado y, opcionalmente, el token de invitado (9).
          • Su aplicación recibe la respuesta del token y crea la sesión de invitado (10).
          • El visitante no conocido anteriormente tiene ahora una sesión de invitado vinculada al valor de UVID en el token de acceso (11).

          Como se menciona en el paso 7 para un cliente privado, usted crea un controlador de devolución de llamadas del lado del servidor que puede extraer el redireccionamiento 302 y devolver un código de autorización a su aplicación. Para ver cómo puede crear este controlador, consulte Flujo Código de autorización y credenciales para clientes privados, que incluye un controlador de Apex de ejemplo expuesto como un recurso de REST.

          El usuario final desconocido llega a su aplicación

          El flujo se inicia cuando un usuario final visita su aplicación. También puede configurarlo para que se inicie cuando el usuario realice una acción, como por ejemplo, guardar un artículo en un carrito.

          La aplicación solicita un UVID si es necesario

          Su aplicación intenta encontrar un UVID de visitas anteriores a la aplicación. Por ejemplo, determina si puede extraer el UVID desde una cookie o desde almacenamiento local en el navegador. Si la aplicación no puede encontrar un UVID, solicita uno desde su backend cliente.

          El backend cliente genera un UVID

          Si se solicita, el backend cliente genera un valor de UVID. Salesforce no está implicado en la generación, el almacenamiento o el mantenimiento de UVID. Depende completamente de su aplicación. El único requisito es que el UVID debe ser un identificador exclusivo universal de Versión 4 (v4 UUID).

          La aplicación recibe el UVID

          Su aplicación recibe el UVID desde el backend de cliente.

          La aplicación genera parámetros de PKCE

          Si está utilizando PKCE, su aplicación genera parámetros de code_verifier y code_challenge.

          La especificación de la extensió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 no tendrá en cuenta cualquier valor que se envíe en este parámetro, y establecerá SHA256 de forma predeterminada.

          La aplicación intercambia el UVID para un código de autorización

          Su aplicación envía de forma desatendida una solicitud GET o POST al extremo de autorización de Salesforce en su sitio de Experience Cloud. La solicitud contiene el UVID y otros parámetros para identificar la aplicación y especificar el tipo de solicitud.

          Tiene dos opciones para el modo en que envía el UVID en esta solicitud. Puede enviar un valor de UVID sin formato o enviar un token de acceso basado en JWT con el UVID acuñado en él. Por ejemplo, si tiene un token de acceso basado en JWT desde una sesión anterior, el envío del token al extremo de autorización es una forma sencilla de reutilizarlo sin analizarlo de forma específica para el UVID.

          Incluya estos encabezados en su solicitud.

          Solicitud de autorización: Encabezados
          Encabezado ¿Obligatorio? Descripción
          Uvid-Hint Obligatorio si no envía el UVID en el cuerpo de la solicitud. Debe incluir siempre un UVID, ya sea que se envíe en el encabezado o en el cuerpo de la solicitud.

          Contiene el UVID como un valor sin formato o un token de acceso basado en JWT con un UVID acuñado en él.

          Si envía el identificador UVID como un valor sin formato, incluya un prefijo UVID antes del valor, de modo que la solicitud tenga el formato Uvid-Hint: UVID <UVID value>.

          Si envía un token de acceso basado en JWT con un identificador UVID, incluya un prefijo JWT antes del valor, como Uvid-Hint: JWT <access token containing UVID>.

          Auth-Request-Type Sí. Especifica el tipo de solicitud que desea realizar a Salesforce. Para el inicio de sesión sin contraseña desatendido, este valor debe establecerse en guest.

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

          Solicitud de autorización: Parámetros de cuerpo
          Parámetro ¿Obligatorio? Descripción
          uvid_hint Obligatorio si no incluye el UVID en el encabezado.

          Contiene el UVID como un valor sin formato o un token de acceso basado en JWT con un UVID acuñado en él.

          Si envía el identificador UVID como un valor sin formato, incluya un prefijo UVID antes del valor, de modo que la solicitud tenga el formato uvid_hint=UVID <UVID value>.

          Si envía un token de acceso basado en JWT con un identificador UVID, incluya un prefijo JWT antes del valor, como uvid_hint=JWT <access token containing UVID>.

          client_id Sí. La clave de consumidor de la aplicación cliente externa o la aplicación conectada.
          response_type Sí. El tipo de otorgamiento de OAuth 2.0 que solicita su aplicación. Como este flujo es una variación del flujo Código de autorización y credenciales, este valor debe ser code_credentials.
          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 conectada. De lo contrario, la aprobación falla. Este valor debe tener codificación de URL.

          Para clientes privados, utilice un redirect_uri que apunte a su controlador de devolución de llamadas del lado del servidor.

          code_challenge Solo si está utilizando la extensión PKCE, que es lo recomendable, especialmente para un cliente público.

          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 un desafío code_challenge en la solicitud de autorización y se proporciona un verificador code_verifier en la solicitud de token, Salesforce compara ambos valores. Si code_challenge no es válido o no coincide, el inicio de sesión fallará, con el código de error invalid_request.

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

          scope Sí.

          Los permisos que definen el tipo de recursos protegidos a los que la aplicación puede acceder. Los valores que envía en esta solicitud deben coincidir o ser un subconjunto de los ámbitos asignados a su aplicación cliente externa o aplicación conectada.

          Para obtener más información acerca de cada ámbito y su finalidad, consulte Tokens y ámbitos de OAuth.

          Estas solicitudes de autorización de ejemplo implementan PKCE.

          A continuación se incluye un ejemplo de solicitud donde el UVID se pasa como un valor sin formato en el encabezado de la solicitud.

          POST /services/oauth2/authorize? HTTP 1.1
          Host: MyExperienceCloudSite.my.site.com
          Uvid-Hint: UVID abcd-1234-efgh
          Auth-Request-Type: guest
          
          response_type=code_credentials&
          client_id=***********&
          redirect_uri=https://www.MyExperienceCloudSite.my.site.com/services/oauth2/echo&
          code_challenge=********&
          scope=openid
          

          A continuación se incluye un ejemplo de solicitud donde el UVID se pasa en un token de acceso basado en JWT en el encabezado.

          POST /services/oauth2/authorize? HTTP 1.1
          Host: MyExperienceCloudSite.my.site.com
          Uvid-Hint: JWT **************
          Auth-Request-Type: guest
          
          response_type=code_credentials&
          client_id=***********&
          redirect_uri=https://www.MyDomainName.my.site.com/services/apexrest/code/exchange&
          code_challenge=********
          scope=openid
          

          En este ejemplo, el UVID se pasa como un valor sin formato en el cuerpo de la solicitud.

          POST /services/oauth2/authorize? HTTP 1.1
          Host: MyExperienceCloudSite.my.site.com
          Auth-Request-Type: guest
          
          uvid_hint=UVID abcd-1234-efgh&
          response_type=code_credentials&
          client_id=***********&
          redirect_uri=https://www.MyDomainName.my.site.com/services/apexrest/code/exchange&
          code_challenge=********
          scope=openid
          

          Salesforce devuelve un redireccionamiento 302

          Salesforce valida el UVID. Si se pasó el UVID como un valor sin formato, Salesforce valida su formato. Si se pasó como un token de acceso basado en JWT, Salesforce comprueba la validez del token.

          Salesforce devuelve entonces un redireccionamiento HTTP 302 a una URL preconfigurada que contiene el código de autorización. Si el flujo se produce en el navegador, el redireccionamiento 302 se procesa en el navegador y Salesforce envía automáticamente la respuesta de redireccionamiento a la URL de redireccionamiento, que apunta al controlador de devolución de llamadas del lado del servidor en el backend del cliente. Esta es una URL preconfigurada de ejemplo.

          https://www.MyDomainName.my.site.com/services/apexrest/code/exchange?code=aPrxC1*******
          &sfdc_community_url=https%3A%2F%2FMyDomainName.my.site.com&sfdc_community_id=0DBxxxxxxxxxxxx

          El backend de cliente extrae el código y lo intercambia por un token de acceso

          El backend de cliente extrae el código de autorización y otros parámetros desde la URL preconfigurada. A continuación inicia un intercambio de códigos enviando el código y otros parámetros en una solicitud POST desatendida al extremo /services/oauth2/token.

          Incluya estos encabezados en la solicitud.

          Intercambio de código: Encabezado
          Parámetro ¿Obligatorio? Descripción
          Uvid-Hint Sí.

          Contiene el UVID como un valor sin formato o un token de acceso basado en JWT con un UVID acuñado en él.

          Para el intercambio de códigos, no incluya un prefijo para el UVID. Por ejemplo, si pasa el UVID como un valor sin formato, el encabezado es simplemente Uvid-Hint: abcd-1234-efgh. Si pasa un token de acceso basado en JWT, será Uvid-Hint: <access token containing UVID>.

          Auth-Request-Type Sí. Especifica el tipo de solicitud que desea realizar a Salesforce. Para el inicio de sesión sin contraseña desatendido, este valor debe establecerse en guest.

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

          Intercambio de código: 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 o la aplicación conectada.
          client_secret Sí. El secreto de consumidor de la aplicación cliente externa o la aplicación cliente externa.
          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 conectada. De lo contrario, la aprobación falla. Este valor debe tener codificación de URL.

          Para clientes privados, utilice un redirect_uri que apunte a su controlador de devolución de llamadas del lado del servidor.

          grant_type Sí. El tipo de validación que la aplicación puede proporcionar para probar que es un visitante seguro. Como este flujo es una variación del flujo Código de autorización y credenciales, el valor debe ser authorization_code.
          code_verifier Solo si está utilizando 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 ser base64url-encoded (codificado con base64url) como se define en https://datatracker.ietf.org/doc/html/rfc4648#section-5.

          Si existe un valor de verificador code_verifier en la solicitud de token y un valor de desafío code_challenge en la solicitud de autorización, Salesforce compara ambos valores. Si code_verifier no es válido o no coincide, el inicio de sesión fallará, con el código de error invalid_grant.

          Si el valor de verificador code_verifier está en la solicitud del token, pero no hay valor de desafío 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 un ejemplo de solicitud de token que implementa PKCE. En este ejemplo, el UVID se envía como un valor sin formato.

          POST services/oauth2/token? HTTP 1.1
          Host: MyExperienceCloudSite.my.site.com
          Auth-Request-Type: guest
          Uvid_Hint: abcd-1234-efgh
          
          code=********&
          client_id=**********&
          client_secret=*********&
          redirect_uri=https://www.MyDomainName.my.site.com/services/apexrest/code/exchange&
          grant_type=authorization_code&
          code_verifier=*******

          Salesforce otorga un token de acceso basado en JWT

          Después de validar las credenciales de la aplicación. Salesforce devuelve un token de acceso basado en JWT de invitado y un estado al backend del cliente. El token de acceso de invitado contiene el UVID en la reclamación (sub) del sujeto. Este es un fragmento de código de un token de acceso basado en JWT de ejemplo. Como recordatorio, estos tokens tienen tres componentes: un encabezado, una carga, y una firma. Este ejemplo muestra la carga. Como puede observarse, el valor UVID de la reclamación sub tiene el prefijo uvid.

          {
            "tnk": "example/00XXXXXX",
            "ver": "1.0",
            "kid": "CORE_ATJWT************",
            "tty": "sfdc-core-token",
            "typ": "JWT",
            "alg": "RS256"
          }
          
          {
            "scp": "open_id",
            "aud": [
              "https://example.com"
            ],
            "sub": "uvid:abcd-1234-efgh",
            "nbf": "1675197036",
            "iss": "https://MyExperienceCloudSite.my.site.com",
            "exp": "1675198836",
            "iat": "1675197036",
             jti”: xRb**********”
            "client_id": "**********"
          }

          Para obtener una explicación completa de cada reclamación en un token de acceso basado en JWT, consulte Tokens de acceso basados en JWT en la Ayuda de Salesforce.

          Respuesta de token de acceso de procesos de backend de cliente

          El backend de cliente procesa la respuesta del token de acceso y almacena el valor UVID. Devuelve una sesión de invitado a su aplicación. También puede devolver el token de acceso basado en JWT, pero no es obligatorio.

          La aplicación crea la sesión de invitado

          Su aplicación recibe la respuesta del token de su backend de cliente y crea una sesión de invitado.

          El usuario desconocido está ahora identificado

          El usuario final desconocido ahora tiene una sesión de invitado vinculada al valor de UVID devuelto en el token de acceso basado en JWT. En este punto, depende de usted lo que desee hacer con el UVID. Para obtener información acerca de cómo pasarlo a un flujo de autorización de usuario nombrado, consulte Ampliación del flujo de usuario invitado en un flujo de usuario nombrado.

           
          Cargando
          Salesforce Help | Article