Acerca de la configuración de SAML
Para usar el inicio de sesión único (SSO) de SAML para la autenticación en GitHub AE, debes configurar tanto el proveedor de identidades (IdP) de SAML externo como tu empresa en GitHub AE. En una configuración de SAML, GitHub AE funciona como un proveedor de servicios (SP) de SAML. Para obtener más información, consulta "Sobre la autenticación de tu empresa".
GitHub AE proporciona integración según la especificación SAML 2.0. Para más información, vea la wiki de SAML en el sitio web de OASIS.
Debes especificar valores únicos para el IdP de SAML al configurar el inicio de sesión único de SAML para GitHub AE, y también valores únicos de GitHub AE en el IdP. Para obtener más información sobre la autenticación de
Metadatos SAML
Los metadatos del proveedor de servicios para la empresa GitHub AE están disponibles en https://HOSTNAME/saml/metadata
, donde HOSTNAME es el nombre de host para la empresa en GitHub AE. GitHub AE utiliza el enlace urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
.
Value | Otros nombres | Descripción | Ejemplo |
---|---|---|---|
ID de Entidad de SP | URL de SP, restricción de público | URL de nivel superior para GitHub AE | https://HOSTNAME |
URL del Servicio de Consumidor de Aserciones (ACS) del SP | URL de destino, destinatario o respuesta | URL a la que el IdP enviará respuestas de SAML | https://HOSTNAME/saml/consume |
URL de inicio de sesión único (SSO) del SP | |||
URL en donde el IdP comienza con SSO | https://HOSTNAME/sso |
Atributos de SAML
Los atributos de SAML siguientes están disponibles para GitHub AE.
Nombre | Obligatorio | Descripción |
---|---|---|
NameID | Un identificador de usuario persistente. Se puede usar cualquier formato de identificador de nombre persistente. GitHub AE normalizará el elemento NameID para utilizarlo como nombre de usuario a menos que se proporcione una de las aserciones alternativas. Para obtener más información, vea «Username considerations for external authentication». | |
Nota: Es importante usar un identificador persistente y legible. El uso de un formato de identificador transitorio, como urn:oasis:names:tc:SAML:2.0:nameid-format:transient , volverá a vincular las cuentas en cada inicio de sesión, lo que puede ser perjudicial para la administración de la autorización. | ||
SessionNotOnOrAfter | La fecha en que GitHub AE invalida la sesión asociada. Después de la invalidación, la persona debe autenticarse nuevamente para acceder a los recursos de la empresa. Para más información, consulta "Duración y tiempo de espera de la sesión". | |
administrator | Cuando el valor es true , GitHub AE promoverá automáticamente al usuario para que sea enterprise owner. Establecer este atributo en cualquier valor, excepto true , generará una disminución de nivel, siempre que el valor no esté en blanco. Omitir este atributo o dejar el valor en blanco no cambiará el rol del usuario. | |
username | Nombre de usuario de tu empresa. | |
emails | Las direcciones de correo electrónico del usuario. Puedes especificar más de una dirección. | |
public_keys | Las claves SSH públicas para el usuario. Puedes especificar más de una clave. | |
gpg_keys | Las claves GPG para el usuario. Puedes especificar más de una clave. |
A fin de especificar más de un valor para un atributo, use varios elementos <saml2:AttributeValue>
.
<saml2:Attribute FriendlyName="public_keys" Name="urn:oid:1.2.840.113549.1.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>ssh-rsa LONG KEY</saml2:AttributeValue>
<saml2:AttributeValue>ssh-rsa LONG KEY 2</saml2:AttributeValue>
</saml2:Attribute>
Requisitos de respuesta de SAML
GitHub AE requiere que el mensaje de respuesta del IdP cumpla con los requisitos siguientes.
-
El IdP debe proporcionar el elemento
<Destination>
en el documento de respuesta raíz y hacer coincidir la URL de ACS únicamente cuando se firme este documento. Si el IdP firma la aserción, GitHub AE la omitirá. -
El IdP siempre debe proporcionar el elemento
<Audience>
como parte del elemento<AudienceRestriction>
. El valor debe coincidir conEntityId
para GitHub AE. Este valor es la dirección URL en la que accedes a tu empresa, comohttps://SUBDOMAIN.githubenterprise.com
,https://SUBDOMAIN.github.us
ohttps://SUBDOMAIN.ghe.com
. -
El IdP debe proteger cada aserción de la respuesta con una firma digital. Esto se puede lograr si se firma cada elemento
<Assertion>
individual o si se firma el elemento<Response>
. -
El IdP debe proporcionar un elemento
<NameID>
como parte del elemento<Subject>
. Puedes utilizar cualquier formato de identificador de nombre persistente. -
El IdP debe incluir el atributo
Recipient
, que se debe establecer en la URL de ACS. En el ejemplo siguiente, se muestra el atributo.<samlp:Response ...> <saml:Assertion ...> <saml:Subject> <saml:NameID ...>...</saml:NameID> <saml:SubjectConfirmation ...> <saml:SubjectConfirmationData Recipient="https://SUBDOMAIN.ghe.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>
Duración y tiempo de espera de la sesión
Para evitar que una persona se autentique con el IdP y permanezca autorizada indefinidamente, GitHub AE invalida periódicamente la sesión de cada cuenta de usuario con acceso a los recursos de la empresa. Después de la invalidación, la persona se debe volver a autenticar con el IdP.
De manera predeterminada, si el IdP no declara un valor para el atributo SessionNotOnOrAfter
, GitHub AE invalida una sesión una semana después de una autenticación correcta con el IdP.
GitHub AE admitirá una duración de sesión personalizada si su IdP ofrece la opción de configurar un atributo SessionNotOnOrAfter
y un valor.
Si defines un un valor de duración de sesión personalizado inferior a 24 horas, GitHub AE puede solicitarle a los usuarios que se autentiquen cada vez que GitHub AE inicia un redireccionamiento.
Notas:
- Para Azure AD, la directiva de duración configurable para los tokens SAML no controla el tiempo de espera de sesión para GitHub AE.
- Actualmente, Okta no envía el atributo
SessionNotOnOrAfter
durante la autenticación SAML con GitHub AE. Para más información, ponte en contacto con Okta.