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 restaurar o acesso do usuário, você precisa atualizar o mapeamento do NameID da conta do usuário. Para obter mais informações, consulte "Atualizar o NameIDo do SAML.
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ário | Nome de usuário normalizado | Resultado | 
|---|---|---|
| Ms.Bubbles | ms-bubbles | Nome de usuário criado com sucesso. | 
| !Ms.Bubbles | -ms-bubbles | Este 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!!Bubbles | ms--bubbles | Este nome de usuário não é criado, porque contém dois traços consecutivos. | 
| Ms!Bubbles | ms-bubbles | Este nome de usuário não é criado. Embora o nome de usuário normalizado seja válido, ele já existe. | 
| Ms.Bubbles@example.com | ms-bubbles | Este 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 atributo | Tipo | Descrição | 
|---|---|---|
| NameID | Obrigatório | Identificador de usuário persistente. Qualquer formato de identificador de nome persistente pode ser usado. O elemento NameIDserá usado para um nome de usuário do GitHub Enterprise Server, a menos que uma das declarações alternativas seja fornecida. | 
| administrador | Opcional | Quando 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ário | Opcional | Nome do usuário no GitHub Enterprise Server. | 
| full_name | Opcional | Nome do usuário exibido na página de perfil. Após o provisionamento, os usuários podem alterar seus nomes. | 
| emails | Opcional | Endereços de e-mail para o usuário. É possível especificar mais de um. | 
| public_keys | Opcional | Chaves SSH públicas para o usuário. É possível especificar mais de um. | 
| gpg_keys | Opcional | Chaves chaves GPG para o usuário. É possível especificar mais de um. | 
Definir configurações SAML
- 
A partir de uma conta administrativa em GitHub Enterprise Server, clique em no canto superior direito de qualquer página.  
- 
Na barra lateral esquerda, clique em Console de gerenciamento.  
- 
Na barra lateral esquerda, clique em Authentication.  
- 
Selecione SAML.  
- 
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.  
- 
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. 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. 
- 
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.  
- 
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.  
- 
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.  
- 
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).  
- 
Em Verification certificate (Certificado de verificação), clique em Choose File (Escolher arquivo) e escolha um certificado para validar as respostas SAML do IdP.  
- 
Modifique os nomes do atributo SAML para corresponder ao IdP, se necessário, ou aceite os nomes padrão.  
Revogar o acesso à sua instância do GitHub Enterprise Server
- A partir de uma conta administrativa em GitHub Enterprise Server, clique em  no canto superior direito de qualquer página.  
- Selecione SAML.  
- Na lista de usuários, clique no nome de usuário para o qual você gostaria de atualizar o mapeamento de NameID. 
- No canto superior direito da página, clique em  Security (Segurança).  
- À direita de "Atualizar o NameID do SAML", clique em Editar.  
- No campo "NameID", digite o novo NameIDpara o usuário. 
- Em Verification certificate (Certificado de verificação), clique em Choose File (Escolher arquivo) e escolha um certificado para validar as respostas SAML do IdP.  
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, comohttps://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 Recipientdeve 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 do NameID para a conta do usuário no GitHub Enterprise Server corresponde ao NameID 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ânciaCertifique-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.