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 Cloud, 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.com 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 obter mais informações, 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 os usuários não foram provisionados ou desprovisionados, recomendamos que você faça uma auditoria de todos os usuários da sua organização.
Para verificar se os usuários têm uma identidade do SCIM (metadados do SCIM) na sua identidade externa, você pode revisar os metadados do SCIM para um integrante da organização por vez no GitHub ou pode verificar programaticamente todos os integrantes da organização usando a API GitHub.
Quando o IdP envia uma chamada de provisionamento para a API do SCIM do GitHub, o userName
do SCIM nessa chamada à 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 API do GitHub.
Fazendo a auditoria dos integrantes 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 integrantes da organização por meio da API de GitHub
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 obter mais informações, consulte:
- "Pontos de extremidade da API REST para SCIM"
- "Pontos de extremidade de API REST para membros da organização"
Usando o GraphQL
Esta consulta GraphQL mostra a NameId
do SAML, o UserName
do SCIM e o nome de usuário do GitHub (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:
Reprovisionando o SCIM para os usuários por meio 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 do Okta, você pode desatribuir e reatribuir os usuários para o aplicativo de GitHub. Isto deve acionar o Okta para fazer uma chamada da API para preencher os metadados do SCIM para esses usuários em 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 do seu IdP, você poderá verificar se a identidade SCIM do usuário foi criada usando a API SCIM ou em 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 os usuários não ajudar, entre em contato com o suporte de GitHub.