SAML 구성 정보
GitHub Enterprise Server에 대한 인증에 SAML SSO(Single Sign-On)를 사용하려면 외부 IDP(SAML ID 공급자)와 GitHub Enterprise Server 인스턴스에서 엔터프라이즈 또는 조직을 모두 구성해야 합니다. SAML 구성에서 GitHub Enterprise Server은 SAML SP(Service Provider)로 작동합니다.
GitHub Enterprise Server에 SAML SSO를 구성할 때는 SAML IdP의 고유한 값을 입력해야 하며, IdP의 GitHub Enterprise Server에 있는 고유한 값도 입력해야 합니다. GitHub Enterprise Server에 대한 SAML SSO 구성에 대한 자세한 내용은 "엔터프라이즈에 대한 SAML Single Sign-On 구성"을 참조하세요.
SAML 메타데이터
GitHub Enterprise Server 인스턴스에 대한 SP 메타데이터는 에서 http(s)://HOSTNAME/saml/metadata
사용할 수 있습니다. 여기서 HOSTNAME 은 인스턴스의 호스트 이름입니다. GitHub Enterprise Server에서는 urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
바인딩을 사용합니다.
값 | 기타 이름 | 설명 | 예제 |
---|---|---|---|
SP 엔터티 ID | SP URL, 대상 그룹 제한 | GitHub Enterprise Server의 최상위 URL | http(s)://HOSTNAME |
SP 어설션 소비자 서비스(ACS) URL | 회신, 수신자 또는 대상 URL | IdP가 SAML 응답을 보내는 URL | http(s)://HOSTNAME/saml/consume |
SP SSO(Single Sign-On) URL | IdP가 SSO로 시작하는 URL | http(s)://HOSTNAME/sso |
SAML 특성
GitHub Enterprise Server에 사용할 수 있는 SAML 특성은 다음과 같습니다. 특성을 제외하고 관리 콘솔에서 administrator
특성 이름을 변경할 수 있습니다. 자세한 내용은 "관리 콘솔에서 인스턴스 관리.
이름 | 필수 | Description |
---|---|---|
NameID | 영구 사용자 식별자입니다. 영구 이름 식별자 형식을 사용할 수 있습니다. GitHub Enterprise Server은 사용자 이름으로 사용할 NameID 요소를 정규화합니다. 자세한 내용은 "외부 인증에 대한 사용자 이름 고려 사항"을 참조하세요.참고: 사람이 읽을 수 있는 영구 식별자를 사용하는 것이 중요합니다. 임시 식별자 형식(예: urn:oasis:names:tc:SAML:2.0:nameid-format:transient )을 사용하면 로그인할 때마다 계정이 다시 연결되므로 권한 부여 관리에 악영향을 미칠 수 있습니다. | |
SessionNotOnOrAfter | GitHub Enterprise Server에서 연결된 세션을 무효화하는 날짜입니다. 무효화 후 사용자는 GitHub Enterprise Server 인스턴스에 액세스하기 위해 다시 한 번 인증해야 합니다. 자세한 내용은 "세션 기간 및 시간 제한"을 참조하세요. |
특성에 대해 둘 이상의 값을 지정하려면 여러 <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 Enterprise Server에서는 IdP의 응답 메시지가 다음 요구 사항을 충족할 것을 요구합니다.
-
IdP는 루트 응답 문서의
<Destination>
요소에서 제공되고 루트 응답 문서에 서명된 경우에만 ACS URL과 일치해야 합니다. IdP가 어설션에 서명하면 GitHub Enterprise Server은 어설션을 무시합니다. -
IdP는 항상
<Audience>
요소를<AudienceRestriction>
요소의 일부로 제공해야 합니다. 값이 GitHub Enterprise Server에 대해 일치EntityId
해야 합니다.{ % ifversion ghes or ghae %} 이 값은http(s)://HOSTNAME
와 같은 GitHub Enterprise Server 인스턴스에 액세스하는 URL입니다. % endif %} -
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://HOSTNAME/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 Enterprise Server는 GitHub Enterprise Server 인스턴스에 액세스할 수 있는 각 사용자 계정에 대한 세션을 주기적으로 무효화합니다. 무효화되면 사용자는 IdP를 다시 한 번 인증해야 합니다. 기본적으로 IdP에서 SessionNotOnOrAfter
특성에 대한 값을 어설션하지 않는 경우 GitHub Enterprise Server에서는 IdP를 이용해 인증에 성공한 후 1주일이 지나면 세션을 무효화합니다.
세션 기간을 사용자 지정하려면 IdP에서 SessionNotOnOrAfter
특성의 값을 정의하면 됩니다. 24시간 미만의 값을 정의하면 GitHub Enterprise Server은 GitHub Enterprise Server에서는 리디렉션을 시작할 때마다 인증 메시지를 표시할 수 있습니다.
참고:
- Azure AD 경우 SAML 토큰에 대한 구성 가능한 수명 정책은 GitHub Enterprise Server에 대한 세션 시간 제한을 제어하지 않습니다.
- OKTA에서는 현재 GitHub Enterprise Server을 사용한 SAML 인증 과정에서
SessionNotOnOrAfter
특성을 보내지 않습니다. 자세한 내용은 OKTA에 문의하세요.