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á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 NameID será 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
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
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
.