SAML 구성 정보
에 대한 인증에 SAML SSO(Single Sign-On)를 사용하려면 외부 SAML IdP(ID 공급자)와 GitHub의 엔터프라이즈 또는 조직 모두를 구성해야 합니다. SAML 구성에서 은 SAML SP(Service Provider)로 작동합니다. 엔터프라이즈 인증에 대한 자세한 내용은 ID 및 액세스 관리 정보을(를) 참조하세요.
은(는) SAML 2.0 사양에 따라 통합을 제공합니다. 자세한 내용은 OASIS 웹 사이트의 SAML Wiki를 참조하세요.
에 SAML SSO를 구성할 때는 SAML IdP의 고유한 값을 입력해야 하며, IdP의 에 있는 고유한 값도 입력해야 합니다.
SAML 메타데이터
에 대한 SP 메타데이터는 SAML SSO를 사용하는 조직 또는 기업에서 사용할 수 있습니다. 에서는 urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
바인딩을 사용합니다.
Enterprise Managed Users를 사용하는 경우 엔터프라이즈 수준에서만 SAML SSO를 사용하도록 설정할 수 있습니다.
조직
엔터프라이즈의 개별 조직에 SAML SSO를 구성할 수 있습니다. 또한 에서 개별 조직을 사용하고 엔터프라이즈 계정을 사용하지 않는 경우에는 조직에 SAML SSO를 구성할 수도 있습니다. 자세한 내용은 조직에 대한 SAML Single Sign-On 관리을(를) 참조하세요.
GitHub에 있는 조직의 SP 메타데이터는 https://github.com/orgs/ORGANIZATION/saml/metadata
에서 사용할 수 있습니다. 여기서 ORGANIZATION은 GitHub에 있는 조직의 이름입니다.
값 | 기타 이름 | 설명 | 예시 |
---|---|---|---|
SP 엔터티 ID | SP URL, 대상 그룹 제한 | GitHub.com에 있는 조직의 최상위 URL | https://github.com/orgs/ORGANIZATION |
SP 어설션 소비자 서비스(ACS) URL | 회신, 수신자 또는 대상 URL | IdP가 SAML 응답을 보내는 URL | https://github.com/orgs/ORGANIZATION/saml/consume |
SP SSO(Single Sign-On) URL | |||
IdP가 SSO로 시작하는 URL | https://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 엔터티 ID | SP URL, 대상 그룹 제한 | GitHub.com에 있는 엔터프라이즈의 최상위 URL | https://github.com/enterprises/ENTERPRISE |
SP 어설션 소비자 서비스(ACS) URL | 회신, 수신자 또는 대상 URL | IdP가 SAML 응답을 보내는 URL | https://github.com/enterprises/ENTERPRISE/saml/consume |
SP SSO(Single Sign-On) URL | |||
IdP가 SSO로 시작하는 URL | https://github.com/enterprises/ENTERPRISE/saml/sso |
SAML 특성
다음은 에 사용할 수 있는 SAML 특성입니다.
속성 | 필수 | 설명 |
---|---|---|
NameID | 영구 사용자 식별자입니다. 영구 이름 식별자 형식을 사용할 수 있습니다. 엔터프라이즈를 Enterprise Managed Users와 함께 사용하는 경우, 대체 어설션 중 하나가 제공되지 않는 한 은 사용자 이름으로 사용할 NameID 요소를 정규화합니다. 자세한 내용은 외부 인증에 대한 사용자 이름 고려 사항을(를) 참조하세요.> [!NOTE] 사람이 읽을 수 있는 영구 식별자를 사용하는 것이 중요합니다. 임시 식별자 형식(예: urn:oasis:names:tc:SAML:2.0:nameid-format:transient )을 사용하면 로그인할 때마다 계정이 다시 연결되므로 권한 부여 관리에 악영향을 미칠 수 있습니다. | |
SessionNotOnOrAfter | 에서 연결된 세션을 무효화하는 날짜입니다. 무효화 후 엔터프라이즈의 리소스에 액세스하려면 사용자는 다시 인증해야 합니다. 자세한 내용은 세션 기간 및 시간 제한을 참조하세요. | |
full_name | 엔터프라이즈에 SAML SSO를 구성하고 Enterprise Managed Users를 사용하는 경우,사용자의 프로필 페이지에 표시되는 사용자의 전체 이름입니다. | |
emails | 사용자의 이메일 주소입니다. GitHub Enterprise Server와 GitHub Enterprise Cloud 사이에 라이선스 사용을 동기화한 경우, GitHub Connect에서는 emails 를 사용하여 여러 제품에서 고유한 사용자를 식별합니다. 자세한 내용은 GitHub Enterprise Server와 GitHub Enterprise Cloud 간의 라이선스 사용량 동기화을(를) 참조하세요. | |
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 응답 요구 사항
에서는 IdP의 응답 메시지가 다음 요구 사항을 충족할 것을 요구합니다.
-
IdP는 루트 응답 문서의
<Destination>
요소에서 제공되고 루트 응답 문서에 서명된 경우에만 ACS URL과 일치해야 합니다. IdP가 어설션에 서명하면 은 어설션을 무시합니다. -
IdP는 항상
<Audience>
요소를<AudienceRestriction>
요소의 일부로 제공해야 합니다. 값은 의EntityId
와 일치해야 합니다.- 조직에 SAML을 구성한 경우 이 값은
https://github.com/orgs/ORGANIZATION
입니다. - 조직에 SAML을 구성하는 경우 이 URL은
https://github.com/enterprises/ENTERPRISE
또는https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN
입니다.
- 조직에 SAML을 구성한 경우 이 값은
-
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를 사용하여 인증하면 권한이 무기한 유지되는 일을 방지하기 위해, 에서는 엔터프라이즈 리소스에 액세스할 수 있는 각 사용자 계정에 대한 세션을 주기적으로 무효화합니다. 무효화되면 사용자는 IdP를 다시 한 번 인증해야 합니다.
기본적으로 IdP에서 SessionNotOnOrAfter
특성에 대한 값을 어설션하지 않는 경우 에서는 IdP를 사용해 인증에 성공한 후 24시간이 지나면 세션을 무효화합니다.
은(는) IdP에서 SessionNotOnOrAfter
특성 및 값.
사용자 지정 세션 기간 값을 24시간 미만으로 정의할 경우 이(가) 에서 리디렉션을 시작할 때마다 인증 메시지를 표시할 수 있습니다.
인증 오류를 방지하려면 최소 세션 기간을 4시간을 지정하는 것이 좋습니다. 자세한 내용은 SAML 인증 문제 해결을(를) 참조하세요.
Note
Microsoft Entra ID(이전의 Azure AD)의 경우 SAML 토큰에 대한 구성 가능한 수명 정책은 에 대한 세션 시간 제한을 제어하지 않습니다.