Sobre a configuração do SAML
Para usar o logon único (SSO) SAML para autenticação no GitHub, você deve configurar tanto o provedor de identidade SAML (IdP) externo quanto sua empresa ou organização no GitHub. Em uma configuração SAML, GitHub funciona como um SP (provedor de serviços SAML). Para obter mais informações sobre autenticação para sua empresa, confira Conceitos básicos de gerenciamento de identidade e acesso.
GitHub fornece integração de acordo com a especificação SAML 2.0. Para obter mais informações, confira o wiki do SAML no site do OASIS.
Você deve inserir valores específicos do seu IdP SAML ao configurar o SSO SAML para GitHub, e também deve inserir valores específicos de GitHub no seu IdP.
Metadados SAML
Os metadados de SP para GitHub Enterprise Cloud estão disponíveis para organizações ou empresas com SSO SAML.
GitHub usa a associação urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST .
Se você usar Enterprise Managed Users, só poderá habilitar o SSO do SAML no nível da empresa.
Organizações
Você pode configurar o SSO do SAML para uma organização individual em sua empresa. Você também pode configurar o SSO via SAML para uma organização se você usar uma organização individual no GitHub Enterprise Cloud e não usar uma conta empresarial. Para saber mais, confira Gerenciar o logon único SAML para sua organização.
Os metadados de SP de uma organização em GitHub estão disponíveis em https://github.com/orgs/ORGANIZATION/saml/metadata, em que ORGANIZATION é o nome da sua organização em GitHub.
| Valor | Outros nomes | Descrição | Exemplo |
|---|---|---|---|
| ID da Entidade do SP | URL do SharePoint, restrição de público | A URL principal da sua organização em GitHub.com | https:/ |
| URL do Serviço do Consumidor de Declaração (ACS) do SP | URL de resposta, destinatário ou destino | URL em que o IdP envia respostas do SAML | https:/ |
| URL de logon único (SSO) do SP | |||
| URL em que o IdP começa com SSO | https:/ |
Empresas
Dependendo do seu ambiente, os metadados de SP de uma empresa no GitHub Enterprise Cloud estão disponíveis em um destes locais:
https://github.com/enterprises/ENTERPRISE/saml/metadata, em que ENTERPRISE é o nome da sua empresahttps://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN/saml/metadata, em que SUBDOMAIN é o subdomínio da sua empresa
| Valor | Outros nomes | Descrição | Exemplo |
|---|---|---|---|
| ID da Entidade do SP | URL do SharePoint, restrição de público | A URL principal da sua empresa em GitHub.com | https:/ |
| URL do Serviço do Consumidor de Declaração (ACS) do SP | URL de resposta, destinatário ou destino | URL em que o IdP envia respostas do SAML | https:/ |
| URL de logon único (SSO) do SP | |||
| URL em que o IdP começa com SSO | https:/ |
Atributos SAML
Os atributos SAML a seguir estão disponíveis para GitHub.
| Nome | Obrigatório | Descrição |
|---|---|---|
NameID | Identificador de usuário persistente. Qualquer formato de identificador de nome persistente pode ser usado. | |
Se você usar uma empresa com Enterprise Managed Users, GitHub normalizará o NameID elemento a ser usado como um nome de usuário, a menos que uma das declarações alternativas seja fornecida. Para saber mais, confira Considerações de nome de usuário para autenticação externa. |
[!NOTE] É importante usar um identificador persistente e legível. O uso de um formato de identificador transitório como urn:oasis:names:tc:SAML:2.0:nameid-format:transient resultará na reassociação de contas a cada login, o que pode ser prejudicial ao gerenciamento de autorização. |
| SessionNotOnOrAfter | | A data que GitHub invalida a sessão associada. Após a invalidação, a pessoa deve se autenticar mais uma vez para acessar os recursos da sua empresa. Para obter mais informações, confira Duração e tempo limite da sessão. |
| |
| full_name | |
Se você configurar o SSO SAML para uma organização e usar Enterprise Managed Users, o nome completo do usuário a ser exibido na página de perfil do usuário. |
| emails | | Os endereços de email do usuário. Se você sincronizar o uso da licença entre GitHub Enterprise Server e GitHub Enterprise Cloud, GitHub Connect usará emails para identificar usuários únicos em todos os produtos. Para saber mais, confira Sincronizando o uso de licença do GitHub Enterprise Server para a nuvem. |
| public_keys | |
Se você configurar o SSO do SAML para uma empresa e usarEnterprise Managed Users, as chaves SSH públicas para o usuário. Você pode especificar mais de uma chave. |
| gpg_keys | |
Se você configurar o SSO do SAML para uma empresa e usarEnterprise Managed Users, as chaves GPG para o usuário. Você pode especificar mais de uma chave. |
Para especificar mais de um valor para um atributo, use vários 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 da resposta SAML
GitHub requer que a mensagem de resposta do IdP atenda aos requisitos a seguir.
-
O seu IdP precisa fornecer o elemento
<Destination>no documento de resposta raiz e precisa corresponder à URL do ACS somente quando o documento de resposta raiz está assinado. Se o IdP assinar a asserção, GitHub ignorará a asserção. -
O IdP sempre deve fornecer o elemento
<Audience>como parte do elemento<AudienceRestriction>. O valor deve corresponder ao seuEntityIdpara GitHub.- Se você configurar o SAML para uma organização, esse valor será
https://github.com/orgs/ORGANIZATION. - Se você configurar o SAML para uma empresa, essa URL será
https://github.com/enterprises/ENTERPRISEouhttps://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN.
- Se você configurar o SAML para uma organização, esse valor será
-
Seu IdP deve fornecer uma única declaração na resposta com uma assinatura digital. Para fazer isso, você pode assinar o elemento
<Assertion>ou assinar o elemento<Response>. -
Seu IdP deve fornecer um elemento
<NameID>como parte do elemento<Subject>. Você pode usar qualquer formato de identificador de nome persistente. -
Seu IdP deve incluir o atributo
Recipient, que deve ser definido como a URL do ACS. O exemplo a seguir demonstra o 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>
Duração e tempo limite da sessão
Para impedir que uma pessoa se autentique com seu IdP e fique autorizada indefinidamente, GitHub invalida periodicamente a sessão para cada conta de usuário com acesso aos recursos da sua empresa. Após a invalidação, a pessoa deve se autenticar com o IdP mais uma vez.
Por padrão, se o IdP não declara um valor para o SessionNotOnOrAfter atributo, GitHub invalida uma sessão 24 horas após a autenticação bem-sucedida com o IdP.
GitHub dará suporte a uma duração de sessão personalizada se o IdP fornecer a opção de configurar um SessionNotOnOrAfter atributo e valor.
Se você definir um valor de duração de sessão personalizado menor que 24 horas, GitHub poderá solicitar que as pessoas se autentiquem sempre GitHub que iniciar um redirecionamento.
Para evitar erros de autenticação, recomendamos uma duração mínima da sessão de 4 horas. Para saber mais, confira Solucionando problemas de autenticação SAML.
Observação
Microsoft Entra ID (anteriormente conhecido como Azure AD) ** não dá suporte ao atributo SessionNotOnOrAfter**. Além disso, a política de tempo de vida configurável para tokens SAML emitidos por Entra ID não controla o tempo limite da sessão.GitHub