Usar SAML
SAML es un estándar basado en XML para autenticación y autorización. Servidor de GitHub Enterprise puede actuar como un proveedor de servicios (SP) con tu proveedor de identidad (IdP) SAML interno.
Si deseas autenticar a los usuarios sin agregarlos a tu proveedor de identidad, puedes configurar la autenticación incorporada. Para obtener más información, consulta "Permitir autenticación incorporada para los usuarios que no pertenecen a tu proveedor de identidad."
En esta guía:
- Servicios SAML admitidos
- Consideraciones sobre el nombre de usuario con SAML
- Autenticación de dos factores
- Metadatos SAML
- Atributos de SAML
- Configurar parámetros SAML
- Revocar acceso a tu instancia de servidor de GitHub Enterprise
- Requisitos para los mensajes de respuesta
- Mensajes de error
Servicios SAML admitidos
Ofrecemos asistencia limitada para todos los proveedores de identidad que implementen la norma SAML 2.0. Respaldamos oficialmente a estos proveedores de identidad que han sido sometidos a pruebas internas:
- Active Directory Federation Services (AD FS)
- Azure Active Directory (Azure AD)
- Okta
- OneLogin
- PingOne
- Shibboleth
GitHub Enterprise no es compatible con SAML Single Logout. Para finalizar una sesión con SAML activa, los usuarios deben cerrar sesión directamente en su servidor SAML.
Consideraciones sobre el nombre de usuario con SAML
Cada nombre de usuario Servidor de GitHub Enterprise lo determina una de las siguientes aserciones en la respuesta SAML, ordenadas por prioridad:
- El atributo de nombre de usuario personalizado, si está definido y si hay uno.
- Una aserción
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
, si hay una. - Una aserción
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
assertion, si hay una. - El elemento
NameID
.
Se requiere el elemento NameID
, incluso si hay otros atributos.
Se crea una asignación entre el NameID
y el nombre de usuario Servidor de GitHub Enterprise, para que el NameID
sea persistente, único y no esté sujeto a cambios durante el ciclo de vida del usuario.
Los nombres de usuario del Servidor de GitHub Enterprise únicamente pueden contener caracteres alfanuméricos y rayas (-
). El Servidor de GitHub Enterprise convertirá en raya cualquier caracter no alfanumérico en el nombre de tu cuenta de usuario. Por ejemplo, un nombre de usuario gregory.st.john
se convertirá en gregory-st-john
. Nota que los nombres de usuarios normalizados tampoco pueden comenzar o terminar con una raya. Tampoco pueden contener dos rayas seguidas.
Los nombres de usuarios creados a partir de direcciones de correo electrónico se crean con los caracteres normalizados que preceden al caracter @
.
Si múltiples cuentas se normalizan en el mismo nombre de usuario de Servidor de GitHub Enterprise, solo se crea la primera cuenta de usuario. Los siguientes usuarios con el mismo nombre de usuario no podrán registrarse.
Esta tabla brinda ejemplos de cómo se normalizan los nombres de usuarios en el Servidor de GitHub Enterprise:
Nombre de usuario | Nombre de usuario normalizado | Resultado |
---|---|---|
Ms.Bubbles | ms-bubbles |
El nombre de usuario se crea correctamente. |
!Ms.Bubbles | -ms-bubbles |
No se crea este nombre de usuario debido a que comienza con una raya. |
Ms.Bubbles! | ms-bubbles- |
No se crea este nombre de usuario debido a que termina con una raya. |
Ms!!Bubbles | ms--bubbles |
No se crea este nombre de usuario debido a que contiene dos rayas seguidas. |
Ms!Bubbles | ms-bubbles |
No se crea este nombre de usuario. A pesar de que el nombre de usuario normalizado es válido, ya existía. |
Ms.Bubbles@example.com | ms-bubbles |
No se crea este nombre de usuario. A pesar de que el nombre de usuario normalizado es válido, ya existía. |
Autenticación de dos factores
Cuando se utiliza SAML o CAS, la autenticación de dos factores no se admite o se administra en el aparato del Servidor de GitHub Enterprise, pero es posible que lo admita un proveedor de autenticación externo. No está disponible la implementación de la autenticación de dos factores en organizaciones. Para obtener más información sobre cómo implementar la autenticación de dos factores, consulta "Requerir autenticación de dos factores en tu organización."
Metadatos SAML
Los metadatos del proveedor de servicios de tu instancia Servidor de GitHub Enterprise están disponible en http(s)://[hostname]/saml/metadata
.
Para configurar tu proveedor de identidad de forma manual, la URL del Servicio de consumidor de aserciones (ACS) es http(s)://[hostname]/saml/consume
. Esta usa el enlace urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
.
Atributos de SAML
Estos atributos están disponibles. Puedes modificar el nombre del atributo en Consola de administración, a excepción del atributo administrator
.
Nombre de atributo predeterminado | Tipo | Descripción |
---|---|---|
ID del nombre |
Requerido | Un identificador de usuario persistente. Se puede usar cualquier formato de identificador de nombre persistente. El elemento NameID se usará para un nombre de usuario Servidor de GitHub Enterprise, a menos que se proporcione una de las aserciones alternativas. |
administrador |
Opcional | Cuando el valor es "true", el usuario será promovido automáticamente como un administrador. Cualquier otro valor o un valor no existente degradará al usuario a una cuenta de usuario normal. |
nombre de usuario |
Opcional | El nombre de usuario Servidor de GitHub Enterprise. |
nombre_completo |
Opcional | El nombre del usuario que se muestra en su página de perfil. Los usuarios pueden cambiar sus nombres después del aprovisionamiento. |
correos electrónicos |
Opcional | Las direcciones de correo electrónico para el usuario. Se puede especificar más de una. |
claves_públicas |
Opcional | Las claves SSH públicas para el usuario. Se puede especificar más de una. |
claves_gpg |
Opcional | Las claves GPG para el usuario. Se puede especificar más de una. |
Configurar parámetros SAML
-
In the upper-right corner of any page, click .
-
En la barra lateral izquierda, haz clic en Consola de administración.
-
In the left sidebar, click Authentication.
-
Selecciona SAML.
-
También puedes seleccionar Permitir autenticación incorporada para invitar a los usuarios a usar la autenticación incorporada si no pertenecen al proveedor de identidad de tu instancia de servidor de GitHub Enterprise.
-
Opcionalmente, para activar el SSO de respuesta no solicitada, selecciona IdP initiated SSO. Por defecto, Servidor de GitHub Enterprise responderá a una solicitud iniciada por un proveedor de identidad (IdP) no solicitada con una
AuthnRequest
de vuelta al IdP.Nota: Te recomendamos mantener este valor sin seleccionar. Debes activar esta función solo en el caso inusual que tu implementación SAML no admita el SSO iniciado del proveedor de servicios y que Soporte para GitHub Enterprise lo aconseje.
-
Select Disable administrator demotion/promotion if you do not want your SAML provider to determine administrator rights for users on tu instancia de servidor de GitHub Enterprise.
-
En el campo URL de inicio de sesión único, escribe la HTTP o el extremo HTTPS en tu IdP para las solicitudes de inicio de sesión único. Este valor lo provee la configuración de tu IdP. Si el host solo está disponible desde tu red interna, es posible que sea necesario configurar tu instancia de servidor de GitHub Enterprise para usar los servidores de nombres internos.
-
También puedes escribir tu nombre de emisor de SAML en el campo Emisor. Esto verifica la autenticidad de los mensajes enviados a tu instancia de servidor de GitHub Enterprise.
-
In the Signature Method and Digest Method drop-down menus, choose the hashing algorithm used by your SAML issuer to verify the integrity of the requests from tu instancia de servidor de GitHub Enterprise. Especifica el formato con el menú desplegable Formato de identificador de nombre.
-
Under Verification certificate, click Choose File and choose a certificate to validate SAML responses from the IdP.
-
Modifica los nombres de atributo de SAML para hacerlos coincidir con tu IdP, si es necesario, o acepta los nombres predeterminados.
Revocar acceso a tu instancia de servidor de GitHub Enterprise
Si eliminas un usuario desde tu proveedor de identidad, también debes suspenderlos de forma manual. De lo contrario, seguirán estando disponibles para autenticarse usando los tokens de acceso o las claves SSH. Para obtener más información, consulta "Suspender y anular suspensión de usuarios".
Requisitos para los mensajes de respuesta
El mensaje de respuesta debe cumplir con los siguientes requisitos:
- El elemento
<Destination>
se debe proporcionar en el documento de respuesta raíz y coincidir con la URL ACS . - Si un elemento
<Audience>
se proporciona como parte del elemento<AudienceRestriction>
, será controlado en el Id. de entidad Servidor de GitHub Enterprise. Esta es la URL para la instancia Servidor de GitHub Enterprise, comohttps://ghe.corp.example.com
. - Cada aserción en la respuesta debe estar protegida por una firma digital. Esto se puede lograr firmando cada elemento
<Assertion>
individual o firmando el elemento<Response>
. - Un elemento
<NameID>
se debe proporcionar como parte del elemento<Subject>
. Se puede usar cualquier formato de identificador de nombre persistente. - El atributo
Recipient
debe estar presente y establecido en la URL ACS. Por ejemplo:
<samlp:Response ...>
<saml:Assertion ...>
<saml:Subject>
<saml:NameID ...>...</saml:NameID>
<saml:SubjectConfirmation ...>
<saml:SubjectConfirmationData Recipient="https://ghe.corp.example.com/saml/consume" .../>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:AttributeStatement>
<saml:Attribute FriendlyName="USERNAME-ATTRIBUTE" ...>
<saml:AttributeValue>monalisa</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
Mensajes de error
Si el Recipient
no coincide con la URL ACS, se presentará el siguiente mensaje de error en el registro de autenticación:
El destinatario en la respuesta SAML no era válido.
Si el Recipient
no es parte del mensaje de respuesta, se presentará el siguiente mensaje de error en el registro de autenticación:
El destinatario en la respuesta SAML no debe estar en blanco.
Si la respuesta SAML no está firmada o la firma no coincide con los contenidos, se presentará el siguiente mensaje de error en el registro de autenticación:
La respuesta SAML no está firmada o ha sido modificada.