Introducción
A medida que las organizaciones implementan múltiples sistemas de software, cada uno con sus propios mecanismos de control de acceso, mantener la información de identidad y autenticación de los usuarios se convierte en una tarea administrativa onerosa. Los usuarios de estos sistemas también se ven afectados, ya que deben recordar múltiples nombres de usuario y contraseñas y autenticarse por separado en cada aplicación.
Para resolver estos problemas, se concibió el concepto de Inicio de Sesión Único (SSO).
SSO intenta definir de manera única el control de acceso de múltiples sistemas de software relacionados. Con SSO, un usuario inicia sesión con un solo nombre de usuario y contraseña y obtiene acceso a múltiples sistemas sin tener que proporcionar autenticación por separado para cada sistema.
SAML 2.0 como Mecanismo para la Implementación de SSO
Security Assertion Markup Language (SAML) es un estándar creado para intercambiar datos de autenticación entre aplicaciones o dominios de seguridad. El protocolo SAML 2.0 permite que la información del usuario se comparta entre una autoridad compatible con SAML 2.0 y aplicaciones compatibles con SAML 2.0. SAML 2.0 es un protocolo basado en XML y todos los intercambios de datos se transmiten como documentos XML estándar. El estándar SAML es mantenido por The Organization for the Advancement of Structured Information Standards (OASIS).
Tutorial útil: https://www.okta.com/integrate/documentation/saml/
Términos de SAML 2.0:
Proveedor de Identidad (IdP) – Un sistema que gestiona la información del usuario y proporciona servicios de autenticación para aplicaciones que dependen de él. Un proveedor de identidad puede establecerse utilizando los servicios de proveedores como OneLogin, Okta y otros. Las organizaciones pueden optar por implementar su propio sistema IdP privado. Un ejemplo popular es el proyecto Gluu Server.
Proveedor de Servicios (SP) – Cualquier sistema de software utilizado por una organización que depende de un IdP para el control de acceso. El producto WFMSG Community es un ejemplo de una aplicación SP.
Implementación de SSO de Community a través de SAML 2.0
La especificación SAML 2.0 es amplia y admite muchos métodos posibles de autenticación de usuarios. Community implementa un modelo de redirección de autenticación. Cuando Community detecta que un usuario necesita ser autenticado, redirige el navegador del usuario al sitio del IdP configurado donde se realiza la autenticación.
El Proceso de Autenticación:
1. Un usuario intenta acceder a un recurso de Community
2. Community detecta la necesidad de autenticar al usuario
3. Community redirige al usuario al punto final del IdP configurado
4. Si el IdP no ha autenticado previamente al usuario, solicita el nombre de usuario y la contraseña
5. Si el inicio de sesión es exitoso, el IdP genera un documento de autenticación XML compatible con SAML 2.0
6. El IdP envía el documento XML a la aplicación consumidora de SAML 2.0 de Community en https://companysite/CommunityWeb/UI/SAML/consumer.aspx
7. Community verifica la autenticidad del documento XML y lee el nombre de usuario
8. Community verifica el nombre de usuario internamente, configura la sesión del usuario y presenta la página de inicio de Community Today
Requisitos de Configuración de SAML 2.0
Requisito del Proveedor de Identidad
Cuando la aplicación Community se configura con el proveedor de identidad, el punto final del consumidor SAML dentro de Community debe proporcionarse como parte de la configuración. El punto final es:
https://companysite/CommunityWeb/UI/SAML/consumer.aspx
Todos los cortafuegos e implementaciones de seguridad deben configurarse para permitir la conectividad entre el IdP y este punto final.
Requisitos de la Comunidad
Los siguientes parámetros SAML son requeridos por la Comunidad:
• URL del punto final del IdP
• URL del emisor del IdP
• Nombre de la etiqueta XML del ID de usuario de la Comunidad
• Certificado de seguridad X.509
Estos valores se generan o crean cuando un administrador define inicialmente la Comunidad como una aplicación de Proveedor de Servicios dentro del sistema IdP. Estos valores deben conocerse antes de realizar la configuración inicial de la Comunidad, ya que son necesarios para definir SAML como el método de autenticación.
CommunityWFM requiere que se cree una cuenta de usuario SSO para el soporte de CommunityWFM con acceso a la aplicación de la Comunidad.
Configuración de Okta y Comunidad para Usar SAML
Desde la página del menú de Aplicaciones de Okta (usando Interfaz Clásica):
1. Selecciona Agregar Aplicación
2. Selecciona Crear Nueva Aplicación
3. Selecciona Web para Plataforma
4. Selecciona SAML 2.0 para el método de inicio de sesión
5. Haz clic en Crear:
6. Configuración General:
a. Escribe el nombre de la aplicación y haz clic en Siguiente:
7. Configuración SAML:
a. Para ambos URL de inicio de sesión único y URI de audiencia (ID de entidad SP) usa:
https://MyCompany.com/CommunityWeb/UI/SAML/consumer.aspx
Nota: reemplaza MyCompany.com con el nombre/URL de tu servidor de la Comunidad
b. Selecciona EmailAddress para el formato de ID de Nombre
c. Selecciona nombre de usuario de Okta para el nombre de usuario de la aplicación
d. Agrega Otro usando Email para el Nombre, No especificado para el formato de Nombre, y user.email para el Valor y selecciona Agregar Otro
e. Haz clic en Siguiente
8. Retroalimentación
a. Selecciona las opciones que aplican a tu empresa y luego haz clic en Finalizar
9. Configuración de Inicio de Sesión:
a. Haz clic en Ver Instrucciones de Configuración:
b. Copia y pega los campos en un documento de texto y proporciónalos al gerente de proyecto de CommunityWFM. A continuación se muestra un ejemplo de las Instrucciones de Configuración.
10. Configuración del Servidor CommunityWFM
a. El ingeniero de servicios profesionales de la Comunidad pegará las configuraciones proporcionadas en la página Configurar Autenticación SAML bajo Configuración > Configuración de la aplicación > Configuración global y preferencias
b. Hay dos tipos de SSO disponibles bajo Tipo de Inicio de Sesión Único:
i. SSO Iniciado por el Proveedor de Servicios (SP):
ii. SSO Iniciado por el Proveedor de Identidad (IdP):
Configuración de Registro SAML de la Comunidad
Community proporciona a los usuarios la capacidad de habilitar el registro mejorado para solucionar problemas de fallas de SAML en el enlace Haga clic aquí para opciones de registro en la página Configurar autenticación SAML bajo Configuración > Configuración de la aplicación > Configuración global y preferencias:
Los usuarios tienen la opción de habilitar la duración del registro mejorado para los próximos 5 minutos, 15 minutos o 30 minutos. El registro se detendrá automáticamente después de alcanzar la duración especificada:
Además, el usuario tiene la opción de seleccionar el(los) objetivo(s) de registro: Registrar en el registro de la aplicación del servidor de Community y/o Registrar en la base de datos de Community:
A continuación se muestra un ejemplo de los registros reportados:
[/SAML/consumer.aspx] Consumidor de SAML llamado el 16/11/2020 a las 2:46:34 PM.
[/SAML/consumer.aspx] Intentando leer la configuración de SAML de Community...
[/SAML/consumer.aspx] La configuración de SAML de Community se leyó con éxito.
[/SAML/consumer.aspx] Se detectó enlace HTTP POST.
[/SAML/consumer.aspx] Los datos POST se leyeron con éxito. (Longitud: 6275)
[/SAML/consumer.aspx] SAMLResponse se leyó con éxito. (Longitud: 6208)
[/SAML/consumer.aspx] La decodificación fue exitosa.
[/SAML/consumer.aspx] Creando objeto de respuesta...
[/SAML/consumer.aspx] Objeto de respuesta creado.
[/SAML/consumer.aspx] Evaluación de StatusCode...<APROBADO>
[/SAML/consumer.aspx] Evaluación de IssueInstant...<APROBADO>
[/SAML/consumer.aspx] Leyendo nombre de usuario de Community desde el atributo Email...
[/SAML/consumer.aspx] No se pudo leer desde el atributo Email
[/SAML/consumer.aspx] Se presentaron estos atributos...
Clave: 'http://schemas.microsoft.com/identity/claims/tenantid' Contiene Valor: '93ca9525-cce1-42c8-8b0d-8ce24900b910'
Clave: 'http://schemas.microsoft.com/identity/claims/objectidentifier' Contiene Valor: '26254ad1-37b4-43da-9a19-79f032f9b8fc'
Clave: 'http://schemas.microsoft.com/identity/claims/identityprovider' Contiene Valor: 'https://sts.windows.net/36ee4888-e62d-476c-924a-a7dc71ba90fe/'
Clave: 'http://schemas.microsoft.com/claims/authnmethodsreferences' Contiene Valor: 'http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password'
Clave: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name' Contiene Valor: 'agentname@wfmsg.com'
Clave: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/email' Contiene Valor: 'agentname@wfmsg.com'
Solución de problemas de autenticación SAML en Community
El registro de la aplicación del servidor de Windows
Cuando el proceso de autenticación SAML falla, se presenta al usuario una página genérica de "falla de autenticación SAML" sin detalles de por qué ocurrió la falla. Los detalles específicos sobre la falla se pueden encontrar en el registro de la aplicación del servidor de Community.
Punto de depuración de SAML de Community
Community también proporciona un punto de depuración que ofrece detalles útiles al solucionar fallas de SAML.
Para usar este recurso:
- En el IdP, cambie temporalmente el punto de consumo de la aplicación Community a:
https://companysite/CommunityWeb/UI/SAML/test.aspx - Realice un inicio de sesión de usuario
- Community mostrará una página de depuración
La página de depuración muestra los valores exactos de los parámetros que estaban contenidos en el documento XML recibido del IdP. Estos valores se pueden usar para identificar y reparar cualquier discrepancia contenida en la configuración de SAML de Community.
Configurar notas utilizando varios IdP SAML
Okta
Desde la página del menú de Aplicaciones de Okta, selecciona Agregar Aplicación | Crear Nueva Aplicación. Crea una aplicación de plataforma "web", SAML 2.0.
Cuando se te pida la URL de inicio de sesión único, usa:
https://ReplaceWithYourCompanySite//CommunityWeb/UI/SAML/test.aspx para probar y luego reemplaza con la URL de la aplicación a continuación
https://ReplaceWithYourCompanySite/CommunityWeb/UI/SAML/consumer.aspx,
usa las mismas URLs para Audiencia que se usaron para el inicio de sesión único.
Agrega un atributo bajo "Declaraciones de Atributos" con el nombre de Correo Electrónico, el formato puede permanecer 'no especificado' y el valor debe ser user.email
El resto de la configuración puede permanecer en sus valores predeterminados.
Después de avanzar a través del asistente y completar la creación de la aplicación, debería llevarte a la "Página de Inicio de Sesión de la Aplicación":
Selecciona "Ver Instrucciones de Configuración". Esto tiene los parámetros necesarios para configurar el lado de la Comunidad de la conexión.
Lo siguiente es un ejemplo de lo que se muestra después de seleccionar "Ver Instrucciones de Configuración".
Por favor copia y pega cada uno de estos en su totalidad en un documento de texto y proporciónalo al Gerente de Proyecto de CommunityWFM.
Azure Cloud ADFS
1. En la sección de Configuración Básica de SAML, dos valores que necesitan ser configurados en el lado de ADFS son el "Identificador (ID de Entidad)" y la "URL de Respuesta (URL de Servicio de Aserción al Cliente)". Estos deben configurarse en
https://ReplaceWithYourCompanySite/CommunityWeb/UI/SAML/test.aspx para probar y luego reemplazar con la URL de la aplicación una vez que se complete la prueba https://ReplaceWithYourCompanySite/CommunityWeb/UI/SAML/consumer.aspx
2. En la sección de Atributos y Reclamaciones de Usuario, selecciona editar (icono de lápiz) y luego edita la "reclamación" individual para la dirección de correo electrónico. Diferente de la imagen a continuación, el Nombre de la Reclamación contendrá todo el "Espacio de Nombres".
3. El "Espacio de Nombres" necesita ser eliminado y el "Nombre" debe configurarse en el texto más corto de "Correo Electrónico".
4. Por favor copia y pega cada uno de estos en su totalidad en un documento de texto y proporciónalo al Gerente de Proyecto de CommunityWFM.
a. La "URL de Inicio de Sesión" de ADFS = "Punto de Conexión IdP de SAML"
b. El "Identificador de Azure AD" de ADFS = "Emisor de SAML"
c. El nombre del Atributo de Usuario de ADFS de "Correo Electrónico" = "Atributo de Usuario XML de SAML"
d. El Certificado de ADFS (Base64) = "Certificado de Seguridad