Skip to main content

조직의 ID 및 액세스 관리 문제 해결

조직의 SAML SSO, 팀 동기화 또는 IdP(ID 공급자) 연결을 관리하기 위한 일반적인 문제 해결 오류를 검토하고 해결합니다.

오류: "현재 시간이 NotBefore 조건보다 이전입니다."

이 오류는 IdP 및 일반적으로 자체 호스팅 IdP에서 발생하는 GitHub Enterprise Cloud 간의 시간 차이가 너무 큰 경우에 발생할 수 있습니다.

이 오류가 발생하면 IdP의 시간이 NTP 서버와 올바르게 동기화되었는지 확인합니다.

ADFS를 IdP로 사용하는 경우 GitHub에 대해서도 ADFS에서 NotBeforeSkew를 1분으로 설정합니다. NotBeforeSkew가 0으로 설정된 경우 밀리초를 포함하여 매우 작은 시간 차이라도 인증 문제가 발생할 수 있습니다.

사용자는 인증을 위해 반복적으로 리디렉션됩니다.

사용자가 루프에서 반복적으로 SAML 인증 프롬프트로 리디렉션되는 경우 IdP 설정에서 SAML 세션 기간을 늘려야 할 수 있습니다.

SAML 응답에서 보낸 SessionNotOnOrAfter 값은 사용자가 인증을 위해 IdP로 다시 리디렉션되는 시기를 결정합니다. SAML 세션 기간이 2시간 이하로 구성된 경우 GitHub.com은 만료되기 5분 전에 SAML 세션을 새로 고칩니다. 세션 기간이 5분 이하로 구성된 경우 사용자가 SAML 인증 루프에 갇히게 될 수 있습니다.

이 문제를 해결하려면 최소 SAML 세션 기간을 4시간으로 구성하는 것이 좋습니다. 자세한 내용은 "SAML 구성 참조"을 참조하세요.

일부 사용자가 SCIM에서 프로비전되거나 프로비전 해제되지 않습니다.

사용자에 대한 프로비전 문제가 발생하는 경우 사용자에게 SCIM 메타데이터가 누락되었는지 확인하는 것이 좋습니다.

조직에 SCIM 프로비저닝이 구현된 경우 사용자의 조직 멤버 자격에 대한 변경 내용은 ID 공급자로부터 트리거되어야 합니다. 사용자가 기존 SCIM 통합 대신 수동으로 조직에 초대되는 경우 사용자 계정이 SCIM ID에 제대로 연결되지 않을 수 있습니다. 이렇게 하면 나중에 SCIM을 통해 사용자 계정의 프로비전이 해제되지 않도록 할 수 있습니다. 기존 SCIM 통합 대신 수동으로 사용자를 제거하면 부실 연결 ID가 남게 되어 사용자가 조직에 다시 가입해야 하는 경우에 문제가 발생할 수 있습니다.

조직 구성원에 SCIM 메타데이터가 누락되어 있다면 IdP를 통해 수동으로 사용자에 대한 SCIM을 다시 프로비전할 수 있습니다.

누락된 SCIM 메타데이터에 대한 사용자 감사

사용자가 예상대로 프로비전되거나 프로비전 해제되지 않은 것 같거나 이러함이 확인되었다면, 조직의 모든 사용자를 감사하는 것이 좋습니다.

사용자의 외부 ID에 SCIM ID(SCIM 메타데이터)가 있는지 확인하려면 GitHub에서 한 번에 한 조직 구성원의 SCIM 메타데이터를 검토하거나 GitHub API를 사용하여 모든 조직 구성원을 프로그래밍 방식으로 확인하면 됩니다.

IdP가 GitHub SCIM API에 프로비저닝 호출을 보낼 때 해당 API 호출의 SCIM userName은 조직에서 사용자의 연결된 SAML ID에 저장된 SAML nameID와 일치해야 합니다. 이 두 값이 일치하지 않으면 SCIM 메타데이터가 채워지지 않고 SCIM ID가 성공적으로 연결되지 않습니다. 이들 값이 일치하는지 여부를 확인하려면 GitHub API를 사용합니다.

GitHub에서 조직 구성원 감사

단일 조직 구성원의 SCIM 메타데이터가 있는지 확인하기 위해 조직 소유자는 이 URL을 방문하여 <organization><username>으로 바꿔야 합니다.

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

사용자의 외부 ID에 SCIM 메타데이터가 포함된 경우 조직 소유자는 관련 페이지에 SCIM ID 섹션을 표시해야 합니다. 외부 ID에 SCIM 메타데이터가 포함되어 있지 않다면 SCIM ID 섹션은 존재하지 않습니다.

GitHub API를 통한 조직 구성원 감사

조직 소유자는 SCIM REST API 또는 GraphQL을 쿼리하여 조직의 모든 SCIM 프로비전된 ID를 나열할 수도 있습니다.

REST API 사용

SCIM REST API는 외부 ID에 SCIM 메타데이터가 채워진 사용자에 대해서만 데이터를 반환합니다. SCIM 프로비전된 ID 목록을 모든 조직 구성원 목록과 비교하면 도움이 됩니다.

자세한 내용은 다음을 참조하세요.

GraphQL 사용

이 GraphQL 쿼리는 조직의 각 사용자에 대한 SAML NameId, SCIM UserName 및 GitHub 사용자 이름(login)을 보여 줍니다. 이 쿼리를 사용하려면 ORG를 조직 이름으로 바꿉니다.

{
  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

GraphQL API 사용에 대한 자세한 내용은 다음을 참조하세요.

ID 공급자를 통해 사용자를 위한 SCIM 다시 프로비전

IdP를 통해 수동으로 사용자를 위한 SCIM을 다시 프로비전할 수 있습니다. 예를 들어 OKTA에 대한 프로비전 오류를 해결하려면 OKTA 관리 포털에서 사용자의 할당을 취소하고 GitHub 앱에 다시 할당하면 됩니다. 이렇게 하면 OKTA가 트리거되어 GitHub에서 이러한 사용자의 SCIM 메타데이터를 채우는 API 호출이 수행됩니다. 자세한 내용은 OKTA 설명서에서 "애플리케이션에서 사용자 할당 취소" 또는 "애플리케이션에 사용자 할당"을 참조하세요.

사용자의 SCIM ID가 생성되었는지 확인하려면 SCIM 외부 ID가 없음이 확인된 단일 조직 구성원을 이용해 이 프로세스를 테스트하는 것이 좋습니다. IdP에서 사용자를 수동으로 업데이트한 후에는 사용자의 SCIM ID가 SCIM API를 이용해 생성되었는지 GitHub에서 생성되었는지를 확인할 수 있습니다. 자세한 내용은 "누락된 SCIM 메타데이터에 대한 사용자 감사" 또는 "SCIM용 REST API 엔드포인트"을 참조하세요.

사용자를 위해 SCIM을 다시 프로비전하는 작업이 도움이 되지 않는 경우 GitHub 지원에 문의하세요.

추가 참고 자료