Esta versão do GitHub Enterprise foi descontinuada em 2021-06-09. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, melhorar a segurança e novos recursos, upgrade to the latest version of GitHub Enterprise. Para ajuda com a atualização, contact GitHub Enterprise support.

Usar SAML

O SAML é um padrão de autenticação e autorização baseado em XML. O GitHub Enterprise Server pode agir como provedor de serviços (SP, Service Provider) com seu provedor de identidade (IdP, Identity Provider) SAML interno.

Se você quiser autenticar usuários sem adicioná-los ao seu provedor de identidade, você pode configurar a autenticação integrada. Para obter mais informações, consulte "Permitir a autenticação integrada para usuários de fora do provedor de identidade".

Serviços SAML compatíveis

Oferecemos suporte limitado para todos os provedores de identidade que implementam o padrão SAML 2.0. Apoiamos oficialmente esses provedores de identidade que foram testados internamente:

  • Active Directory Federation Services (AD FS)
  • Azure Active Directory (Azure AD)
  • Okta
  • OneLogin
  • PingOne
  • Shibboleth

GitHub Enterprise Server não é compatível com o logout único SAML. Para finalizar uma sessão do SAML ativa, os usuários devem efetuar o logout diretamente no seu IdP do SAML.

Considerações de nome de usuário no SAML

Cada nome de usuário do GitHub Enterprise Server é determinado por uma das seguintes afirmações na resposta SAML, ordenada por prioridade:

  • Nome de usuário personalizado, se houver;
  • Declaração http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, se houver;
  • Declaração http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress, se houver;
  • Elemento NameID.

O elemento NameID é obrigatório, mesmo que os outros atributos estejam presentes.

É criado um mapeamento entre NameID e o nome de usuário do GitHub Enterprise Server. Portanto, o NameID deve ser persistente, exclusivo e não estar sujeito a alterações no ciclo de vida do usuário.

Observação: Se o NameID para um usuário for alterado no IdP, o usuário verá uma mensagem de erro ao tentar entrar na sua instância do GitHub Enterprise Server. Para obter mais informações, consulte "Erro: 'Outro usuário já possui a conta'."

Nomes de usuário de GitHub Enterprise Server só podem conter caracteres alfanuméricos e traços (-). GitHub Enterprise Server normalizará qualquer caractere não alfanumérico do nome de usuário da sua conta em um traço. Por exemplo, um nome de usuário de gregory.st.john será normalizado para gregory-st-john. Observe que nomes de usuários normalizados também não podem iniciar ou terminar com um traço. Eles também não podem conter dois traços consecutivos.

Nomes de usuário criados a partir de endereços de e-mail são criados a partir dos caracteres normalizados que precedem o caractere @.

Se várias contas forem normalizadas no mesmo nome de usuário do GitHub Enterprise Server apenas a primeira conta de usuário é criada. Usuários subsequentes com o mesmo nome de usuário não serão capazes de fazer o login.

Esta tabela dá exemplos de como os nomes de usuário são normalizados em GitHub Enterprise Server:

Nome de usuárioNome de usuário normalizadoResultado
Ms.Bubblesms-bubblesNome de usuário criado com sucesso.
!Ms.Bubbles-ms-bubblesEste nome de usuário não é criado, porque começa com um traço.
Ms.Bubbles!ms-bubbles-Este nome de usuário não é criado, porque termina com um traço.
Ms!!Bubblesms--bubblesEste nome de usuário não é criado, porque contém dois traços consecutivos.
Ms!Bubblesms-bubblesEste nome de usuário não é criado. Embora o nome de usuário normalizado seja válido, ele já existe.
Ms.Bubbles@example.comms-bubblesEste nome de usuário não é criado. Embora o nome de usuário normalizado seja válido, ele já existe.

Autenticação de dois fatores

Quando usar SAML ou CAS, a autenticação de dois fatores não é suportada ou gerenciada no appliance do GitHub Enterprise Server, mas pode ser suportada pelo provedor de autenticação externa. A aplicação da autenticação de dois fatores em organizações não está disponível. Para obter mais informações sobre a aplicação da autenticação de dois fatores nas organizações, consulte "Requiring two-factor authentication in your organization."

Metadados SAML

Os metadados do seu provedor de serviço da instância de GitHub Enterprise Server estão disponíveis em http(s)://[hostname]/saml/metadata.

Para configurar seu provedor de identidade manualmente, a URL do serviço de consumidor de declaração (ACS, Assertion Consumer Service) é http(s)://[hostname]/saml/consume e usa a associação urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST.

Atributos SAML

Os atributos a seguir estão disponíveis. Você pode alterar seus nomes no console de gerenciamento, exceto o atributo administrator.

Nome padrão do atributoTipoDescrição
NameIDObrigatórioIdentificador de usuário persistente. Qualquer formato de identificador de nome persistente pode ser usado. O elemento NameID será usado para um nome de usuário do GitHub Enterprise Server, a menos que uma das declarações alternativas seja fornecida.
administradorOpcionalQuando o valor for 'true', o usuário será promovido automaticamente como administrador. Qualquer outro valor ou um valor não existente rebaixará o usuário para uma conta regular.
nome de usuárioOpcionalNome do usuário no GitHub Enterprise Server.
full_nameOpcionalNome do usuário exibido na página de perfil. Após o provisionamento, os usuários podem alterar seus nomes.
emailsOpcionalEndereços de e-mail para o usuário. É possível especificar mais de um.
public_keysOpcionalChaves SSH públicas para o usuário. É possível especificar mais de um.
gpg_keysOpcionalChaves chaves GPG para o usuário. É possível especificar mais de um.

Definir configurações SAML

  1. A partir de uma conta administrativa em GitHub Enterprise Server, clique em no canto superior direito de qualquer página. Ícone de foguete para acessar as configurações de administrador do site

  2. Na barra lateral esquerda, clique em Console de gerenciamento. Console de gerenciamento aba na barra lateral esquerda

  3. Na barra lateral esquerda, clique em Authentication. Aba de autenticação na barra lateral de configurações

  4. Selecione SAML. Autenticação SAML

  5. Opcionalmente, selecione Allow built-in authentication para convidar usuários a utilizar a autenticação integrada se eles não pertencerem ao provedor de identidade do sua instância do GitHub Enterprise Server. Selecionar caixa de autenticação integrada SAML

  6. Para habilitar SSO de resposta não solicitada, selecione IdP initiated SSO (SSO iniciado pelo IdP). Por padrão, o GitHub Enterprise Server responderá a uma solicitação iniciada pelo Provedor de identidade (IdP) não solicitado com AuthnRequest. SAML idP SSO

    Observação: é recomendável manter esse valor desmarcado. Você deve habilitar esse recurso somente na rara instância em que sua implementação SAML não oferecer suporte ao SSO iniciado pelo provedor de serviços e quando recomendado pelo Suporte do GitHub Enterprise.

  7. Selecione Disable administrator demotion/promotion (Desabilitar rebaixamento/promoção do administrador) se você não quiser que o provedor SAML determine direitos de administrador para usuários no sua instância do GitHub Enterprise Server. Configuração de desabilitar administrador de SAML

  8. No campo Sign on URL (URL de logon), digite o ponto de extremidade HTTP ou HTTPS do seu IdP para solicitações de logon único. Esse valor é fornecido pela configuração do IdP. Se o nome do host só estiver disponível na rede interna, talvez seja necessário configurar a sua instância do GitHub Enterprise Server para usar servidores de nomes internos. Autenticação SAML

  9. Como alternativa, no campo Issuer (Emissor), digite o nome do emissor de SAML. Fazer isso verifica a autenticidade das mensagens enviadas para a sua instância do GitHub Enterprise Server. Emissor SAML

  10. Nos menus suspensos Signature Method (Método de assinatura) e Digest Method (Método de compilação), escolha o algoritmo de hash usado pelo emissor SAML para verificar a integridade das solicitações do sua instância do GitHub Enterprise Server. Especifique o formato no menu suspenso Name Identifier Format (Formato de identificador de nome). Método SAML

  11. Em Verification certificate (Certificado de verificação), clique em Choose File (Escolher arquivo) e escolha um certificado para validar as respostas SAML do IdP. Autenticação SAML

  12. Modifique os nomes do atributo SAML para corresponder ao IdP, se necessário, ou aceite os nomes padrão. Nomes de atributos SAML

Revogar o acesso à sua instância do GitHub Enterprise Server

Se remover um usuário do seu provedor de identidade, você também deverá suspendê-lo manualmente. Caso contrário, ele continuará podendo fazer autenticação usando tokens de acesso ou chaves SSH. Para obter mais informações, consulte "Suspender e cancelar a suspensão de usuários".

Requisitos de mensagem de resposta

A mensagem de resposta deve atender aos seguintes requisitos:

  • O <Destination> elemento deve sempre ser fornecido no documento de resposta raiz e deve corresponder ao URL do ACS somente quando o documento de resposta raiz estiver assinado. Se for assinada, a declaração será ignorada.
  • O elemento <Audience> deve sempre ser fornecido como parte do elemento <AudienceRestriction>. O elemento <Audience> deve sempre ser fornecido como parte do elemento <AudienceRestriction>. Esta é a URL para a instância do GitHub Enterprise Server, como https://ghe.corp.example.com.
  • Todas as declarações na resposta devem ser precedidas de assinatura digital. É possível fazer isso assinando cada elemento <Assertion> ou assinando o elemento <Response>.
  • Um elemento <NameID> deve ser fornecido como parte do elemento <Subject>. Qualquer formato de identificador de nome persistente pode ser usado.
  • O atributo Recipient deve estar presente e definido na URL do ACS. Por exemplo:
<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>

Autenticação SAML

Mensagens de erro de registro de GitHub Enterprise Server para autenticação do SAML falhada no registro de autenticação em /var/log/github/auth.log. Para obter mais informações sobre os requisitos de resposta do SAML, consulte "Requisitos de mensagem de resposta".

Erro: "Outro usuário já possui a conta"

Quando um usuário inicia a sessão em GitHub Enterprise Server pela primeira vez com autenticação do SAML, GitHub Enterprise Server cria uma conta de usuário na instância e mapeia o NameID do SAML com a conta.

Quando o usuário inicia a sessão novamente, GitHub Enterprise Server compara o mapeamento do NameID da conta com a resposta do IdP. Se o NameID na resposta do IdP não corresponder mais ao NameID que GitHub Enterprise Server espera para o usuário. ocorrerá uma falha no login. O usuário receberá a seguinte mensagem.

Outro usuário já possui a conta. Solicite ao administrador que verifique o registro de autenticação.

De modo geral, a mensagem indica que o nome de usuário ou endereço de email da pessoa foi alterado no IdP. Certifique-se de que o mapeamento de NomeID para a conta do usuário em GitHub Enterprise Server corresponde ao NomeID do usuário no seu IdP. Para obter mais informações, consulte "Atualizar o NameID do SAML.

Se a resposta SAML não estiver assinada ou se a assinatura não corresponder ao conteúdo, o log de autenticação mostrará a seguinte mensagem de erro:

Se Recipient não corresponder à URL do ACS, o log de autenticação mostrará a seguinte mensagem de erro:

Recipient na resposta SAML não pode ficar em branco.
Recipient na resposta SAML não era válido.

Certifique-se de definir o valor de Destinatário no seu IdP como a URL do ACS completo para a sua instância do GitHub Enterprise Server. Por exemplo, https://ghe.corp.example.com/saml/consume.

Erro: "Resposta do SAML não foi assinada ou foi modificada"

Se seu IdP não assinar a resposta do SAML ou a assinatura não corresponder ao conteúdo, será exibida a seguinte mensagem de erro no registro de autenticação.

Resposta SAML não assinada ou modificada.

Certifique-se de que você configurou as declarações assinadas para o aplicativo de GitHub Enterprise Server no seu IdP.

Erro: "Audiência é inválida" ou "Nenhuma declaração encontrada"

Se a resposta do IdP tiver um valor ausente ou incorreto para Audiência, a seguinte mensagem de erro aparecerá no registro de autenticação.

Audience inválido. O atributo Audience não corresponde a url_sua_instância

Certifique-se de definir o valor para Audiência no seu IdP para a EntityId para a sua instância do GitHub Enterprise Server, que é a URL completa para sua instância do GitHub Enterprise Server. Por exemplo, https://ghe.corp.example.com.