OpenID Connect를 위한 토큰 엔드포인트 호출

OpenID Connect 권한 부여 코드 플로우에서 클라이언트는 토큰 엔드포인트를 사용하여 ID 토큰, 액세스 토큰 및 새로 고치기 토큰을 얻습니다.

시작하기 전에

예를 들어, 브라우저 내 클라이언트 애플리케이션 또는 Javascript 등의 스크립팅 언어로 구현된 클라이언트 애플리케이션에서 토큰 엔드포인트를 시작하는 경우에는 OpenID Connect 클라이언트로서 Liberty 서버를 구성할 필요가 없습니다.

이 태스크 정보

토큰 엔드포인트는 권한 부여 엔드포인트가 클라이언트에게 발행한 권한 부여 코드를 포함하는 클라이언트로부터의 요청을 승인합니다. 권한 부여 코드가 유효성 검증되면 적절한 토큰이 응답에서 클라이언트에게 리턴됩니다.

토큰 엔드포인트는 OpenID Connect 암시 플로우에서 사용되지 않습니다.

OpenID Connect가 사용되는 Liberty 서버는 다음 URL에서 OpenID Connect 토큰 엔드포인트에 액세스할 수 있습니다.

 https://server.example.com:443/oidc/endpoint/<provider_name>/token
문제점 예방: 아웃바운드 프록시를 사용하는 경우, OpenID Connect RP가 자동으로 호스트되는 프록시를 통해 요청을 라우팅하는 방법을 제공하지 않습니다.

OP(OpenID Connect Provider)에 액세스하기 위해 프록시를 사용해야 하는 경우, 임의의 OP 관련 URL 특성에 대해 입력하는 값이 외부 OP 호스트 및 포트가 아니라 프록시 호스트 및 포트를 포함해야 합니다.

대부분의 경우, OP 호스트 및 포트를 프록시 호스트 및 포트로 대체할 수 있습니다. 입력하는 URL이 RP 및 클라이언트(브라우저 또는 애플리케이션) 둘 다에 표시되어야 합니다. 사용할 올바른 URL을 판별하는 방법에 대한 안내가 필요하면 프록시 관리자에게 문의하십시오.

이 예제에서 클라이언트는 SSL 포트가 443으로 설정될 것으로 예상합니다.

프로시저

  1. 다음 매개변수가 있는 HTTP POST 요청을 준비하십시오.
    • grant_type: 이 매개변수의 값은 authorization_code여야 합니다.
    • code: 권한 부여 엔드포인트에서 수신한 권한 부여 코드입니다.

    매개변수는 application/x-www-form-urlencoded 형식을 사용하여 추가되어야 합니다.

  2. 토큰 엔드포인트 URL에 대한 요청을 POST하십시오.

결과

이러한 단계를 완료한 후에는 토큰 엔드포인트로 전송되는 유효한 HTTP POST 요청이 있습니다. 토큰 엔드포인트는 예제 절에서 설명하는 것처럼 응답을 리턴합니다.

OpenID Connect Provider가 클라이언트로부터 수신한 토큰 요청을 유효성 검증하면 OpenID Connect Provider는 application/json 형식의 JSON 오브젝트가 있는 HTTP 200 응답을 다시 클라이언트로 리턴합니다. 응답에는 다음과 같은 추가 매개변수와 함께 ID 토큰, 액세스 토큰 및 새로 고치기 토큰이 포함됩니다.

  • token_type: OAuth 2.0 토큰 유형. OpenID Connect의 경우 이 값은 Bearer입니다.
  • expires_in: 응답이 생성된 후 액세스 토큰의 만기 시간(초)입니다.

토큰, 본인확인정보 또는 기타 민감한 정보를 포함하는 토큰 엔드포인트로부터의 모든 응답에서 Cache-Control 헤더 값은 no-store로 설정되고 Pragma 헤더 값은 no-cache로 설정되어 있습니다.

.

다음은 HTTP POST 요청 및 응답의 예제를 보여줍니다.

예제 요청은 다음과 같습니다.

 POST /token HTTP/1.1
 Content-Type: application/x-www-form-urlencoded
 Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
     grant_type=authorization_code
     &code=SplxlOBeZQQYbYS6WxSbIA 		
     &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb

예제 응답은 다음과 같습니다.

 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
 Pragma: no-cache
 {
     "access_token": "SlAV32hkKG",
     "token_type": "Bearer",
     "refresh_token": "8xLOxBtZp8",
     "expires_in": 3600,
     "id_token": "eyJ ... zcifQ.ewo ... NzAKfQ.ggW8h ... Mzqg"
 }

주제의 유형을 표시하는 아이콘 태스크 주제

파일 이름: twlp_oidc_token_endpoint.html