앱에 대한 GitHub OAuth 2.0 자격 증명 - JWT

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기10분
  • JWT 전달자 토큰을 사용하여 GitHub Apps을(를) 통합하려면 다음 단계를 수행합니다.

    시작하기 전에

    필요한 역할:

    • 에서 DevOps 변경 속도oauth_admin.
    • GitHub관리자 계정.
    주:
    GitHub Enterprise Server(온-프레미스 인스턴스)의 경우 MID 서버를 사용하여 연결하는 경우 OAuth가 지원되지 않습니다.

    GitHub 계정에서 앱 GitHub 구성(JWT)

    계정에서 사용자 지정 GitHub 앱을 GitHub 생성하여 인스턴스에서 OAuth 2.0 인증을 활성화합니다 ServiceNow .

    시작하기 전에

    GitHub 요구 사항: GitHub 앱과 통합하도록 구성된 앱 ServiceNow

    필요한 역할: 인스턴스 역할 필요 없음

    이 태스크 정보

    계정에서 이 단계를 완료합니다 GitHub . 참조 건물 GitHub GitHub 개발자 사이트에서 사용자 지정 응용 프로그램을 만들고 구성하는 방법에 대한 지침을 볼 수 있습니다.

    프로시저

    1. GitHub 계정에서 다음으로 이동하여 앱을 생성합니다GitHub. 개발자 설정 > GitHub 앱.
    2. 홈페이지 URL 필드에 https://<instance-name>.service-now.com 을 입력합니다.
    3. 사용자 권한 부여 콜백 URL 필드에 https://<instance-name>.service-now.com/oauth_redirect.do 을 입력합니다.
    4. 사용자 식별 및 권한 부여 섹션에서 사용자 인증 토큰 만료 필드를 선택 취소합니다.
    5. 웹후크 섹션에서 활성 필드를 선택합니다.
    6. 웹후크 URL 필드에 https://<instance-name>.service-now.com/api/sn_devops/v2/devops/tool/apps?toolId=<도구 ID>를 입력합니다. 여기서 도구 ID는 의 도구 ID(sys_id)DevOps 변경 속도입니다GitHub.
      주:
      도구를 새로 생성하고 도구 ID가 없는 경우 도구 ID 없이 웹후크 URL을 입력하고 나중에 구성할 수 있습니다. 나중에 구성하려면 다음을 수행합니다.
      1. 연결된 도구의 도구 기록 페이지로 이동합니다.
      2. GitHub 앱 구성을 선택한 다음, 기존 토큰으로 자동 구성을 선택합니다.

        기존 토큰으로 자동 구성합니다.

      이렇게 하면 GitHub 앱의 웹후크 URL이 자동으로 구성됩니다.
      다음 방법 중 하나로 도구 ID를 가져올 수 있습니다.
      • 에서 DevOps 변경 속도도구와 연결하는 동안 페이지 URL에서 도구 ID를 사용할 수 있습니다. 예: https://<instance-name>.service-now.com/.../sn_devops_tool/<도구 ID>/....
      • 의 도구 기록 페이지에서 DevOps 변경 속도웹후크 URL GitHub 을 복사할 수 있습니다. 구성 > 수동으로 구성 > 웹후크 URL.
    7. 나머지 필드는 비워 둡니다(기본값).
    8. 리포지토리 권한 섹션에서 다음 설정을 구성합니다.
      작업 읽기 전용
      검사 읽기 전용
      컨텐츠 읽기 전용
      배치 읽기 및 쓰기
      환경 읽기 전용
      메타데이터 읽기 전용
      끌어오기 요청 읽기 전용
      비밀 읽기 전용
      Webhook 읽기 및 쓰기
      주:
      에서 웹후크를 ServiceNow구성하려면 읽기 및 쓰기 권한이 필요합니다.
      주:
      이미 GitHub 앱을 사용 중이고 권한을 업데이트하는 경우 GitHub 앱에 대한 해당 권한을 검토하고 수락해야 합니다. 앱으로 이동하여 요청 구성 > 검토 > 새 권한 수락을 선택할 수 있습니다.
    9. 나머지 권한은 액세스 권한 없음 (기본값)으로 둡니다.
    10. Subscribe to events(이벤트 구독) 섹션에서 Deployment protection rule(배포 보호 규칙) 옵션을 선택합니다.
    11. 변경 사항을 저장합니다.
    12. 앱을 만든 GitHub 후 새 개인 키를 생성하고 컴퓨터에 저장합니다.
    13. 선택한 계정에 새로 만든 GitHub 앱을 설치합니다.
      1. GitHub 앱 설정 페이지에서 앱을 선택합니다.
      2. 왼쪽 사이드바에서 앱 설치를 선택합니다.
      3. 올바른 리포지토리가 포함된 조직 또는 개인 계정 옆에 있는 설치를 선택합니다.
      4. 모든 리포지토리에 앱을 설치하거나 리포지토리를 선택합니다.
        자세한 내용은 GitHub Apps 설치를 참조하세요.

    DevOps 속성에 클라이언트 ID 추가

    GitHub 앱을 구성한 후 클라이언트 ID 접두사(ID의 처음 3자 이상)가 DevOps 속성인 GitHub 앱에 대한 클라이언트 ID 지정자에 추가되었는지 확인해야 합니다.

    시작하기 전에

    필요한 역할: sn_devops.admin

    프로시저

    1. 다음으로 이동 작업 공간 > DevOps 변경 작업 공간 > 관리 > 시스템 구성 > 속성.
    2. 애플리케이션 범위를 DevOps Data Model로 변경합니다.
    3. GitHub 앱에 대한 클라이언트 ID 지정자 [sn_devops.github_oauth_client_id_specifier] 속성을 검색합니다.
    4. GitHub 앱의 클라이언트 ID 접두사(ID의 처음 3자 이상)를 속성에 입력합니다.
    5. 저장을 선택합니다.

    에 대한 Java KeyStore 인증서 생성 GitHub

    JWT 인증을 위한 JKS(Java KeyStore) 인증서를 생성합니다.

    시작하기 전에

    필요한 역할: admin

    프로시저

    1. 앱 프라이빗 키를 사용하여 GitHub CA 서명 인증서를 만듭니다.
      openssl req -new -x509 -key <file-name>.pem -out <certificate-name>.pem -days 1095
    2. 필요한 상세 정보를 입력합니다.
    3. 앱 프라이빗 키 및 CA 서명 인증서를 사용하여 GitHub PKCS 12 파일을 만듭니다.
      openssl pkcs12 -export -in <certificate-name>.pem -inkey <file-name>.pem -certfile <certificate-name>.pem -out <PKCS-12-file-name>.p12 
    4. 익스포트 암호를 제공합니다.
    5. JKS 파일을 생성합니다.
      keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS
    6. 대상 및 소스 키 저장소 암호를 제공합니다.

    인스턴스에 Java KeyStore 인증서 첨부 GitHub

    JWT 전달자 사용 유효한 GitHub Java KeyStore(JKS) 인증서를 ServiceNow 인스턴스에 첨부하여 토큰 인증을 부여합니다.

    시작하기 전에

    유효한 Java KeyStore 인증서의 가용성을 보장합니다.

    필요한 역할: admin

    프로시저

    1. 다음으로 이동 모두 > 시스템 정의 > 인증서.
    2. 새로 만들기를 선택합니다.
    3. 양식의 필드에 내용을 입력합니다.
      표 1. X.509 인증서 양식 필드
      필드 설명
      이름 기록을 고유하게 식별하는 이름입니다. 예를 들어 내 GitHub 앱 인증서입니다.
      만료 시 알림 인증서가 만료될 때 알림을 받을 사용자를 지정하는 옵션입니다.
      만료되기 전 경고 인증서가 만료되기 전에 알림을 보낼 일 수입니다.
      활성 인증서를 활성화하는 옵션입니다.
      유형 인증서 유형을 선택하는 옵션입니다. Java 키 스토어를 선택합니다.
      며칠 후 만료 인증서가 만료될 때까지의 일 수입니다.
      키 스토어 암호 인증서와 연결된 암호(힌트: 이전에 만든 대상 KeyStore 암호).
      간단한 설명 인증서에 대한 요약입니다.
    4. 첨부 파일 아이콘( 첨부 파일 아이콘)을 선택하고 JKS 인증서를 첨부합니다.
    5. Validate Stores/Certificates(스토어/인증서 확인)를 선택합니다.

    JKS 인증서에 대한 GitHub JWT 서명 키 생성

    Java KeyStore 인증서에 할당 GitHub 할 JSON 웹 토큰(JWT) 서명 키를 생성합니다.

    시작하기 전에

    필요한 역할: admin, sn_devops.admin

    프로시저

    1. 다음으로 이동 모두 > 시스템 OAuth > JWT 키.
    2. 새로 만들기를 선택합니다.
    3. 양식의 필드에 내용을 입력합니다.
      표 2. JWT 키 양식 필드
      필드 설명
      이름 JWT 서명 키를 고유하게 식별하기 위한 이름입니다. 예를 들어 내 GitHub 앱 JWT 키입니다.
      서명 키 스토어 이전 작업에 첨부된 유효한 JKS 인증서입니다. 예를 들어 내 GitHub 앱 인증서입니다.
      키 ID 토큰 서명에 여러 키를 사용할 때 사용되는 키를 식별하는 고유 ID입니다.
      서명 알고리즘 JWT 키로 서명하는 알고리즘(힌트: RSA 256).
      서명 키 암호 서명 키와 관련된 암호(힌트: 이전에 만든 소스 키 저장소 암호).
      활성 키를 활성화하는 옵션입니다.
    4. 제출을 선택합니다.

    서명 키에 대한 GitHub JWT 제공자 생성

    에 대한 GitHub인스턴스에 JSON 웹 토큰(JWT) 제공자 ServiceNow 를 추가합니다.

    시작하기 전에

    필요한 역할: admin, sn_devops.admin

    프로시저

    1. 다음으로 이동 모두 > 시스템 OAuth > JWT 제공자.
    2. 새로 만들기를 선택합니다.
    3. 양식의 필드에 내용을 입력합니다.
      표 3. JWT 제공자 양식 필드
      필드 설명
      이름 JWT 제공자를 고유하게 식별하는 이름입니다. 예를 들어 내 GitHub 앱 JWT 공급자입니다.
      만료 간격(초) JWT 제공자 토큰의 수명을 설정하는 시간(초)입니다(힌트: 기본값으로 둘 수 있음).
      서명 구성 이전에 만든 유효한 JWT 서명 키입니다. 예를 들어 내 GitHub 앱 JWT 키입니다.
    4. 양식 헤더를 마우스 오른쪽 버튼으로 클릭하고 저장을 선택합니다.
    5. GitHub 표준 클레임 관련 목록에서 앱 앱 ID(에 있는 GitHub 앱 구성의 GitHub정보 섹션에서 사용 가능)를 iss 클레임의 값으로 입력합니다.
    6. aud 값과 sub 값은 비워 둡니다(기본값).

    OAuth 제공자(JWT)로 등록 GitHub

    앱 계정 구성 중에 GitHub 생성된 정보를 사용하여 OAuth 제공자로 등록 GitHub 하고 인스턴스가 OAuth 2.0 토큰을 요청하도록 허용합니다.

    시작하기 전에

    필요한 역할: admin, sn_devops.admin

    프로시저

    1. 다음으로 이동 모두 > 시스템 OAuth > 애플리케이션 레지스트리.
    2. 새로 만들기를 선택합니다.
      What kind of OAuth application?(어떤 종류의 OAuth 애플리케이션입니까? 메시지)이 표시됩니다.
    3. 타사 OAuth 공급자에 연결을 선택합니다.
    4. 양식의 필드에 내용을 입력합니다.
      표 4. 애플리케이션 레지스트리 양식 필드
      필드 설명
      이름 기록을 고유하게 식별하는 이름입니다. 예를 들어 내 GitHub 앱 공급자를 입력합니다.
      클라이언트 ID 앱의 클라이언트 IDGitHub(힌트: 에서 GitHub 앱 구성의 GitHub정보 섹션에서 사용 가능).
      클라이언트 비밀 앱의 클라이언트 비밀GitHub(힌트: 에서 GitHub 앱 구성의 GitHub정보 섹션에서 사용 가능).
      OAuth API 스크립트 수정된 OAuthUtil 스크립트 포함을 참조할 수 있는 옵션입니다. OAuthDevOpsGitHubJWTHandler를 선택합니다.
      기본 부여 유형 애플리케이션 레지스트리와 연결된 권한 부여 유형입니다. JWT 전달자를 선택합니다.
      토큰 URL 인스턴스가 토큰을 검색하고 새로 고치는 데 사용하는 토큰 엔드포인트의 위치입니다.

      클라우드 버전에 https://api.github.com/app/installations/<installation_id>/access_tokens를 입력합니다.

      엔터프라이즈 버전의 경우 https://<HOST_URL>/api/v3/app/installations/<installation_id>/access_tokens를 입력합니다.

      설치 ID의 경우 GitHub의 GitHub 앱 구성에서 앱 설치 섹션으로 이동하고 기어 아이콘을 선택하여 앱을 구성합니다. 설치 ID는 웹 페이지 URL에 있습니다. 예: https://github.com/settings/installations/<installation_id>.

    5. 나머지 양식 필드는 기본값으로 둡니다.
      애플리케이션 레지스트리 양식
    6. 양식 헤더를 마우스 오른쪽 버튼으로 클릭하고 저장을 선택합니다.
    7. OAuth 엔터티 프로파일 관련 목록에서 생성된 기본 프로파일을 엽니다.
    8. JWT 제공자 필드를 이전에 만든 JWT 제공자로 채우고 양식을 저장합니다.
    9. Key Management(키 관리) > Module Access Policies > All(모듈 액세스 정책 모두)로 이동합니다.
    10. 암호화 모듈 필드 값으로 com_snc_platform_security_oauth_glideencrypter 정책을 선택하고 대상 스크립트필드 값으로 스크립트 포함: OAuthDevOpsGitHubJWTHandler를 선택합니다.
    11. 결과 필드가 추적으로 설정되어 있는지 확인하고 변경 내용을 저장합니다.
      결과 필드를 표시하는 양식이 추적으로 설정되어 있습니다.

    앱 제공자(JWT)에 대한 GitHub 자격 증명 기록 생성

    작업 권한을 부여하기 위해 이전에 생성한 앱 제공자에 GitHub 대한 자격 증명 기록을 생성합니다.

    시작하기 전에

    필요한 역할: admin, sn_devops.admin

    프로시저

    1. 다음으로 이동 모두 > 연결 및 자격 증명 > 자격 증명.
    2. 새로 만들기를 선택합니다.
      어떤 유형의 자격 증명을 작성하시겠습니까? 메시지가 표시됩니다.
    3. OAuth 2.0 자격 증명을 선택합니다.
    4. 양식의 필드에 내용을 입력합니다.
      표 5. OAuth 2.0 자격 증명 양식 필드
      필드 필요한 값
      이름 기록을 고유하게 식별하는 이름입니다. 예를 들어 내 GitHub 앱 자격 증명을 입력합니다.
      활성 기록을 활성화하는 옵션입니다.
      OAuth 엔터티 프로파일 애플리케이션 레지스트리에서 작성된 기본 OAuth 엔터티 프로파일입니다.
    5. 레코드를 저장합니다.
    6. OAuth 토큰을 생성하려면 OAuth 토큰 가져오기 관련 링크를 선택합니다.