Manual técnico
Introducción
El Single Sign-On (SSO) de Gosocket permite la autenticación centralizada de usuarios mediante el protocolo SAML 2.0, integrándose con proveedores de identidad (IdP) compatibles, como Microsoft Entra ID (Azure AD), Okta y PingFederate.
Este documento presenta los requisitos previos para la implementación, la información requerida para la integración y el diagrama del flujo de autenticación mediante SSO.
Requisitos Previos
Antes de iniciar la integración de SSO, asegúrese de cumplir con los siguientes requisitos:
Requisitos del Cliente
- Contar con un Proveedor de Identidad (IdP) compatible con SAML 2.0.
- Tener acceso administrativo al IdP para crear y configurar una nueva aplicación de integración con Gosocket.
- Definir los dominios autorizados para autenticación en Gosocket.
- Disponer de la información necesaria para el intercambio de metadatos entre el IdP y Gosocket.
Información requerida para la integración
El cliente deberá proporcionar la URL del archivo de metadata, el cual debe contener:
- EntityID del IdP
- SingleSignOnService (URL del servicio SSO)
El siguiente es un ejemplo de los metadatos requeridos:
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://idp.cliente.com/entity">
<IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<SingleSignOnService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://idp.cliente.com/saml/sso"/>
<KeyDescriptor use="signing">
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>MIIC4DCCAcigAwIBAgI...</X509Certificate>
</X509Data>
</KeyInfo>
</KeyDescriptor>
</IDPSSODescriptor>
</EntityDescriptor>
En la respuesta SAML, deben incluirse obligatoriamente los siguientes atributos:
- Subject
- NameID: en este campo siempre debe ir el correo electrónico del usuario.
El siguiente es un ejemplo de una respuesta SAML:
<saml2p:Response xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
ID="_123456789"
IssueInstant="2024-05-20T10:00:00Z"
Destination="https://auth.gosocket.net/core/EmpresaXYZ/Acs">
<saml2:Issuer>https://ejemplo.com/entity</saml2:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
<saml2p:Status>
<saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</saml2p:Status>
<saml2:Assertion ID="_abcdef" IssueInstant="2024-05-20T10:00:01Z">
<saml2:Subject>
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
SPNameQualifier="https://auth.gosocket.net/">
usuario@ejemplo.com
</saml2:NameID>
<saml2:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml2:SubjectConfirmationData
NotOnOrAfter="2024-05-20T10:05:00Z"
Recipient="https://auth.gosocket.net/core/EmpresaXYZ/Acs"/>
</saml2:SubjectConfirmation>
</saml2:Subject>
<!-- Resto de la Assertion -->
</saml2:Assertion>
</saml2p:Response>
Diagrama de flujo del SSO
A continuación, se presenta un diagrama del flujo de autenticación mediante SSO:
