Skip to main content

Enterprise Server 3.15 está disponível no momento como versão release candidate.

Autenticação SAML

Se o SSO (logon único) de SAML for usado e as pessoas não conseguirem se autenticar para acessar o GitHub, você poderá solucionar o problema.

Sobre problemas com a autenticação SAML

O GitHub Enterprise Server registra mensagens de erro relacionadas a falhas de autenticação SAML nos logs do diário do systemd para o contêiner github-unicorn. É possível revisar as respostas nesse log e configurar logs mais detalhados.

Para saber mais sobre esses requisitos de resposta SAML, confira "Referência de configuração do SAML".

Configurando a depuração do SAML

É possível configurar o GitHub Enterprise Server a fim de gravar logs de depuração detalhados para cada tentativa de autenticação SAML. É possível que você possa solucionar problemas com tentativas de autenticação com esta saída extra.

Warning

  • Habilite apenas a depuração do SAML temporariamente e desabilite a depuração imediatamente após terminar a solução de problemas. Se você mantiver a depuração habilitada, o tamanho dos logs aumentará muito mais rápido do que o normal, o que pode afetar negativamente o desempenho do GitHub Enterprise Server.
  • Teste as novas configurações de autenticação de sua instância do GitHub Enterprise Server em um ambiente de preparo antes de aplicá-las ao ambiente de produção. Para obter mais informações, confira "Configurar uma instância de preparo".
  1. No canto superior à direita de GitHub Enterprise Server, clique na sua foto do perfil e clique em Configurações da empresa.

    Captura de tela do menu suspenso que aparece quando você clica na foto de perfil no GitHub Enterprise Server. A opção "Configurações da empresa" está realçada em um contorno laranja escuro.

  2. Do lado esquerdo da página, na barra lateral da conta empresarial, clique em Políticas.

  3. Em Políticas, clique em Opções.

  4. Em "Depuração do SAML", selecione o menu suspenso e clique em Habilitado.

  5. Tentar entrar em sua instância do GitHub Enterprise Server por meio do IdP do SAML.

  6. Examine a saída da depuração no diário do systemd para github-unicorn no sua instância do GitHub Enterprise Server. Para obter mais informações, consulte “Sobre os logs do sistema”.

  7. Quando terminar de resolver os problemas, selecione o menu suspenso e clique em Desabilitado.

Decodificar respostas

Algumas saídas no diário do systemd para github-unicorn podem estar codificadas em Base64. Você pode acessar o shell administrativo e usar o utilitário base64 em sua instância do GitHub Enterprise Server para decodificar essas respostas. Para obter mais informações, confira "Acesar o shell administrativo (SSH)".

Para decodificar a saída, execute o comando apresentado a seguir, substituindo ENCODED_OUTPUT pela saída codificada do log.

base64 --decode ENCODED_OUTPUT

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

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

Quando o usuário se conecta novamente, o GitHub Enterprise Server compara o mapeamento de NameID e nameid-format da conta com a resposta do IdP. Se a NameID ou nameid-format na resposta do IdP não corresponder mais à esperada pelos valores do GitHub Enterprise Server para o usuário, ocorrerá uma falha na entrada. 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. Verifique se o mapeamento de NameID e nameid-format da conta do usuário no GitHub Enterprise Server corresponde a NameID e nameid-format do usuário no IdP. Para obter mais informações, confira "Como atualizar a NameID do SAML de um usuário".

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 o Recipient não corresponder à URL do ACS em sua instância do GitHub Enterprise Server, uma das duas mensagens de erro a seguir será exibida no log de autenticação quando um usuário tentar se autenticar.

Recipient in the SAML response must not be blank.
Recipient in the SAML response was not valid.

Defina o valor de Recipient no IdP como a URL completa do ACS de 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.

SAML Response is not signed or has been modified.

Verifique se você configurou as declarações assinadas para o aplicativo do 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 Audience, a mensagem de erro a seguir será exibida no log de autenticação.

Audience is invalid. Audience attribute does not match https://YOUR-INSTANCE-URL

Defina o valor de Audience no IdP como a EntityId de sua instância do GitHub Enterprise Server, que é a URL completa da instância. Por exemplo, https://ghe.corp.example.com.

Erro: "A hora atual é anterior à condição NotBefore"

Esse erro pode ocorrer quando há uma diferença de tempo muito grande entre o IdP e o GitHub Enterprise Server, o que geralmente ocorre com IdPs auto-hospedados.

Para evitar esse problema, recomendamos apontar o dispositivo para a mesma origem do protocolo NTP que o IdP, se possível. Se você encontrar esse erro, verifique se a hora no dispositivo está sincronizada corretamente com o servidor NTP. Use o comando chronyc no shell administrativo para sincronizar a hora imediatamente. Para obter mais informações, confira "Configurar a sincronização de hora".

Se você usa o ADFS como o IdP, defina também NotBeforeSkew no ADFS como 1 minuto para o GitHub. Se NotBeforeSkew for definido como 0, mesmo diferenças de tempo muito pequenas, incluindo milissegundos, poderão causar problemas de autenticação.