외부 공급업체 토큰을 수락하기 위한 OAuth OIDC 제공자 구성

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기7분
  • 1회 사용자 인증(SSO)을 사용하여 인바운드 API 호출을 사용하여 외부 공급업체 OIDC 제공자가 생성한 ID 토큰을 수락하도록 OAuth OIDC 제공자를 구성할 수 있습니다.

    시작하기 전에

    필요한 역할: admin

    이 태스크 정보

    Now Platform 인바운드 API 호출 외에도 외부 SSO(Single Sign-On) 구현을 통해 OIDC를 지원합니다. OIDC 공급자 구성의 예는 Azure AD 설정을 참조하세요. OIDC 제공자 구성의 SSO 관련 예는 SSO(Single Sign-On)에 대한 OIDC(OpenID Connect) 구성 생성을 참조하세요.

    프로시저

    1. 다음으로 이동 모두 > 시스템 OAuth > 애플리케이션 레지스트리.
      • 새로 만들기를 선택하고, ID 토큰을 확인하도록 OIDC 공급자 구성을 선택한 다음, 양식을 작성합니다.
      • OIDC 공급자(ADFS, Auth0, Azure AD, Google, Okta)에 대한 기존 템플릿을 선택한 다음 양식을 채웁니다.
        주:
        OAuth 2.0 플러그인으로 데모 데이터를 로드한 후에는 OIDC 제공자 템플릿을 사용할 수 있습니다.
      필드 설명
      이름 OAuth OIDC 엔터티를 식별하는 고유 이름입니다.
      클라이언트 ID 타사 OAuth OIDC 서버에 등록된 애플리케이션의 클라이언트 ID입니다. 이 값은 JWT 토큰의 aud 클레임 값과 같아야 합니다.
      OAuth API 스크립트 외부 OAuth 제공자에 대한 요청 및 응답을 사용자 지정하는 데 사용할 수 있는 스크립트입니다.
      OAuth OIDC 제공자 구성 OIDC 공급자(ADFS, Auth0, Azure AD, Google, Okta)를 사용하여 JWT 토큰의 유효성을 검사할 수 있습니다. OIDC 공급자 구성 기록을 선택하여 사용자 클레임사용자 필드 가 적절하게 설정되었는지 확인합니다.
      또한 다음 필드를 채워야 합니다.
      • JTI 클레임 검증 사용: 사용하도록 설정하면 JWT 토큰 검증이 ServiceNow 제공자가 보낸 JTI의 유효성도 검사합니다.
      • OIDC 메타데이터 URL: OIDC 제공자의 잘 알려진 구성에 대한 상세 정보입니다.
      주:
      유효성 검사를 검사하지 않으면 JWT 토큰에 있는지 여부에 관계없이 jti 의 유효성을 검사할 수 없습니다. 토큰의 클레임 이름은 jti여야 합니다.
      클럭 오차 제약 조건이 유효한 것으로 간주되는 시간(초)입니다. 기본값은 300입니다.
      토큰 제한 적용 인증 프로파일을 사용하도록 설정된 API에 사용할 토큰만 활성화하려면 선택합니다. API 접근 정책을 사용하여 액세스 권한을 설정할 수 있습니다. 자세한 내용은 REST API 액세스 정책 만들기를 참조하세요.

      기본값: 선택되지 않음.

      활성 OAuth 애플리케이션을 활성화하려면 확인란을 선택합니다.
      클라이언트 유형 클라이언트 유형에 따라 클라이언트 유형을 선택합니다. 옵션:
      • Iframe 임베디드
      • 사용자형 통합
      • 서비스형 통합
      자세한 내용은 을 참조하십시오 OAuth 및 SSO 기록에 대한 클라이언트 유형 구성.
    2. 제출을 선택합니다.
      기록은 애플리케이션 레지스트리 [oauth_entity] 테이블에 저장됩니다.
      인스턴스가 토큰과 인증 코드를 발급하면 애플리케이션 레지스트리 [oauth_entity] 테이블에 유형이 외부 OIDC 제공자인 기록이 생성됩니다. 자세한 내용은 문서를 참조하십시오.
    3. 옵션: OAuth 엔터티 프로파일 기록의 관련 목록으로 이동하여 범위 없이 새 OAuth 제공자에 대해 시스템에서 생성된 기본 프로파일을 확인합니다.
      이름, 권한 부여 유형 및 OAuth 범위를 포함하여 OAuth 제공자 프로파일을 변경하거나 추가할 수 있습니다.
    4. 옵션: 기록 OAuth 엔터티 범위의 관련 목록으로 이동하여 이 OAuth 제공자에 대해 사용 가능한 모든 OAuth 범위를 정의합니다.
      정의된 범위는 프로파일을 만들거나 업데이트할 때 선택할 수 있습니다. 정의된 각 OAuth 범위에는 읽기 범위 또는 쓰기 범위와 같이 제공자 스펙에서 가져와야 하는 이름 및 범위가 포함되어 있습니다. 각 범위는 별도로 정의해야 합니다.
    5. 옵션: 자동 사용자 프로비저닝을 사용하려면 사용자 프로비저닝 기록의 관련 목록으로 이동합니다.
      옵션설명
      자동으로 사용자 프로비저닝 사용자에 대한 강제 인증을 활성화하는 옵션입니다.
      프로비저닝 데이터 소스 OIDC 토큰을 사용자로 ServiceNow 변환하는 데 사용할 데이터 소스입니다. 조회 목록을 사용하여 미리 정의된 데이터 소스 템플릿을 선택한 다음, 기록을 열어 변환된 테이블 매핑을 구성합니다. 변환 매핑을 구성할 때 소스 필드의 출처 JWT token는 , 대상 필드의 출처는 테이블입니다 sys_user .
      프로비저닝된 사용자에게 적용되는 사용자 역할 새로 프로비저닝된 ServiceNow 사용자에게 적용되는 사용자 역할입니다.

    다음은 REST API 호출을 호출하는 cURL 요청의 예입니다

    REST API 호출을 호출합니다.

    다음 단계를 수행합니다.

    • OpenID Connect 제공자에 앱을 등록합니다.
    • OAuth OIDC 엔터티를 구성합니다.
    • OIDC 제공자를 구성합니다.
      표 1. OIDC 제공자
      OIDC 제공자 OIDC 제공자의 이름입니다.
      OIDC 메타데이터 URL OIDC 메타데이터 URL(잘 알려진 구성 URL)을 지정합니다. 이 정보는 jwks 엔드포인트를 통해 토큰의 유효성을 검사하기 위해 공개 키를 가져오는 데 사용됩니다.
      사용자 클레임 사용자 테이블에 대해 유효성이 검사되는 클레임입니다.
      사용자 필드 사용자 기록을 식별하는 사용자 클레임입니다.
      JTI 클레임 검증 사용 활성화되면 ServiceNow JWT 토큰 확인은 제공자가 보낸 JTI도 확인합니다.
      주:
      유효성 검사를 검사하지 않으면 JWT 토큰에 있는지 여부에 관계없이 jti 의 유효성을 검사할 수 없습니다. 토큰의 클레임 이름은 jti여야 합니다. 이 정보는 재생 공격을 방지하는 데 사용됩니다.
    • JWT 토큰을 가져옵니다.
    • REST API 호출을 호출합니다.
      • 테이블 API 또는 스크립팅된 웹 서비스에 액세스하기 위한 인증 헤더의 ID 토큰입니다.
        curl -X GET --header "Accept:application/json" https://<instance_name>.service-now.com/api/now/table/incident/897b04f2dbd4a300a135364e9d961952 -k 
        --header "Authorization: Bearer eyJraWQiOiJjNTZtZTlXU0xPVnY3UFMwcTg4Qzl1b0lzNjFQYTdmUG4yZFVFOW9RNUg4IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiIwMHVnZDg1OD
        VkczI1WXpUSjBoNyIsIm5hbWUiOiJpbXJhbiBhbGkiLCJsb2NhbGUiOiJlbi1VUyIsImVtYWlsIjoiaW1yb241NDNAZ21haWwuY29tIiwidmVyIjoxLCJpc3MiOiJodHRwczovL2Rldi05MzQ
        xMjEub2t0YXByZXZpZXcuY29tIiwiYXVkIjoiMG9hZ2Q4bzk3a2lCT3dwd0IwaDciLCJpYXQiOjE1Mzc5MzMzMjYsImV4cCI6MTUzNzkzNjkyNiwianRpIjoiSUQueThVdXpWNUg2bm16SzRs
        OTI1RFVrQnJoR1o1MmJzVVpGVHRVTEphQjg3ayIsImFtciI6WyJwd2QiXSwiaWRwIjoiMDBvZ2Q4NTgycEFqZDZTemcwaDciLCJub25jZSI6InNub3ciLCJwcmVmZXJyZWRfdXNlcm5hbWUiO
        iJpbXJvbjU0M0BnbWFpbC5jb20iLCJnaXZlbl9uYW1lIjoiaW1yYW4iLCJmYW1pbHlfbmFtZSI6ImFsaSIsInpvbmVpbmZvIjoiQW1lcmljYS9Mb3NfQW5nZWxlcyIsInVwZGF0ZWRfYXQiOj
        E1Mzc5MzAxOTcsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhdXRoX3RpbWUiOjE1Mzc5Mjk2NjF9.OG87SYxWFgHGlhBYby2H79diRm9rlYZTeEkIINRUatwg-p4739htB8xEY-5_t6yU_6k5w1
        0pdgtt5M5QFZRPXVbQZNoGtY-Bxn0BjaimcFgoWfhY_0ldnGTkzN2RYyIHvrf9-yhxg347zvczmLrgMMa_VwG4rxrtE6rUXaIpIeIK5b-Deq8ADz8UTUTKpF_5RWk4X-oh5xK6BLniFHk4ShO
        Zq2v_mjproXwKk5euJKrVrar2lQ4adZCOSTRuTf3ThMO5WDh0sel-82LngXtLzRJJ51IqxAsXns0kJHLLqLtH1hXNRKfwT1ScQoE_OfWm4t0KryI2j4wSMEanFtLXIw"
      • 사용자가 인증되면 유효한 application/json 응답이 반환됩니다. 그렇지 않으면 사용자가 인증되지 않음 오류 메시지가 반환됩니다.
        User Not Authenticated
        {"error":{"message":"User Not Authenticated","detail":"Required to provide Auth information"},"status":"failure"}