Skip to main content

Personalizar el inicio de sesión móvil con código

Objetivos de aprendizaje

Después de completar este módulo, podrá:

  • Ubicar el controlador de detección de inicio de sesión y cambiar su nombre.
  • Agregar la función de inicio de sesión social al controlador de detección de inicio de sesión.
  • Recopilar información de usuario con atributos de solicitud.

Ubicar el controlador de detección de inicio de sesión predeterminado

Cuando se crea el controlador de detección de inicio de sesión desde la página Inicio de sesión y registro, Salesforce crea el controlador predeterminado como una clase de Apex. Este controlador se puede encontrar con otras clases de Apex en la página Clases de Apex de la organización.

  1. En la página Login & Registration (Inicio de sesión y registro), en Login Page Setup (Configuración de página de inicio de sesión), anote (o copie) el nombre del controlador de la lista en el cuadro de texto Login Discovery Handler (Controlador de detección de inicio de sesión). Si necesita volver a abrir la página Inicio de sesión y registro, en Configuración, en el cuadro de búsqueda rápida ingrese All Sites (Todos los sitios) y seleccione Todos los sitios. Para el sitio de clientes de NTO, haga clic en Workspaces (Espacios de trabajo). Haga clic en el mosaico Administration (Administración) y, luego, en Inicio de sesión y registro.Captura de pantalla del nombre del controlador de detección de inicio de sesión predeterminado
  2. En otra ficha, en Setup (Configuración), introduzca Apex Classes (Clases de Apex) en el cuadro de búsqueda rápida y haga clic en Apex Classes (Clases de Apex). Se mostrará el controlador en una lista de clases de la página Clases de Apex.
  3. Ubique (o busque) el nombre del controlador de detección de inicio de sesión en la lista. Como se puede ver, no es tan sencillo explorar la lista de clases de Apex para encontrar el controlador. Para solucionar eso, es posible cambiar el nombre del controlador por uno más reconocible. Además, al cambiar el nombre, es posible ver a simple vista que el controlador se encuentra personalizado. Ya no es necesario “crearlo automáticamente”, así que avance y cambie el nombre para reflejar esto.
  4. Haga clic en Modificar junto al nombre del controlador. El nombre del controlador se mostrará en la primera línea de código.
  5. Reemplace el nombre de Salesforce por uno propio y haga clic en GuardarCaptura de pantalla del nombre del controlador de detección de inicio de sesión desde Clases de ApexVuelva a su página de inicio de sesión y registro, y actualícela. Observe que el controlador de detección de inicio de sesión está actualizado con su nuevo nombre.Captura de pantalla del nuevo nombre del controlador de detección de inicio de sesión en la página Inicio de sesión y registro

Comprender el controlador de detección de inicio de sesión predeterminado

Antes de comenzar a personalizar el controlador, vamos a familiarizarnos con el controlador que genera Salesforce. Puede ver el ejemplo de código completo en la Guía del desarrollador de Apex de Salesforce: Implementación de ejemplo de LoginDiscoveryHandler. Aquí se describe cómo funciona el controlador de detección de inicio de sesión.

El primer paso es obtener el identificador (por email o número de teléfono) que se transmite desde la página de inicio de sesión. A continuación, compruebe si el formato del identificador es válido.

Posteriormente, consulte la base de datos para ver el usuario asociado a ese identificador. Si el usuario se encuentra activo, y si el identificador es único, compruebe si el usuario ya verificó ese identificador.

Nota

Se realiza un seguimiento de los emails y números de teléfono verificados por el usuario en la página de detalles del usuario. El campo Email verificado de usuario se establece en verdadero cuando los usuarios verifican su dirección de email. El campo Número celular verificado de usuario se establece en verdadero cuando los usuarios verifican su número de celular. (En la próxima unidad, se proporciona más información sobre el seguimiento del estado de verificación de identidad de los usuarios).

Si el identificador se verificó, envíe un código de verificación por email o mensaje de texto, y especifique la ubicación a la que se dirige al usuario después de completar correctamente la verificación. A continuación, redirija al usuario a la página Verificar, donde este deberá introducir el código de verificación. Si el identificador no se verificó, redirija al usuario a la página donde este deberá introducir una contraseña.

Ahora veamos el aspecto de la lógica del controlador en un gráfico.

Lógica del controlador de detección de inicio de sesión en un gráfico de flujo

Esta es otra forma de ver el proceso de verificación de la identidad.

  1. Obtenga el identificador.
  2. ¿Es un identificador válido?
  3. Si es válido, busque al usuario asociado con el identificador.
  4. ¿El usuario se encuentra activo?
  5. Si se muestra activo, ¿el identificador es único?
  6. Si es así, ¿el usuario verificó su identidad con ese identificador?
  7. Si se verificó el identificador, envíe un código de verificación. Si no se verificó el identificador, solicite una contraseña.
  8. Si el código de verificación o la contraseña se introdujeron correctamente, dirija al usuario a la página de inicio del sitio de Experience Cloud.

Personalizar el controlador de detección de inicio de sesión para el inicio de sesión social

A menudo, los clientes desean iniciar sesión en un sitio con sus credenciales de redes sociales, como Twitter, Google o LinkedIn. Si configuró su organización para permitir el inicio de sesión social, la detección de inicio de sesión facilita aún más el proceso para los clientes. Puede agregar lógica al controlador de manera programática para iniciar sesión con redes sociales. Esto redirigirá a los clientes directamente a la red social determinada en la lógica del controlador.

  1. Configure los proveedores de autenticación de Salesforce. El primer paso para personalizar el controlador de inicio de sesión social es comprobar si se configuró la organización para las redes sociales que desea admitir. Su organización debe disponer de proveedores de autenticación para cada una. Salesforce proporciona varios proveedores de autenticación predeterminados para conectarse con redes sociales populares, y se agregan proveedores nuevos con la aparición de otras redes. Si no dispone de las redes sociales que desea, puede crearlas con unos pocos clics.
    1. En Setup (Configuración), ingrese Auth. Providers (Proveedores de autenticación) en el cuadro de búsqueda rápida y seleccione Auth. Providers (Proveedores de autenticación).
    2. Cree un proveedor de autenticación para una red social. Su organización de Playground no se configuró con ningún proveedor de autenticación. Si desea crear uno, puede consultar la unidad Configurar el inicio de sesión de redes sociales en el módulo Identity para clientes de Trailhead. En esa unidad, se muestra la forma de configurar proveedores de autenticación y agregarlos a la página de inicio de sesión con clics.
  1. Busque las URL de SSO para su red social. Si desea agregar proveedores de autenticación de manera programática, deberá agregar las URL de SSO apropiadas a la red social.
    1. Para volver a Proveedores de autenticación, en Configuración, ingrese Auth. Providers (Proveedores de autenticación) en el cuadro de búsqueda rápida y seleccione Auth. Providers (Proveedores de autenticación).
    2. Haga clic en el vínculo al nombre de la red social que desea utilizar. Haga clic en el nombre en sí mismo, no en el vínculo Modificar.
    3. Amplíe Sitios de Experience Cloud. Se mostrará una lista de las URL de SSO para cada proveedor de autenticación en su organización.
      Captura de pantalla de URL de SSO en la página Configuración de proveedor de autenticación
  1. Agregue la lógica de SSO al controlador de detección de inicio de sesión. Para este ejercicio, la lógica de SSO se proporciona para el sitio Clientes de NTO. Para su organización de producción, agregue la lógica al controlador de detección de inicio de sesión a fin de determinar el momento en que los usuarios deben ser redirigidos a su red social. El código personalizado incluye lógica para determinar si el usuario debe utilizar una red social o iniciar sesión directamente en Salesforce. Por ejemplo, puede buscar un campo personalizado en el objeto Usuario. En el siguiente ejemplo, se implementa el inicio de sesión social mediante el objeto estándar ThirdPartyAccountLink (TPAL). Se genera una lista de vínculos de cuenta de terceros (TPAL) cuando los usuarios de una organización se autentican mediante un proveedor de autenticación externo. En este ejemplo, se consulta la tabla de TPAL y se redirige al usuario para iniciar sesión mediante Facebook o LinkedIn si se encuentra el TPAL asociado con el email del usuario.
//Redirect to Social Sign-On private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // You can look up whether the user can log in with their social credentials.
 List<ThirdPartyAccountLink> providers = [select provider from ThirdPartyAccountLink where Handle = :user.email]; String provider = providers[0].Provider; if (provider == 'facebook') {  return new PageReference([select SsoKickoffUrl from AuthProvider where DeveloperName='facebook'].SsoKickoffUrl); } else if (provider == 'linkedin') {  Return new PageReference([select SsoKickoffUrl from AuthProvider where DeveloperName='linkedin'].SsoKickoffUrl); } else {  return null; }

Recopilar información de usuario con atributos de solicitud

Puede determinar políticas de inicio de sesión basadas en el estado del navegador del usuario cuando este accede a la página de inicio de sesión. Por ejemplo, puede determinar distintas políticas para diferenciar a las personas que inician sesión desde Estados Unidos de las que inician sesión desde China.

Para recopilar datos del navegador, utilice el parámetro requestAttributes del método LoginDiscoveryHandler.login. Este parámetro transmite los siguientes valores: CommunityUrl, IpAddress, UserAgent, Platform, Application, City, Country y Subdivision. Los valores City, Country y Subdivision provienen de la geolocalización de IP.

CommunityUrl=http://MyDomainName-dev-ed.my.site.com:5555/discover IpAddress=55.555.0.0 UserAgent=Mozilla/5.0(Macintosh; Intel Mac OS X 10_13_4) Version/11.1 Safari/605.15 Platform=Mac OSX City=Chicago Country=United States Subdivision=Illinois

Aquí se muestra un ejemplo en el que se utilizan valores de geolocalización de IP.

private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // Send US users through a local IdP service if(requestAttributes.get('Country') == 'United States') { String ssoURL = 'https://mycompany.com/idp'; return new PageReference(ssoURL); } return null; }

Aquí se muestra un ejemplo para usuarios móviles (iOS).

private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // Send iOS users through Facebook SSO if(requestAttributes.get('Platform') == 'iPhone') { String ssoURL = 'https://<MyDomainName>.my.salesforce.com/nto/services/auth/sso/Facebook'; return new PageReference(ssoURL); } return null; }

Garantizar la unicidad de los usuarios

La organización de producción puede tener varios usuarios con la misma dirección de email y el mismo número de celular verificados. Pero los usuarios deben tener identificadores únicos. A fin de abordar este problema, puede agregar algunas líneas de código al controlador de detección de inicio de sesión para filtrar los usuarios y garantizar su unicidad.

La clase LoginDiscoveryHandler que se describe en la Guía del desarrollador de Apex contiene un ejemplo de código para garantizar que los usuarios con una licencia de External Identity sean únicos. Puede adaptar el código para admitir otros casos de uso. Por ejemplo, puede modificar el código para abordar usuarios con otras licencias de usuario o criterios.

Aprendió a configurar y personalizar sus páginas de inicio de sesión móvil. En la próxima unidad, aprenderá cómo realizar un seguimiento de su progreso mediante la configuración de reportes, gráficos y un tablero donde mostrar esto.

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios