Skip to main content

Referencia de configuración de SAML

Puedes ver los metadatos de SAML de tu organización o empresa, y puedes obtener más información sobre los atributos de SAML disponibles y los requisitos de respuesta.

Acerca de la configuración de SAML

A fin de usar el inicio de sesión único (SSO) de SAML para la autenticación en GitHub, debes configurar tanto el proveedor de identidades (IdP) de SAML externo como tu empresa u organización en GitHub. En una configuración de SAML, GitHub funciona como un proveedor de servicios (SP) de SAML. Para obtener más información sobre la autenticación para su empresa, consulta Aspectos básicos de la administración de identidades y acceso.

GitHub 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.

Debe especificar valores únicos para el IdP de SAML al configurar el inicio de sesión único de SAML para GitHub, y también valores únicos de GitHub en el IdP.

Metadatos SAML

Los metadatos del proveedor de servicios para GitHub Enterprise Cloud están disponibles para organizaciones o empresas con el inicio de sesión único de SAML. GitHub usa la vinculación urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST.

Si usa Enterprise Managed Users, solo puede habilitar el inicio de sesión único de SAML a nivel de empresa.

Las organizaciones

Puedes configurar el inicio de sesión único de SAML para una organización individual en la empresa. También puedes configurar SAML SSO para una organización si utilizas una organización individual en GitHub Enterprise Cloud y no utilizas una cuenta empresarial. Para más información, consulta Administrar el inicio de sesión único de SAML para tu organización.

Los metadatos del proveedor de servicios para una organización en GitHub están disponibles en https://github.com/orgs/ORGANIZATION/saml/metadata, donde ORGANIZATION es el nombre de la organización en GitHub.

ValorOtros nombresDescripciónEjemplo
ID de Entidad SPURL de SP, restricción de públicoURL de nivel superior para la organización en GitHub.comhttps://github.com/orgs/ORGANIZATION
URL del Servicio de Consumidor de Aserciones (ACS) del SPRespuesta, destinatario o URL de destinoURL a la que el IdP enviará las respuestas de SAMLhttps://github.com/orgs/ORGANIZATION/saml/consume
URL de inicio de sesión único (SSO) del SP
URL en donde el IdP comienza con SSOhttps://github.com/orgs/ORGANIZATION/sso

Empresas

En función de tu entorno, los metadatos SP de una empresa en GitHub Enterprise Cloud están disponibles en:

  • https://github.com/enterprises/ENTERPRISE/saml/metadata, donde ENTERPRISE es el nombre de la empresa.
  • https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN/saml/metadata, donde SUBDOMAIN es el subdominio de la empresa.
ValorOtros nombresDescripciónEjemplo
ID de Entidad SPURL de SP, restricción de públicoURL de nivel superior para la empresa en GitHub.comhttps://github.com/enterprises/ENTERPRISE
URL del Servicio de Consumidor de Aserciones (ACS) del SPRespuesta, destinatario o URL de destinoURL a la que el IdP enviará las respuestas de SAMLhttps://github.com/enterprises/ENTERPRISE/saml/consume
URL de inicio de sesión único (SSO) del SP
URL en donde el IdP comienza con SSOhttps://github.com/enterprises/ENTERPRISE/sso

Atributos de SAML

Los atributos de SAML siguientes están disponibles para GitHub.

NombreObligatorioDescripción
NameIDUn identificador de usuario persistente. Se puede usar cualquier formato de identificador de nombre persistente. Si usas una empresa con Enterprise Managed Users, GitHub normalizará el elemento NameID para utilizarlo como nombre de usuario a menos que se proporcione una de las aserciones alternativas. Para más información, consulta Consideraciones sobre el nombre de usuario para la autenticación externa.

          > 
          [!NOTE] 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 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. | | | | full_name | | Si configuras el inicio de sesión único de SAML para una empresa y utilizas Enterprise Managed Users, el nombre completo del usuario que se va a mostrar en la página de perfil del usuario. | | emails | | Las direcciones de correo electrónico del usuario. Si sincronizas el uso de licencias entre GitHub Enterprise Server y GitHub Enterprise Cloud, GitHub Connect utiliza emails para identificar usuarios únicos entre productos. Para más información, consulta Sincronización del uso de licencias de GitHub Enterprise Server a la nube. | | public_keys | | Si configuras el inicio de sesión único de SAML para una empresa y utilizas Enterprise Managed Users, las claves SSH públicas para el usuario. Puedes especificar más de una clave. | | gpg_keys | | Si configuras el inicio de sesión único de SAML para una empresa y utilizas Enterprise Managed Users, 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 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 dicho documento esté firmado. Si el IdP firma la aserción, GitHub la omitirá.

  • El IdP siempre debe proporcionar el elemento <Audience> como parte del elemento <AudienceRestriction>. El valor debe coincidir con EntityId para GitHub.

    • Si configuras SAML para una organización, este valor es https://github.com/orgs/ORGANIZATION.
    • Si configuras SAML para una empresa, esta dirección URL es https://github.com/enterprises/ENTERPRISE o https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN:
  • El IdP debe proporcionar una aserción única en la respuesta con una firma digital. Esto puedes lograrlo si se firma el elemento <Assertion> 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://github.com/enterprises/ENTERPRISE/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 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 invalida una sesión 24 horas después de una autenticación correcta con el IdP.

GitHub 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 valor de duración de sesión personalizado inferior a 24 horas, GitHub puede solicitar a los usuarios que se autentiquen cada vez que GitHub inicie un redireccionamiento.

Para evitar errores de autenticación, se recomienda una duración de sesión mínima de 4 horas. Para más información, consulta Solución de problemas de autenticación SAML.

Nota:

Microsoft Entra ID (anteriormente conocido como Azure AD) no admite el atributo SessionNotOnOrAfter. Además, la directiva de duración configurable para los tokens SAML emitidos por Entra ID no controla el tiempo de espera de la sesión para GitHub.