Quiero mostrar diferentes pantallas según la aplicación conectada que se utilice para iniciar sesión en Salesforce. ¿Puede el flujo de inicio de sesión saber de alguna manera qué aplicación conectada se utiliza?
Hay varias variables de flujo de inicio de sesión que podemos aprovechar, pero ninguna de ellas contiene la aplicación conectada.
Nada de lo siguiente parece útil para este escenario ( fuente ):
- LoginFlow_LoginType: esta variable le permite designar un tipo de usuario para Flow / Org.
- LoginFlow_IpAddress: esta variable actúa como la dirección IP de un usuario. A través de esta variable, tiene el poder de delegar una dirección IP para un usuario, perfil y otros campos relacionados con el usuario.
- LoginFlow_UserAgent: esta variable es la cadena del navegador del usuario. También le permite evitar que los usuarios utilicen Internet
Explorer para iniciar sesión en su organización.- LoginFlow_Platform: esta variable le muestra desde qué tipo de sistema (es decir, Mac OSX) inician sesión sus usuarios.
- LoginFlow_Application: similar a la variable anterior; sin embargo, muestra el tipo de dispositivo desde el que inician sesión los usuarios (es decir, iPhone, tableta, computadora de escritorio, etc.) para que sepa en qué ubicación final debe reubicarlos.
- LoginFlow_Community: esta variable muestra en qué comunidad se encuentra actualmente su usuario, si corresponde. LoginFlow_SessionLevel: esta variable es responsable de la seguridad y funciona con garantía alta o estándar.
- LoginFlow_UserId: esta variable funciona para mostrar identificaciones de caracteres (hasta 18 caracteres) y también le permite buscar su (s) usuario (s) y buscar en el sistema para encontrar campos similares.
Comentarios
- ¿Se asignará un solo usuario para iniciar sesión en su organización desde más de una aplicación conectada? Además, ¿iniciarán sesión usando SSO o usarán su UserId / PW?
- Sí, pueden usar múltiples aplicaciones conectadas para iniciar sesión. Salesforce es el proveedor de identidad, por lo que pueden usar su nombre de usuario / contraseña de Salesforce o los proveedores de autenticación de Facebook o Google.
- ¿Esto se aplica a TODOS los usuarios (interno & externo ) o solo para usuarios de la comunidad? Aunque solo sea para los usuarios de la comunidad, puedo ofrecer una solución. Si es para todos los usuarios, es posible que no tenga suerte.
- Solo los usuarios de la comunidad. Usamos la licencia Community Login para IdP
Respuesta
Puede que tengas suerte. Existe algo llamado ExperienceID o expid
que potencialmente podría usarse para hacer lo que desea lograr. Su propósito principal es poder personalizar la «experiencia de marca» para los clientes según sobre dónde se envían a su comunidad.
Puede obtener más información al respecto leyendo este enlace a la Guía de implementación de identidad externa de Salesforce y también leyendo Cambie la experiencia de inicio de sesión de sus usuarios con la marca dinámica de las Notas de la versión de Winter 18 . Si asocia cada aplicación conectada con una , me parece que podría usarlo para lograr lo que desea con sus aplicaciones conectadas asignando a cada aplicación un expid único.
El ExperienceID se puede usar para extender un endpoint usando una de dos estrategias diferentes como se muestra a continuación.
Extienda los siguientes endpoints con expid_value.
- community-url / services / oauth2 / authorize / expid_value
- community-url / idp / endpoint / HttpPost / expid_value
- community-url / idp / endpoint / HttpRedirect / expid_value
Extienda los siguientes extremos con expid = {value}.
- community-url_login_page? Expid = {value}
- community-url / CommunitiesSelfReg? Expid = {value}
- community-url / .well-known / auth-configuration? expid = {value}
Pase un valor expid diferente a la página de autorregistro para ofrecer un flujo de registro diferente para cada marca.
El valor de ID de experiencia se captura en una cookie en lugar de en la URL. Por ejemplo, si expid_value se establece en Clientes, una cookie asociada tiene el valor expid_Customers.
Comentarios
- respuesta bastante inteligente
- La pregunta que les llega " ¿cómo acceder al expid en un flujo de inicio de sesión? "
- @FernandoGavinho Depende de si ' lo ha pasado en una cookie o como parte del valor expid que se puede mantener en un usuario de la comunidad ' s Perfil. También puede utilizarlo como parámetro de inicio para su flujo de inicio de sesión, ya que ' lo ha utilizado para ampliar el punto final de inicio de sesión.Parecería que ' tendrías muchas opciones dependiendo de cómo las pases desde tu aplicación conectada.
- En mi caso de uso, uso el punto final SSO " community-url / idp / endpoint / HttpPost / expid_value ". Sin embargo, ' no sé cómo acceder a este valor en el flujo. Podría si fuera una página de Visualforce, pero ¿hay alguna forma de acceder a ellos en el flujo? ¿Quizás nombrar una variable solo para entrada? Probé " expid " y " ExpId ", pero parece que no funciona.
- Lo encontré. Para acceder al expId en el flujo de inicio de sesión, debe llamar al método System.Site.getExperienceId (). Esto se puede hacer en el controlador si ' es una página de Visualforce o en un InvocableMethod si ' es un flujo visual.