Última actualización el 10 de octubre de 2022 por Rakesh Gupta
Gran idea o pregunta duradera:
- ¿Cómo limitar el número de sesiones simultáneas para un usuario?
Objetivos:
Después de leer este blog, podrá:
- Comprender las sesiones simultáneas y cómo identificarlas mediante Flow
- Limite el número de sesiones simultáneas con flujos de inicio de sesión
- Utilice la variable LoginFlow_ForceLogout
- Trabajar con Obtener registros, Eliminar registros, Asignación y Elementos de pantalla
- Y mucho más
Rachel Gillett trabaja como desarrolladora junior en Gurukul on Cloud (GoC). Ella ha recibido el siguiente requerimiento de la gerencia:
- Aplicar el número de sesiones simultáneas por usuario a uno.
- Proporcione la capacidad de eliminar su sesión anterior y comenzar una nueva sesión al iniciar sesión.
👉 demostración
Enfoque de Campeón de Automatización (I-do):
Las sesiones simultáneas de usuarios se refieren a la cantidad de sesiones interactivas basadas en la interfaz de usuario que un usuario individual puede tener abiertas y activas por cuenta de usuario. Los usuarios pueden crear varias sesiones de usuario al iniciar sesión en una cuenta desde diferentes tipos de navegadores y dispositivos.
Para mejorar la seguridad de la organización general de Salesforce, un administrador puede implementar un Flujo de inicio de sesión o usar la Política de seguridad de transacciones (requiere suscripciones complementarias de Salesforce Shield o Salesforce Event Monitoring) para limitar la cantidad de sesiones simultáneas para un usuario.
Hay algunas soluciones posibles para el escenario empresarial anterior . Usaremos Screen Flow y Login Flow para resolver el requisito.
Antes de continuar, comprendamos las características de un objeto AuthSession : representa una sesión de usuario individual en su organización.
Nombre del campo | Detalles |
ID de usuario | Usuario |
Identificación de los padres | El ID de 18 caracteres para la sesión principal, si existe (por ejemplo, si la sesión actual es para una aplicación de lienzo). Si la sesión actual no tiene un padre, este valor es el ID de la sesión actual. |
Tipo de sesión | El tipo de sesión. Los más comunes son la interfaz de usuario, el contenido, la API y Visualforce. |
Tipo de usuario | El tipo de usuario para esta sesión. Los tipos incluyen Estándar, Socio, Administrador del portal de clientes, Portal de gran volumen y Solo CSN. |
Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso de alto nivel. Dedique unos minutos a repasar el siguiente diagrama de flujo y comprenderlo.
Comencemos a construir este proceso de automatización.Práctica guiada (nosotros hacemos):
Hay 7 pasos para resolver el requisito comercial de Rachel utilizando Screen Flow y Login Flow . Debemos:
- Definir propiedades de flujo para el flujo de pantalla
- Agregue un elemento Obtener registros para encontrar las sesiones del usuario que inició sesión
- Agregue un elemento de asignación para obtener el recuento de sesiones de usuarios registrados
- Agregue un elemento de Decisión para verificar si el conteo es mayor que 1 o no
- Agregue un elemento de pantalla para mostrar el mensaje y la opción de eliminar otras sesiones
- Agregue un elemento de decisión para verificar si el usuario desea eliminar otras sesiones
- Si se selecciona la opción:
- Agregue un elemento Obtener registros para encontrar la sesión actual del usuario que inició sesión
- Agregue un elemento Eliminar registros para eliminar otras sesiones
- Si se selecciona la opción NO:
- Agregue un elemento de asignación para forzar el cierre de sesión del usuario
- Si se selecciona la opción:
- Configurar el flujo de inicio de sesión para usuarios con licencia de Salesforce Platform
👉 Considere usar tipos de metadatos personalizados para configurar la cantidad de sesiones actuales.
Paso 1: Definir propiedades de flujo
- Haga clic en Configuración .
- En el cuadro Búsqueda rápida, escriba Flujos .
- Seleccione Flujos, luego haga clic en Nuevo flujo .
- Seleccione el flujo de pantalla opción y haga clic en Crear y configurar el flujo.
- Se abrirá el diseñador de flujo para usted.
Paso 2: Adición de un elemento Obtener registro para encontrar las sesiones del usuario que ha iniciado sesión
El siguiente paso es usar el objeto AuthSession para encontrar las sesiones del usuario que ha iniciado sesión.
- En Flow Designer, haga clic en el icono + y seleccione el elemento Obtener registros .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Seleccione el objeto Sesión de autenticación de la lista desplegable.
- Seleccione Se cumplen todas las condiciones (Y) .
- Establecer condiciones de filtro
- Fila 1:
- Campo : ID de usuario
- Operador : Igual
- Valor : {!$Usuario.Id}
- Haga clic en Agregar condición
- Fila 2:
- Campo : ID de padre
- Operador : es nulo
- Valor : {!$ConstanteGlobal.Verdadero}
- Haga clic en Agregar condición
- Fila 3:
- Campo : Tipo de sesión
- Operador : no es igual
- Valor : TempUIFrontdoor
- Haga clic en Agregar condición
- Fila 4:
- Campo : Tipo de sesión
- Operador : no es igual
- Valor : llamada de servicio interno
- Fila 1:
- Cuántos registros almacenar:
- Seleccionar todos los registros
- Cómo almacenar datos de registro:
- Elija la opción para Almacenar automáticamente todos los campos .
- Haga clic en Listo .
Paso 3: Adición de un elemento de asignación para encontrar el recuento de la sesión del usuario conectado
El siguiente paso es obtener el recuento de sesiones del usuario que ha iniciado sesión. Para ello, utilizaremos un elemento Asignación .
- Cree una variable numérica varN_SessionCount para almacenar el recuento.
- En Flow Designer, haga clic en el icono + y seleccione el elemento Asignación .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Establecer valores de variables
- Fila 1:
- Campo: {!varN_SessionCount}
- Operador: Igual
- Valor: {!Get_Sessions}
- Fila 1:
- Haga clic en Listo .
Paso 4: agregue un elemento de decisión para verificar si el recuento de sesiones es mayor que 1 o no
Ahora usaremos el elemento Decisión para verificar la variable numérica del paso 3 para encontrar si el conteo es mayor que 1 o no.
- En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
- Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
- Fila 1:
- Recurso : {!varN_SessionCount}
- Operador : mayor que
- Valor : 1
- Fila 1:
- Haga clic en Listo .
Paso 5: agregue un elemento de pantalla para mostrar el mensaje y la opción para eliminar otras sesiones
- En Nodo de bloque , haga clic en el icono + y seleccione el elemento Pantalla en Flow Designer.
- Ingrese la siguiente información :
- Ingrese la etiqueta , el nombre de la API se completará automáticamente.
- Mira el video para obtener instrucciones paso a paso y algunos consejos.
Paso 6: agregue un elemento de decisión para verificar si el usuario desea eliminar las otras sesiones o no
Ahora usaremos el elemento Decisión para comprobar si el usuario ha seleccionado la casilla Cerrar sesión en todas las demás sesiones web en el paso 5 o no.
- En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
- Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
- Fila 1:
- Recurso : {!Sign_out_all_other_web_sessions}
- Operador : Igual
- Valor : {!$ConstanteGlobal.Verdadero}
- Fila 1:
- Haga clic en Listo .
Paso 6.1.1: Adición de un elemento Obtener registro para encontrar la sesión actual del usuario que ha iniciado sesión
El siguiente paso es usar el objeto AuthSession para encontrar la sesión actual del usuario conectado.
- En Nodo Sí , haga clic en el icono + y seleccione el elemento Obtener registros en Flow Designer.
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Seleccione el objeto Sesión de autenticación de la lista desplegable.
- Seleccione Se cumplen todas las condiciones (Y) .
- Establecer condiciones de filtro
- Fila 1:
- Campo : ID de usuario
- Operador : Igual
- Valor : {!$Usuario.Id}
- Haga clic en Agregar condición
- Fila 2:
- Campo : ID de padre
- Operador : es nulo
- Valor : {!$ConstanteGlobal.Verdadero}
- Haga clic en Agregar condición
- Fila 3:
- Campo : Tipo de sesión
- Operador : Igual
- Valor : interfaz de usuario
- Fila 1:
- Ordenar registros de sesión de autenticación
- Orden de clasificación: Descendente
- Ordenar por: Fecha de creación
- Cuántos registros almacenar:
- Seleccione Solo el primer registro
- Cómo almacenar datos de registro:
- Elija la opción para Almacenar automáticamente todos los campos .
- Haga clic en Listo .
Paso 6.1.2: agregue un elemento Eliminar registros para eliminar otras sesiones
- En Flow Designer, haga clic en el icono + y seleccione el elemento Eliminar registros .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Para Cómo encontrar registros para eliminar, seleccione Especificar condiciones .
- Seleccione la sesión de autenticación objeto de la lista desplegable.
- Establecer condiciones de filtro
- Fila 1:
- Campo : ID de usuario
- Operador : Igual
- Valor : {!$Usuario.Id}
- Haga clic en Agregar condición
- Fila 2:
- Campo : ID de padre
- Operador : no es igual
- Valor : {!Get_Most_Recent_Session.Id}
- Haga clic en Agregar condición
- Fila 3:
- Campo : Identificación
- Operador : no es igual
- Valor : {!Get_Most_Recent_Session.Id}
- Fila 1:
- Haga clic en Listo .
Paso 6.2.1: agregar un elemento de asignación para forzar el cierre de sesión del usuario
El siguiente paso es eliminar la sesión actual del usuario a la fuerza. Para ello, utilizaremos un elemento Asignación .
- Cree una variable booleana LoginFlow_ForceLogout. Cuando esta variable se establece en
true
, el usuario se desconecta inmediatamente. - En Sin nodo, haga clic en el icono + y seleccione el elemento Asignación en Flow Designer.
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Establecer valores de variables
- Fila 1:
- Campo: {!LoginFlow_ForceLogout}
- Operador: Igual
- Valor: {!$ConstanteGlobal.True}
- Fila 1:
- Haga clic en Listo .
- Agregue un elemento de pantalla sin contenido.
Al final, Rachel's Flow se verá como la siguiente captura de pantalla:
Una vez que todo se vea bien, realice los siguientes pasos:
- Haga clic en Guardar .
- Introducir etiqueta de flujo ; el nombre de la API se completará automáticamente.
- Haga clic en Mostrar avanzado .
- Versión de API para ejecutar el flujo : 56
- Etiqueta de entrevista : Sesiones concurrentes excedidas {!$Flow.CurrentDateTime}
- Haga clic en Guardar .
¡Casi ahí! Una vez que todo se vea bien, haga clic en el botón Activar .
Paso 8: Configure el flujo de inicio de sesión para usuarios con licencia de la plataforma Salesforce
- Haga clic en Configuración .
- En el cuadro Búsqueda rápida, escriba Flujos de inicio de sesión .
- Seleccione Flujos de inicio de sesión , luego haga clic en Nuevo .
- Seleccione el tipo del menú desplegable Flujo .
- Ingrese Sesiones Concurrentes un Nombre .
- El siguiente paso es seleccionar Flujo , Licencia de usuario y Perfil . Siga los pasos como se muestra en la siguiente captura de pantalla:
- Haga clic en Listo .
Prueba de concepto
Mira el video para ver una demostración:
Evaluación formativa:
¡Quiero saber de ti!
¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/10/10/limit-the-number-of-concurrent-sessions-in-salesforce-3/