Skip to main content

SAML 구성 참조

조직 또는 엔터프라이즈볼 수 있으며 사용 가능한 SAML 특성 및 응답 요구 사항에 대해 자세히 알아볼 수 있습니다.

SAML 구성 정보

GitHub에 인증하기 위해 SAML Single Sign-On(SSO)을 사용하려면 외부 SAML ID 공급자(IdP)와 GitHub의 엔터프라이즈 또는 조직을 모두 구성해야 합니다. SAML 구성 GitHub 에서 SAML SP(서비스 공급자)로 작동합니다. 엔터프라이즈 인증에 대한 자세한 내용은 ID 및 액세스 관리 기본 사항을(를) 참조하세요.

GitHub 는 SAML 2.0 사양에 따라 통합을 제공합니다. 자세한 내용은 OASIS 웹 사이트의 SAML Wiki를 참조하세요.

SAML SSO GitHub를 구성할 때 SAML IdP에서 고유 값을 입력해야 하며 IdP에서 GitHub 고유 값도 입력해야 합니다.

SAML 메타데이터

GitHub Enterprise Cloud에 대한 SP 메타데이터는 SAML SSO를 사용하는 조직 또는 엔터프라이즈에 제공됩니다. GitHub는 urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST 바인딩을 사용합니다.

사용하는 Enterprise Managed Users경우 엔터프라이즈 수준에서만 SAML SSO를 사용하도록 설정할 수 있습니다.

조직

엔터프라이즈의 개별 조직에 SAML SSO를 구성할 수 있습니다. 개별 조직을 사용하고 엔터프라이즈 계정을 사용하지 않는 경우 조직에 GitHub Enterprise Cloud 대해 SAML SSO를 구성할 수도 있습니다. 자세한 내용은 조직에 대한 SAML Single Sign-On 관리을(를) 참조하세요.

GitHub에 있는 조직의 SP 메타데이터는 https://github.com/orgs/ORGANIZATION/saml/metadata에서 사용할 수 있으며, 여기서 ORGANIZATION은(는) GitHub에 있는 조직의 이름입니다.

기타 이름설명예시
SP 엔터티 IDSP URL, 대상 그룹 제한
GitHub.com에서 조직의 최상위 URLhttps://github.com/orgs/ORGANIZATION
SP 어설션 소비자 서비스(ACS) URL회신, 수신자 또는 대상 URLIdP가 SAML 응답을 보내는 URLhttps://github.com/orgs/ORGANIZATION/saml/consume
SP SSO(싱글 사인온) URL
IdP가 SSO로 시작하는 URLhttps://github.com/orgs/ORGANIZATION/sso

엔터프라이즈

사용자 환경에 따라 엔터프라이즈 GitHub Enterprise Cloud 의 SP 메타데이터는 다음 중 하나에서 사용할 수 있습니다.

  • https://github.com/enterprises/ENTERPRISE/saml/metadata여기서ENTERPRISE는 엔터프라이즈의 이름입니다.
  • https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN/saml/metadata여기서SUBDOMAIN은 엔터프라이즈의 하위 도메인입니다.
기타 이름설명예시
SP 엔터티 IDSP URL, 대상 그룹 제한귀사의 엔터프라이즈용 최상위 URL GitHub.comhttps://github.com/enterprises/ENTERPRISE
SP 어설션 소비자 서비스(ACS) URL회신, 수신자 또는 대상 URLIdP가 SAML 응답을 보내는 URLhttps://github.com/enterprises/ENTERPRISE/saml/consume
SP SSO(싱글 사인온) URL
IdP가 SSO로 시작하는 URLhttps://github.com/enterprises/ENTERPRISE/sso

SAML 특성

다음 SAML 특성을 사용할 수 있습니다 GitHub.

이름필수 여부설명
NameID영구 사용자 식별자입니다. 영구 이름 식별자 형식을 사용할 수 있습니다.

Enterprise Managed Users이 있는 엔터프라이즈를 사용하는 경우, 대체 어설션 중 하나가 제공되지 않으면 GitHub에서 사용자 이름으로 사용하기 위해 NameID 요소를 정규화합니다. 자세한 내용은 외부 인증에 대한 사용자 이름 고려 사항을(를) 참조하세요.

[!NOTE] 사람이 읽을 수 있는 영구 식별자를 사용하는 것이 중요합니다. 임시 식별자 형식(예:urn:oasis:names:tc:SAML:2.0:nameid-format:transient)을 사용하면 로그인할 때마다 계정이 다시 연결되므로 권한 부여 관리에 악영향을 미칠 수 있습니다. | | SessionNotOnOrAfter | | 연결된 세션을 무효화하는 날짜 GitHub 입니다. 무효화 후 사용자는 엔터프라이즈의 리소스에 액세스하기 위해 다시 한 번 인증해야 합니다. 자세한 내용은 세션 기간 및 시간 제한을 참조하세요. | | | | full_name | | 엔터프라이즈에 SAML SSO를 구성하고 Enterprise Managed Users를 사용하는 경우, 사용자의 프로필 페이지에 표시할 사용자의 전체 이름입니다. | | emails | | 사용자의 전자 메일 주소입니다. GitHub Enterprise Server와 GitHub Enterprise Cloud 간에 라이선스 사용을 동기화하면 GitHub Connect는 여러 제품 전반에서 고유한 사용자를 식별하기 위해 emails를 사용합니다. 자세한 내용은 GitHub Enterprise Server에서 클라우드로 라이선스 사용량 동기화을(를) 참조하세요. | | public_keys | | 엔터프라이즈에 대해 SAML SSO를 구성하고 사용하는 Enterprise Managed Users 경우 사용자의 공용 SSH 키입니다. 복수의 키를 지정할 수 있습니다. | | gpg_keys | | 엔터프라이즈에 대해 SAML SSO를 구성하고 사용하는 Enterprise Managed Users 경우 사용자의 GPG 키입니다. 복수의 키를 지정할 수 있습니다. |

특성에 대해 둘 이상의 값을 지정하려면 여러 <saml2:AttributeValue> 요소를 사용합니다.

<saml2:Attribute FriendlyName="public_keys" Name="urn:oid:1.2.840.113549.1.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <saml2:AttributeValue>ssh-rsa LONG KEY</saml2:AttributeValue>
    <saml2:AttributeValue>ssh-rsa LONG KEY 2</saml2:AttributeValue>
</saml2:Attribute>

SAML 응답 요구 사항

GitHub 에서는 IdP의 응답 메시지가 다음 요구 사항을 충족해야 합니다.

  • IdP는 루트 응답 문서의 <Destination> 요소에서 제공되고 루트 응답 문서에 서명된 경우에만 ACS URL과 일치해야 합니다. IdP가 어설션에 서명하면 GitHub에서 해당 어설션을 무시합니다.

  • IdP는 항상 <Audience> 요소를 <AudienceRestriction> 요소의 일부로 제공해야 합니다. 값은 사용자의 EntityId 값과 GitHub일치해야 합니다.

    • 조직에 SAML을 구성한 경우 이 값은 https://github.com/orgs/ORGANIZATION입니다.
    • 조직에 SAML을 구성하는 경우 이 URL은 https://github.com/enterprises/ENTERPRISE 또는 https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN입니다.
  • IdP는 응답에서 디지털 서명을 포함한 단일 주장(어설션)을 제공해야 합니다. <Assertion> 요소에 서명하거나 <Response> 요소에 서명할 수 있습니다.

  • IdP에서 <NameID> 요소를 <Subject> 요소의 일부로 제공해야 합니다. 모든 영구 이름 식별자 형식을 사용할 수 있습니다.

  • IdP에는 ACS URL로 설정해야 하는 Recipient 특성이 포함되어야 합니다. 다음 예제에서는 이 특성을 확인할 수 있습니다.

    <samlp:Response ...>
      <saml:Assertion ...>
        <saml:Subject>
          <saml:NameID ...>...</saml:NameID>
          <saml:SubjectConfirmation ...>
            <saml:SubjectConfirmationData Recipient="https://github.com/enterprises/ENTERPRISE/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>
    

세션 기간 및 시간 제한

사용자가 IdP를 사용하여 인증을 받고 무기한으로 권한을 GitHub 유지하지 못하도록 하려면 엔터프라이즈 리소스에 대한 액세스 권한이 있는 각 사용자 계정에 대한 세션을 주기적으로 무효화합니다. 무효화되면 사용자는 IdP를 다시 한 번 인증해야 합니다.

기본적으로 IdP가 SessionNotOnOrAfter 속성에 대한 값을 전달하지 않으면, GitHub IdP를 통해 인증에 성공한 후 24시간 내에 세션을 무효화합니다.

GitHub는 IdP가 특성 및 값을SessionNotOnOrAfter 구성하는 인스턴스의 모든 사용자에 대해 사용자 지정 SAML 세션 시간 제한을 구성할 수 있습니다.

24시간 GitHub 미만의 사용자 지정된 세션 기간 값을 정의하는 경우 리디렉션을 시작할 때마다 GitHub 인증하라는 메시지가 표시될 수 있습니다.

인증 오류를 방지하려면 최소 세션 기간이 4시간인 것이 좋습니다. 자세한 내용은 SAML 인증 문제 해결을(를) 참조하세요.

참고

Microsoft Entra ID(이전에는 Azure AD라고 함) SessionNotOnOrAfter 특성을 지원하지 않습니다. 또한 Entra ID 발급된 SAML 토큰에 대한 구성 가능한 수명 정책은 세션 시간 제한을GitHub제어하지 않습니다.