Skip to main content

PingFederate를 사용한 인증 및 프로비저닝 구성

IdP(ID 공급자)에 Enterprise Managed Users 대한 GitHub.com 인증 및 프로비저닝을 중앙에서 관리합니다GHE.com.

누가 이 기능을 사용할 수 있나요?

Enterprise owners with admin access to the IdP

Enterprise Managed Users를 사용하면 SAML SSO는 리포지토리, 문제, 끌어오기 요청과 같은 엔터프라이즈 리소스에 대한 액세스를 제어하고 보호합니다. SCIM은 ID 공급자를 변경할 때 자동으로 사용자 계정을 만들고 엔터프라이즈에 대한 액세스 권한을 관리합니다. GitHub의 팀을 ID 공급자의 그룹과 동기화할 수도 있습니다.자세한 내용은 을 참조 하세요.

개요

이 가이드는 PingFederate에 대한 GitHub SAML 인증 및 SCIM 프로비저닝을 모두 설정하는 데 도움이 됩니다.

시작하기 전에 다음 사항에 유의하세요.

  • 이 가이드는 PingFederate 버전 12.1을 기반으로 합니다. 지침은 다른 버전에 따라 달라질 수 있습니다.
  • 이 가이드에서는 작업 설정을 구성하는 최소한의 단계를 제공합니다. ID 디렉터리가 PingFederate에 다르게 연결될 수 있으므로 지원 데이터 저장소에서 사용할 수 있는 항목에 따라 SAML 및 SCIM에 대한 올바른 데이터 특성을 선택해야 합니다.

필수 조건

새 엔터프라이즈에 대한 SCIM 프로비저닝을 구성하는 경우 초기 구성 프로세스에서 이전 단계를 모두 완료해야 합니다. Enterprise Managed Users 사용 시작하기을(를) 참조하세요.

추가:

  • PingFederate에 "GitHub EMU 커넥터"를 설치해야 합니다. 커넥터를 다운로드하고 설치하려면 PingIdentity 설명서에서 프로비저너 설치를 참조하세요.
  • SCIM을 사용하여 사용자를 프로비전하려면 LDAP 서버를 백업 데이터 저장소로 사용해야 합니다.
  • PingFederate에서 방화벽을 구성하여 사용자의 GitHub Enterprise Server 인스턴스에 있는
    • 의 경우 GitHub.com: https://api.github.com/scim/v2/enterprises/ENTERPRISE
    • 의 경우 GHE.com: https://api.SUBDOMAIN.ghe.com/scim/v2/enterprises/SUBDOMAIN
  • PingFederate의 "프로비저닝자 모드"는 SCIM 프로비저닝을 허용하는 값으로 설정해야 합니다. PingIdentity의 아웃바운드 프로비저닝 설정 구성 가이드에서 "시작하기 전에" 섹션을 참조하세요.
  • 이 절차에서는 PingFederate에 X509 인증서를 업로드해야 합니다. 계속하기 전에 인증서를 만들고 저장할 수 있습니다. 인증서에 대한 챌린지 암호도 필요합니다. 이 문서의 뒷부분에 있는 X509 인증서 만들기 예제 섹션을 참조하세요.
  • 이 절차 중에는 SAML 메타데이터 파일을 PingFederate에 업로드해야 합니다. ** 데이터의 저장 위치에서 GHE.com을 사용하는 엔터프라이즈를 설정하는 경우** 시작하기 전에 이 파일을 미리 만들어 두는 것이 가장 쉽습니다. GHE.com용 SAML 메타데이터 파일 만들기를 참조하세요.

1. SAML 구성

이 섹션에서는 PingFederate에서 SAML 커넥터를 만들고, LDAP IdP 어댑터 인스턴스를 설정하고, IdP 어댑터에서의 SAML 출력을 관리합니다.

  1. SAML 어댑터 만들기
  2. LDAP IdP 어댑터 인스턴스 설정
  3. IdP 어댑터에서 SAML 출력 관리

이 섹션을 시작하기 전에 의 이전 단계를 수행했는지 확인합니다.

SAML 어댑터 만들기

  1. PingFederate 관리 콘솔을 엽니다.

  2. 머리글에서 애플리케이션을 클릭한 다음 왼쪽 사이드바에서 SP 연결을 클릭합니다.

  3. 이 연결에 템플릿 사용을 클릭한 다음 "연결 템플릿" 드롭다운에서 "GitHub EMU 커넥터"를 선택합니다.

    참고

    이 옵션이 표시되지 않으면 GitHub EMU 커넥터가 설치되지 않았습니다. 도움이 필요한 경우 Ping 담당자에게 문의하세요.

  4. PingFederate 구성의 일부 필드를 채우려면 엔터프라이즈에 대한 SAML 메타데이터가 포함된 XML 파일을 업로드합니다. 파일을 찾으려면 다음을 수행합니다.

    • GitHub.com 엔터프라이즈를 설정하는 경우 PingFederate의 "GitHub EMU 커넥터"에 연결된 ZIP 파일에서 이 파일을 찾을 수 있습니다.
    • GHE.com에서 엔터프라이즈를 설정하는 경우, 파일을 직접 생성해야 합니다. GHE.com용 SAML 메타데이터 파일 만들기를 참조하세요.
  5. PingFederate "SP 연결" 페이지에서 이전 단계의 파일을 메타데이터 파일로 업로드합니다.

  6. "연결 유형" 탭으로 이동합니다.

  7. 브라우저 SSO 프로필을 선택하고 아웃바운드 프로비저닝을 선택 취소합니다(나중에 사용하도록 설정 예정).

  8. 다음을 클릭합니다.

  9. "연결 옵션" 탭에서 브라우저 SSO만 선택되어 있는지 확인합니다.

  10. 다음을 클릭합니다.

  11. “일반 정보” 탭에서 다음 정보를 입력합니다.

    • "파트너의 엔터티 ID": GitHub 호스트 URL(https://github.com또는https://SUBDOMAIN.ghe.com)
    • "연결 이름": PingFederate 내의 SP 연결에 대한 설명이 포함된 이름입니다.
    • "기본 URL": GitHub 호스트 URL(https://github.com또는https://SUBDOMAIN.ghe.com)
    • "트랜잭션 로깅": 표준
    • 다른 모든 필드는 비워져 있을 것입니다.
  12. 다음을 클릭합니다.

  13. 브라우저 SSO 구성을 클릭합니다.

  14. 어설션 생성 구성을 클릭합니다.

  15. "인증 원본 매핑" 탭에서 새 어댑터 인스턴스 매핑을 클릭합니다.

  16. "어댑터 인스턴스" 탭에서 어댑터 인스턴스 관리를 클릭합니다.

  17. 새 인스턴스 만들기를 클릭합니다.

LDAP IdP 어댑터 인스턴스 설정

  1. PingFederate의 "어댑터 인스턴스 만들기" 페이지의 "유형" 탭에서 다음 세부 정보를 입력합니다.

    • "인스턴스 이름": 인스턴스를 식별하는 이름(예: pfghadapter)
    • "인스턴스 ID": 인스턴스의 ID(예: pfghadapter)
    • "형식": HTML 양식 IDP 어댑터
    • "부모 인스턴스": 없음
  2. 다음을 클릭합니다.

  3. "IDP 어댑터" 탭의 페이지 아래쪽에서 암호 자격 증명 유효성 검사기 관리를 클릭합니다.

  4. 새 인스턴스 만들기를 클릭합니다.

  5. "형식" 탭에서 다음 세부 정보를 입력합니다.

    • "인스턴스 이름": 인스턴스를 식별하는 이름(예: pfghdocscv)
    • "인스턴스 ID": 인스턴스의 ID(예: pfghdocscv)
    • "형식": LDAP 사용자 이름 암호 자격 증명 유효성 검사기
    • "부모 인스턴스": 없음
  6. 다음을 클릭합니다.

  7. "인스턴스 구성" 탭에서 데이터 저장소 관리를 클릭합니다.

  8. 새 데이터 저장소 추가를 클릭합니다.

  9. "데이터 저장소 유형" 탭에서 다음 세부 정보를 입력합니다.

    • "인스턴스 이름": 임의의 고유 값(예: pfghdocsds)
    • "형식": 디렉터리(LDAP)
    • "로그에서 값 마스킹": 선택 해제됨
  10. 다음을 클릭합니다.

  11. "LDAP 구성" 탭에서 LDAP 서버 세부 정보를 구성합니다.

  12. 연결 테스트를 클릭합니다. "연결 테스트가 성공했습니다."가 표시됩니다.

  13. 페이지 아래쪽에서 고급을 클릭합니다.

  14. "LDAP 이진 특성" 탭을 클릭하고 특성으로 guidAttributeobjectGUID을(를) 추가합니다.

  15. 완료를 클릭합니다. "LDAP 구성" 탭으로 돌아가야 합니다.

  16. 다음저장을 차례로 클릭합니다.

  17. "데이터 저장소 관리" 탭에서 완료를 클릭합니다.

  18. "인스턴스 구성" 탭에서 다음 세부 정보를 입력합니다.

    • "LDAP Datastore": 위에서 만든 데이터 저장소의 이름입니다.
    • "검색 기준": LDAP 검색을 시작할 디렉터리의 위치입니다.
    • "검색 필터": 로그인할 때 사용자가 입력하는 사용자 이름이 LDAP 서버의 필드와 일치하도록 하는 필터입니다(예: sAMAccountName=${username}).
    • "검색 범위": 하위 트리
    • "대/소문자 구분 일치": 선택됨
  19. 다음을 클릭하고, 다음을 다시 클릭한 다음 저장을 클릭합니다.

IdP 어댑터에서 SAML 출력 관리

  1. "암호 자격 증명 유효성 검사기 관리" 페이지에서 완료를 클릭합니다.

  2. "IDP 어댑터" 탭에서 다음 세부 정보를 입력합니다.

    • "암호 자격 증명 유효성 검사기 인스턴스": 위에서 만든 유효성 검사기 인스턴스의 이름입니다(예: pfghdocscv). 업데이트를 클릭하여 선택을 마무리합니다.
    • 다른 모든 필드는 기본값으로 그대로 두거나 요구 사항으로 수정할 수 있습니다.
  3. 다음을 클릭하고, 다음을 다시 클릭합니다.

  4. "어댑터 특성" 탭에서 다음 세부 정보를 입력합니다.

    • "고유한 사용자 키 특성": username

    • username 속성 옆의 "가명"을 선택합니다.

    참고

    이 단계는 중요합니다. 어댑터 특성은 SCIM 프로비전 중에 사용자를 GitHub 고유하게 식별하는 데 사용됩니다.

  5. 다음을 클릭하고, 다음을 다시 클릭합니다.

  6. 요약 페이지에서 설정을 검토한 다음 저장을 클릭합니다.

  7. "IdP 어댑터" 탭에 방금 만든 어댑터가 표시됩니다. 완료를 클릭합니다.

  8. "어댑터 인스턴스" 탭의 "어댑터 인스턴스" 드롭다운에서 방금 만든 어댑터를 선택합니다.

  9. 다음을 클릭합니다.

  10. "매핑 방법" 탭에서 SAML 어설션에서 어댑터 계약 값만 사용(다른 선택 항목이 작동하지만 확인되지 않음)을 선택합니다.

  11. 다음을 클릭합니다.

  12. 특성 계약 이행 탭에서 '어댑터'를 원본으로 하여 SAML_SUBJECT를, 값을 username로 매핑합니다.

    참고

    이 단계는 중요합니다. 정규화된 SAML_SUBJECT은(는) SCIM에서 프로비전된 사용자의 정규화된 사용자 이름과 일치해야 합니다.

  13. 다음을 클릭하고, 다음을 다시 클릭한 다음 완료을 클릭합니다.

  14. "인증 원본 매핑" 탭으로 돌아가야 하며 " 어댑터 인스턴스 이름" 섹션에는 방금 만든 어댑터 인스턴스가 포함되어야 합니다.

  15. 다음을 클릭합니다.

  16. "Protocol Settings" 탭에서 Configure Protocol Settings을 클릭합니다.

  17. "Assertion Consumer Service URL"의 경우 다음 세부 정보가 포함된 행을 추가합니다.

    • "기본값"(선택됨)
    • "인덱스": 0
    • "바인딩": POST
    • "엔드포인트 URL": /enterprises/ENTERPRISE/saml/consumeENTERPRISE가 엔터프라이즈 이름 또는 하위 도메인인 경우
  18. 다음을 클릭합니다.

  19. "Allowable SAML Bindings" 탭에서 "POST" 및 "REDIRECT"만 선택되어 있는지 확인하세요.

  20. 다음을 클릭합니다.

  21. "Signature Policy" 페이지에서 "SIGN RESPONSE AS REQUIRED"만 선택되어 있는지 확인하세요.

  22. 다음을 클릭합니다.

  23. "Encryption Policy" 탭에서 "NONE"이 선택되어 있는지 확인합니다.

  24. 다음을 클릭합니다.

  25. 저장을 클릭합니다.

  26. "자격 증명" 탭에 도달할 때까지 다음완료를 클릭합니다.

  27. "자격 증명" 탭에서 자격 증명 구성을 클릭한 다음 인증서 관리를 클릭합니다.

  28. "인증서 관리" 페이지에서 Import를 클릭한 다음 X509 인증서를 업로드합니다(도움말은 X509 인증서 만들기 예제 섹션 참조).

  29. "암호"의 경우 인증서에 대해 챌린지 암호를 사용합니다.

  30. 다음저장을 차례로 클릭합니다.

  31. "인증서 관리" 탭에 방금 가져온 인증서가 표시됩니다. 완료를 클릭합니다.

  32. "디지털 서명 설정" 탭에서 다음을 수행합니다.

    • "서명 인증서"로 방금 작성한 인증서를 선택합니다
    • 보조 인증서를 비워 두고 "서명에 인증서 포함" 확인란의 선택을 취소할 수 있습니다.
    • 서명 알고리즘은 "RSA SHA256"이어야 합니다.
  33. 다음, 완료, 다음을 차례로 클릭합니다.

  34. "요약" 탭에서 "SSO 애플리케이션 엔드포인트"에 대해 토글을 사용하도록 설정합니다.

  35. 저장을 클릭합니다. SP 연결 목록으로 돌아가야 합니다. 여기서 새로 만든 SP 연결이 표시됩니다.

SAML 구성에 대한 정보 수집

에서 SAML GitHub을 구성하려면 PingFederate에서 몇 가지 세부 정보가 필요합니다.

  1. "SP 연결" 페이지의 새 연결 행에서 작업 선택, 메타데이터 내보내기를 차례로 클릭합니다.
  2. "메타데이터 서명" 탭의 새 연결 행에서 위에서 만든 서명 인증서를 선택합니다. 인증서를 다운로드하려면 다음을 클릭한 다음 내보내기를 클릭합니다.
  3. PingFederate에서 헤더에서 시스템, 서버, 프로토콜 설정을 차례로 클릭합니다. SAML 2.0 ENTITY ID이(가) 정의되어 있는지 확인합니다. SAML 설정의 "발급자" 필드에 GitHub필요하므로 이를 기록해 둡니다.
  4. 다운로드한 메타데이터 파일을 열고 다음 단계를 준비합니다.

구성하기 GitHub

  1. GitHub에 엔터프라이즈의 설정 사용자로 로그인합니다.

  2. 엔터프라이즈 설정에서 SAML을 사용하도록 설정합니다. 을 참조하세요.

  3. 이전 섹션의 SAML 메타데이터 파일에서 다음 값을 입력합니다.

    • "Single Sign-On URL"의 경우 location 필드의 <md: SingleSignOnService> 값을 사용합니다. /idp/SSO.saml2(으)로 끝나는 URL이어야 합니다.
    • "발급자"의 경우 entityId 필드의 <md: EntityDescriptor> 값 (URL)을 사용합니다.
  4. "확인 인증서"의 경우 이전에 만든 X509 인증서 파일을 업로드합니다.

  5. 설정 저장을 클릭합니다.

2. SCIM 구성

이 섹션에서는 PingFederate에서 SCIM 설정 및 특성 매핑을 구성합니다.

  1. SCIM 설정 구성
  2. SCIM에 LDAP 필드 매핑
  3. 구성 완료 및 테스트

이 섹션을 시작하기 전에 의 이전 단계를 수행했는지 확인합니다.

SCIM 설정 구성

  1. PingFederate의 "SP 연결" 페이지로 돌아가서 이전에 만든 SP 연결을 선택합니다.

  2. “연결 형식” 탭을 클릭합니다.

  3. 아웃바운드 프로비저닝을 선택합니다.

  4. 브라우저 SSO 프로필이 선택되어 있는지 확인합니다.

  5. "아웃바운드 프로비저닝" 탭에 도달할 때까지 다음을 클릭한 다음 프로비전 구성을 클릭합니다.

  6. “대상” 탭에서 다음 정보를 입력합니다.

    • "기본 URL": https://api.github.com/scim/v2/enterprises/{enterprise}/ 또는 https://api.SUBDOMAIN.ghe.com/scim/v2/enterprises/SUBDOMAIN
    • "액세스 토큰": personal access token (classic) 설치 사용자를 위해 만든 토큰
  7. 다음을 클릭합니다.

  8. "채널 관리" 탭에서 만들기를 클릭한 다음 고유한 채널 이름(예: pfghscim)을 입력합니다.

  9. 다음을 클릭합니다.

  10. "원본" 탭에서 이전에 만든 데이터 저장소를 선택합니다.

  11. 다음을 클릭합니다.

  12. "원본 설정" 탭에서 모든 기본 설정을 유지할 수 있습니다. 다른 설정도 작동할 가능성이 있지만 아직 확인되지 않았습니다.

  13. 다음을 클릭합니다.

  14. "원본 위치" 탭에서 LDAP 서버에서 프로비전된 사용자의 출처를 구성할 위치를 구성합니다. 이는 설정 및 요구 사항에 따라 달라집니다. 구성한 후 다음을 클릭합니다.

SCIM에 LDAP 필드 매핑

"특성 매핑" 탭에서 LDAP 서버의 필드를 SCIM 필드로 매핑해야 합니다. 지원되는 SCIM 필드와 각 필드에 필요한 값은 다음 목록을 GitHub참조하세요.

  • 사용자: 이는 정규화되고 프로비전된 사용자의 사용자 이름으로 GitHub 사용됩니다. 외부 인증에 대한 사용자 이름 고려 사항을(를) 참조하세요. 이는 PingFederate에서 SAML_SUBJECT 속성으로 구성한 SAML 어설션과 함께 전송된 subject의 정규화와 일치해야 합니다.
  • 전자 메일: 사용자의 전자 메일 주소를 포함하는 필드입니다.
  • 표시 이름: 사용자가 읽을 수 있는 이름입니다.
  • 형식화 이름:표시할 형식이 지정된 모든 중간 이름, 제목 및 접미사를 포함한 사용자의 전체 이름입니다.
  • 이름: 사용자의 이름입니다.
  • : 사용자의 성.
  • 외부 ID:이 식별자는 IdP 공급자에 의해 생성됩니다.
  • 역할: 이 필드에는 사용자의 의도된 역할을 GitHub나타내는 문자열이 포함되어야 합니다. 유효한 역할은 enterprise_owner, user, billing_managerguest_collaborator .

설정 구성을 마치면 다음을 클릭합니다.

구성 완료 및 테스트

  1. "활성화 및 요약" 탭에서 "채널 상태"에 대해 활성을 선택합니다.
  2. "채널 관리" 탭에서 완료를 클릭합니다.
  3. "아웃바운드 프로비저닝" 탭에서 저장을 클릭합니다. 이제 SCIM이 구성되고 사용하도록 설정되었습니다.
  4. 프로비저닝이 실행될 때까지 몇 분 정도 기다린 다음, 새 비공개 브라우저 창을 열고 GitHub로 이동합니다.
  5. SAML으로 로그인을 클릭합니다. PingFederate 로그인 페이지로 리디렉션되어야 합니다.
  6. GitHub에 프로비저닝된 LDAP 서버의 사용자 자격 증명을 사용해 로그인할 수 있어야 합니다.

PingFederate 프로비전은 사용자 및 그룹을 독립적으로 처리합니다. 프로비저닝하려면 사용자를 직접 할당해야 합니다. 할당된 그룹에 있지만 직접 할당되지 않은 사용자는 프로비전되지 않습니다.

X509 인증서를 만드는 예제

X509 인증서를 만드는 방법에는 여러 가지가 있습니다. 요구 사항에 맞게 작동할 수 있는 예제는 다음과 같습니다.

  1. 터미널 창에서openssl version을(를) 실행하여 OpenSSL이 설치되어 있는지 확인합니다. 설치되지 않은 경우 지금 설치합니다.

  2. 다음 명령을 사용하여 프라이빗 키를 생성합니다.

    Shell
    openssl req -nodes -sha256 -newkey rsa:2048 -keyout MyPrivateKey.key -out MyCertificateRequest.csr
    

    필요한 정보를 입력하고 만든 챌린지 암호를 기록해 둡니다 .

  3. 키가 생성되었는지 확인하려면 다음 명령을 실행합니다. 명령 출력에 MyPrivateKey.key 이름이 지정된 파일이 나열되어야 합니다.

    Shell
    ls | grep MyPrivateKey.key
    
  4. 다음 명령을 사용하여 인증서를 생성합니다.

    Shell
    openssl x509 -req -days 365 -sha256 -in MyCertificateRequest.csr -signkey MyPrivateKey.key -out pfgh256.crt
    
  5. 인증서가 생성되었는지 확인하려면 다음 명령을 실행합니다. 명령 출력에 pfgh256.crt 이름이 지정된 파일이 나열되어야 합니다.

    Shell
    ls | grep pfgh256.crt
    
  6. 다음 명령을 사용하여 PKCS #12 파일을 내보냅니다. PingFederate에 업로드해야 하는 파일입니다.

    Shell
    openssl pkcs12 -export -in pfgh256.crt -inkey MyPrivateKey.key -out pfgh256.p12
    
  7. 파일을 내보내려면 다음 명령을 실행합니다. 명령 출력에 pfgh256.p12 이름이 지정된 파일이 나열되어야 합니다.

    Shell
    ls | grep pfgh256.p12
    

에 대한 SAML 메타데이터 파일 만들기 GHE.com

일부 값은 PingFederate에서 제공하는 GitHub.com메타데이터 파일과 다르므로 엔터프라이즈의 SAML 메타데이터에 대한 XML 파일을 수동으로 만듭니다.

  1. 다음 XML을 텍스트 편집기에 복사합니다.

    XML
    <?xml version="1.0"?>
    <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
      entityID="https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN" cacheDuration="PT1440M">
      <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"
        AuthnRequestsSigned="false" WantAssertionsSigned="false">
        <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
        <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
          Location="https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN/saml/consume" isDefault="true"
          index="0"/>
      </md:SPSSODescriptor>
    </md:EntityDescriptor>
    
  2. SUBDOMAIN의 모든 인스턴스를 엔터프라이즈의 하위 도메인 GHE.com으로 대체합니다. 예: octocorp.

  3. 파일을 XML 파일로 저장합니다.

  4. SAML 어댑터 만들기의 지침으로 돌아갑니다.