Skip to main content

Solução de problemas de gerenciamento de identidade e acesso da organização

Revise e solucione erros comuns para gerenciar o SAML SSO da sua organização, a sincronização de equipes ou a conexão com o provedor de identidade (IdP).

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, o que geralmente ocorre com IdPs auto-hospedados.

Se você encontrar esse erro, verifique se a hora no IdP está sincronizada corretamente com o servidor NTP.

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.

Os usuários são redirecionados repetidamente à autenticação

Se os usuários forem redirecionados repetidamente ao prompt de autenticação do SAML em loop, poderá ser necessário aumentar a duração da sessão do SAML nas configurações do IdP.

O valor de SessionNotOnOrAfter enviado em uma resposta do SAML determina quando um usuário será redirecionado ao IdP para se autenticar. Quando a duração da sessão SAML é configurada como duas horas ou menos, o GitHub atualiza a sessão do SAML cinco minutos antes da expiração. Se a duração da sessão estiver configurada como cinco minutos ou menos, os usuários poderão ficar presos em um loop de autenticação do SAML.

Para corrigir esse problema, recomendamos configurar a duração mínima da sessão do SAML como quatro horas. Para saber mais, confira Referência de configuração do SAML.

Alguns usuários não são provisionados ou desprovisionados pelo SCIM

Ao encontrar problemas de provisionamento com os usuários, recomendamos que verifique se os usuários não têm metadados de SCIM.

Se o provisionamento do SCIM for implementado para sua organização, qualquer alteração na associação à organização de um usuário deverá ser disparada por meio do provedor de identidade. Se um usuário for convidado para uma organização manualmente em vez de por uma integração existente do SCIM, a conta de usuário dele poderá não ser vinculada corretamente à identidade do SCIM. Isso pode impedir que a conta de usuário seja desprovisionada por meio do SCIM no futuro. Se um usuário for removido manualmente em vez de por uma integração existente do SCIM, uma identidade vinculada obsoleta permanecerá, o que poderá resultar em problemas se o usuário precisar ingressar novamente na organização.

Se um integrante da organização não tiver metadados do SCIM, você poderá provisionar o SCIM novamente para o usuário manualmente por meio do seu IdP.

Auditoria de usuários com relação à falta de metadados do SCIM

Se você suspeitar ou notar que quaisquer usuários não foram provisionados ou desprovisionados como esperado, recomendamos que você audite todos os usuários da sua organização.

Para verificar se os usuários têm uma identidade SCIM (metadados SCIM) em sua identidade externa, você pode examinar os metadados SCIM para um membro da organização por vez GitHub ou você pode verificar programaticamente todos os membros da organização usando a API GitHub.

Quando o IdP envia uma chamada de provisionamento para a API SCIM GitHub, o SCIM userName nessa chamada de API precisa corresponder ao SAML nameID armazenado na identidade SAML vinculada do usuário na organização. Se esses dois valores não corresponderem, os metadados do SCIM não serão preenchidos, e a identidade SCIM não será vinculada com êxito. Para verificar se esses valores correspondem, use a GitHub API.

Auditando membros da organização em GitHub

Como proprietário de uma organização, para confirmar se os metadados do SCIM existem para um só membro da organização, acesse esta URL substituindo <organization> e <username>:

https://github.com/orgs/<organization>/people/<username>/sso

Se a identidade externa do usuário incluir metadados do SCIM, o proprietário da organização deverá ver uma seção de identidade do SCIM nessa página. Se sua identidade externa não incluir nenhum metadado do SCIM, a seção de Identidade SCIM não existirá.

Auditando membros da organização por meio da GitHub API

Como proprietário da organização, você também pode consultar a API REST do SCIM ou do GraphQL para listar todas as identidades provisionadas do SCIM em uma organização.

Usando a API REST

A API REST do SCIM só retornará dados para usuários que tenham metadados do SCIM preenchidos nas suas identidades externas. Recomendamos que você compare uma lista de identidades fornecidas pelo SCIM com uma lista de todos os integrantes da sua organização.

Para saber mais, veja:

Usando o GraphQL

Esta consulta GraphQL mostra o SAML NameId, o SCIM UserName e o GitHub nome de usuário (login) para cada usuário da organização. Para usar essa consulta, substitua ORG pelo nome da sua organização.

{
  organization(login: "ORG") {
    samlIdentityProvider {
      ssoUrl
      externalIdentities(first: 100) {
        edges {
          node {
            samlIdentity {
              nameId
            }
            scimIdentity {
              username
            }
            user {
              login
            }
          }
        }
      }
    }
  }
}
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -d '{ "query": "{ organization(login: \"ORG\") { samlIdentityProvider { externalIdentities(first: 100) { pageInfo { endCursor startCursor hasNextPage } edges { cursor node { samlIdentity { nameId } scimIdentity {username} user { login } } } } } } }" }' https://api.github.com/graphql

Para obter mais informações sobre o uso da API do GraphQL, consulte:

Re-provisionando o SCIM para os usuários através do seu provedor de identidade

Você pode provisionar o SCIM novamente para os usuários manualmente por meio do seu IdP. Por exemplo, para resolver erros de provisionamento para o Okta no portal de administração da Okta, você pode desatribuir e reatribuir usuários ao aplicativo GitHub. Isso deve fazer com que o Okta faça uma chamada à API para preencher os metadados do SCIM para esses usuários no GitHub. Para obter mais informações, confira Cancelar a atribuição de usuários em aplicativos ou Atribuir usuários a aplicativos na documentação do Okta.

Para confirmar que a identidade do SCIM de um usuário foi criada. Recomendamos testar este processo com um único integrante de uma organização que você tenha confirmado que não tem uma identidade externa do SCIM. Depois de atualizar manualmente os usuários em seu IdP, você pode verificar se a identidade SCIM do usuário foi criada usando a API SCIM ou na GitHub. Para obter mais informações, confira Como auditar usuários com relação a metadados ausentes do SCIM ou Pontos de extremidade da API REST para SCIM.

Se o novo provisionamento do SCIM para usuários não ajudar, entre em contato com o GitHub Suporte.

Erro: "Um endereço de email verificado é necessário para convidar membros por endereço de email"

Esse erro pode ocorrer durante o provisionamento scim quando a GitHub conta de usuário que autorizou a integração scim não tem um endereço de email verificado.

Para organizações que usam IdPs SCIM com suporte, esses tipos de integrações usam um aplicativo OAuth. Quando você configura pela primeira vez a integração do portal de administração do IdP, um GitHub usuário autoriza o aplicativo OAuth e GitHub em seguida executa todas as operações SCIM subsequentes (incluindo o convite de novos membros) em nome desse usuário. Se o endereço de email desse usuário não for mais verificado, as chamadas de provisionamento SCIM para novos usuários falharão com esse erro, enquanto os membros existentes não serão afetados.

Resolvendo o erro

  1. Identifique a conta de GitHub usuário que autorizou a integração SCIM por último. Você pode examinar org.invite_member os eventos no log de auditoria da organização para localizar a conta de usuário em nome da qual as operações SCIM são executadas.
  2. Faça logon nessa GitHub conta de usuário e verifique o endereço de email associado à conta. Apenas uma GitHub conta pode verificar um endereço de email específico por vez. Para obter mais informações, consulte Verificar endereço de e-mail.
  3. Depois de verificar o email, tente novamente a operação de provisionamento SCIM do seu provedor de identidade.

Erro de identidades SAML conflitantes

Quando os usuários tentam se autenticar com seu IdP (provedor de identidade SAML) para acessar uma organização ou empresa do GitHub pela primeira vez, eles podem encontrar a mensagem de erro a seguir.

Sua conta de usuário do GitHub [nome de usuário do GitHub] está desvinculada no momento. No entanto, você está tentando se autenticar com seu Provedor de Identidade usando a identidade SAML [conta de usuário IdP], que já está vinculada a uma conta de usuário do GitHub diferente na [organização/empresa]. Entre em contato com um dos proprietários da [organização/empresa] do GitHub para obter assistência.

Se o IdP for a Entra ID, a mensagem de erro incluirá o User Object ID da identidade vinculada na Entra ID, a que o GitHub se refere como o External ID.

Essa mensagem de erro ocorre porque uma identidade externa só pode ser vinculada a uma conta de usuário do GitHub em uma organização ou empresa.

Identificando o usuário com uma identidade conflitante

Quando os usuários entram em contato com você com esse erro, você pode executar as etapas a seguir para identificar as contas conflitantes.

  1. Use a API GraphQL do GitHub para determinar qual usuário está vinculado à identidade externa conflitante.
    • Se o SAML estiver configurado no nível da organização do GitHub: um proprietário da organização deverá consultar as identidades externas existentes no nível da organização e filtrá-las pelo NameID SAML da conta do IdP com a qual o usuário está autenticando quando esse erro ocorre. Consulte o exemplo org-saml-identities-filtered-by-nameid-username.graphql no repositório platform-samples.
    • Se o SAML estiver configurado no nível da empresa do GitHub: um proprietário da empresa deverá consultar as identidades externas existentes no nível da empresa e filtrá-las pelo SAML NameID da conta do IdP com a qual o usuário está autenticando quando esse erro ocorre. Consulte o exemplo enterprise-saml-identities-filtered-by-nameid.graphql no repositório platform-samples.
  2. Se você identificou um usuário do GitHub associado à identidade externa conflitante, para confirmar se ele ainda está ativo na empresa e em qualquer organização dentro dela, um proprietário da empresa poderá seguir as etapas em Visualizar pessoas na sua empresa.

Resolvendo o conflito

Após você seguir as etapas para identificar contas conflitantes, há várias opções de resolução dependendo de suas descobertas. Se encontrar problemas ao tentar seguir estas etapas ou tiver dúvidas, abra um tíquete de suporte do GitHub usando o Portal de Suporte do GitHub.

Usuário conflitante do GitHub não precisa mais de acesso

Se houver uma conta de usuário do GitHub associada à identidade externa conflitante que não precisa mais de acesso à organização ou à empresa do GitHub, remova-a como membro. Se o usuário for removido corretamente, isso também deverá remover a identidade SAML dele vinculada e a identidade SCIM vinculada se ela existir no nível da organização.

  • Se você usa o provisionamento SCIM para gerenciar a associação à organização, desprovisione o usuário do IdP via SCIM em vez de seguir as etapas no GitHub. Caso contrário, a identidade SAML e SCIM vinculada do usuário permanecerá na organização, o que pode continuar causando o erro.
  • Se você não usa o provisionamento SCIM para gerenciar a associação à organização, consulte Remover um integrante da organização ou Removendo um integrante da sua empresa. Remova também o acesso do usuário do aplicativo GitHub para a organização ou empresa em seu IdP.

Para confirmar se uma identidade SAML ou SCIM foi removida com êxito de uma organização do GitHub para um usuário, consulte Solução de problemas de gerenciamento de identidade e acesso da organização.

Usuário conflitante do GitHub ainda precisa de acesso

Se houver uma conta de usuário do GitHub associada à identidade externa conflitante e esse usuário ainda precisar de acesso à organização ou à empresa, você precisará alterar a identidade vinculada da conta de usuário ou fazer com que o usuário que está recebendo o erro autentique com uma identidade IdP diferente.

  • Se você usa o provisionamento SCIM para gerenciar a associação a uma organização e precisa alterar a identidade externa vinculada à conta do GitHub do membro, desprovisione e reprovisione o usuário do IdP (por exemplo, cancele a atribuição e reatribua o usuário ao aplicativo).
    • Quando o usuário IdP for desprovisionado, sua conta do GitHub e a identidade SAML/SCIM vinculada serão removidas da organização do GitHub.
    • Quando o usuário do IdP for reprovisionado para a organização do GitHub, um novo convite de organização pendente e uma nova identidade SCIM desvinculada serão criados. Isso permitirá que o usuário entre com essa conta de usuário do GitHub, autentique-se via SAML e vincule a nova identidade IdP à conta dele. Essas etapas ajudarão a garantir que a nova identidade SAML e SCIM esteja vinculada corretamente à conta de usuário do GitHub na organização.
  • Se você não usa o provisionamento SCIM para gerenciar a associação à organização ou se o SAML está configurado no nível da empresa, você poderá revogar a identidade externa vinculada para o usuário seguindo as etapas em um dos seguintes artigos:

Nenhum usuário conflitante do GitHub encontrado

Se não houver uma conta de usuário do GitHub associada à identidade externa conflitante, você poderá revogar a identidade externa.

  • Se você usa o provisionamento SCIM para gerenciar a associação à organização, remova a identidade obsoleta e desvinculada do IdP (por exemplo, desvincule o usuário do aplicativo IdP).
  • Se você não usa o provisionamento SCIM para gerenciar a associação à organização, para revogar a identidade externa vinculada, navegue até uma das URLs a seguir para revogar a identidade externa. Substitua USERNAME pelo nome de usuário do GitHub do usuário que não pode entrar e ORGANIZATION ou ENTERPRISE pelo valor apropriado.
    • https://github.com/orgs/ORGANIZATION/people/USERNAME/sso
    • https://github.com/enterprises/ENTERPRISE/people/USERNAME/sso

Leitura adicional