OAuth 인증 코드 부여 플로우

  • 릴리스 버전: Yokohama
  • 업데이트 날짜 2025년 01월 30일
  • 읽기4분
  • 인증 코드 부여 플로우를 사용하면 사용자 이름/암호 자격 증명으로 인증하는 것과는 반대로 사용자가 자원을 신뢰하는 OAuth 서버로 직접 인증하여 자원에 액세스할 수 있습니다.

    이 OAuth 인증 코드 플로우를 구현하면 REST를 통해 자원에 액세스할 수 있습니다. 인증 코드 프레임워크는 사용자에게 사용자 이름/암호를 입력하도록 요구하지 않고 사용자가 구성하는 인증된 URL을 통해 액세스 토큰을 가져옵니다. 사용자 이름/암호는 자원에 대한 액세스를 요청하는 클라이언트에 노출되지 않습니다.

    ServiceNow 권한 부여 서버로서의 인스턴스

    OAuth 서버는 일반적으로 외부 공급업체 권한 부여 서버입니다. 권한 부여 코드 플로우에 대한 토큰을 발급하는 권한 부여 서버로 인스턴스를 지정할 ServiceNow 수도 있습니다.

    제한된 자원을 소유한 사용자는 액세스 권한을 부여해야 합니다. 또한 사용자는 언제든지 발급된 액세스 토큰을 해지하여 액세스를 종료할 수 있습니다.

    인증 코드 부여 플로우 프로세스

    인증 코드 부여 플로우 프로세스는 다음 세 단계로 구성됩니다.

    1단계에서 클라이언트 애플리케이션 또는 웹 사이트는 사용자 에이전트를 통해 인스턴스에 대한 GET 요청 형식으로 REST API 호출을 시작합니다. 일반적으로 REST 호출은 최종 사용자가 클라이언트 애플리케이션 또는 웹 사이트의 단추 또는 링크를 클릭하여 액세스 토큰을 요청할 때 시작됩니다. 또한 클라이언트 애플리케이션에서 최종 사용자는 권한 부여 URL, 토큰 URL, 클라이언트 ID 및 클라이언트 비밀을 지정해야 합니다. 이러한 항목에 대한 설명은 외부 공급업체 OAuth 제공자 사용 주제의 필드 설명을 참조하십시오. 클라이언트가 권한 부여 유형을 요청하는 경우 최종 사용자는 권한 부여 코드를 선택해야 합니다.

    클라이언트 애플리케이션에서 인스턴스로의 GET 요청 예시:
    https://myinstance.service-now.com/oauth_auth.do?response_type=code&redirect_uri={the_redirect_url}&client_id={the_client_identifier}
    주:
    response_type는 표준 OAuth 코드 부여 플로우를 사용하는 코드여야 합니다.
    최종 사용자는 인스턴스의 제한된 자원에 대한 액세스를 수동으로 허용해야 합니다. 구현에서 ServiceNow 최종 사용자는 인스턴스에 로그인해야 합니다. 이 인스턴스는 허용 및 거부 버튼이 있는 UI 페이지를 최종 사용자에게 표시합니다.

    클라이언트 애플리케이션이 실제로 토큰을 요청하는 항목은 권한 부여 엔드포인트라고도 하는 사용자가 만든 OAuth 제공자 애플리케이션 레지스트리 레코드입니다(외부 공급업체 OAuth 제공자 사용 참조). 인증 코드는 권한 부여 엔드포인트에서 클라이언트로 전송됩니다. 클라이언트로 직접 이동하지 않고 인증 끝점 양식에서 지정한 리디렉션 URL 로 이동합니다. 이 URL을 콜백 URL이라고도 합니다. 클라이언트 응용 프로그램 또는 웹 사이트에서 이 URL을 가져올 수 있습니다.

    인증 코드를 제공하는 인스턴스의 클라이언트 애플리케이션 응답 예시:
    https/http://{callbackURL}?code={the actual auth code}

    이제 클라이언트 애플리케이션에 인증 코드가 있으므로 클라이언트는 이 코드를 사용하여 액세스 토큰을 요청합니다. 인증 코드는 사용자가 1단계에서 동의했음을 증명합니다.

    클라이언트 애플리케이션에서 인증 코드를 제공하고 접근 토큰을 요청하는 인스턴스로의 ServiceNow POST 요청 예:
    https://myinstance.service-now.com/oauth_token.do?grant_type=authorization_code&code={the auth code}&redirect_uri={the_same_redirect_url}&client_id={the_same_client_identifier}&client_secret={client_secret_value}

    인스턴스의 엔드포인트는 액세스 토큰과 새로 고침 토큰을 반환합니다. 새로 고침 토큰을 사용하여 추가 액세스 토큰을 요청할 수 있습니다.

    인스턴스에서 토큰 해지를 포함하여 토큰을 관리할 수 있습니다. OAuth 토큰 관리를 참조하세요.

    클라이언트 애플리케이션은 액세스 토큰을 사용하여 REST API에 인증합니다. 클라이언트 애플리케이션을 인증한 후 REST API는 요청된 데이터를 JSON 페이로드로 반환합니다.

    인시던트 [incident] 테이블에 대한 데이터의 JSON 페이로드에 대한 GET 요청 예시:
    https://myinstance.service-now.com/api/now/table/incident?access_token={the_token}
    주:
    시스템은 암시적 허용 코드 흐름이라고도 하는 OAuth 암시적 부여도 지원합니다.

    통합 지원

    인증 코드 플로우는 인스턴스에서 다음 통합을 지원합니다.
    • 다중 SSO
    • SAML 2.0 업데이트 1
    • Multifactor Authentication

    모바일 인터페이스도 지원됩니다.