OpenID Connect를 위한 인트로스펙션 엔드포인트 호출

인트로스펙션 엔드포인트를 사용하면 액세스 토큰 홀더가 액세스 토큰을 실행한 OpenID Connect Provider로부터의 액세스 토큰에 대한 메타데이터 세트를 요청할 수 있습니다. 액세스 토큰은 OpenID Connect 또는 OAuth 인증을 통해 얻은 것이어야 합니다.

시작하기 전에

자원 서비스 또는 클라이언트 애플리케이션이 인트로스펙션 엔드포인트를 호출하는 경우에는 OpenID Connect 서버에 일반 OAuth 2.0 클라이언트로서 자신을 등록해야 합니다. 등록된 클라이언트 메타데이터는 introspectTokens = true 속성을 포함해야 합니다.

이 태스크 정보

OpenID Connect와 OAuth 2.0에서 사용되는 액세스 토큰 내에 포함된 정보는 클라이언트가 이해하기 힘듭니다. 이를 통해 보호 자원 또는 클라이언트는 OpenID Connect Provider가 액세스 토큰에 대해 리턴한 메타데이터를 기반으로 권한 부여를 결정할 수 있습니다.

OpenID Connect가 사용되는 Liberty 서버에는 다음 URL의 OpenID Connect 자체 검사 엔드포인트에 대한 액세스 권한이 있습니다.

 https://server.example.com:443/oidc/endpoint/<provider_name>/introspect
참고: 이 예제에서 OP의 SSL 포트는 443으로 예상됩니다.

프로시저

  1. GET 또는 POST 요청의 HTTP 기본 권한 부여 헤더에서 등록된 OpenID Connect 클라이언트를 위한 클라이언트 ID 및 비밀번호로 클라이언트 인증을 설정하십시오. 클라이언트 ID와 비밀번호는 application/x-www-form-urlencoded 인코딩 알고리즘을 사용하여 인코딩됩니다. 인코딩된 클라이언트 ID는 사용자 이름으로 사용되고 인코딩된 비밀번호는 비밀번호로 사용됩니다.
  2. 인트로스펙션 엔드포인트에 대한 GET 또는 POST 요청에 액세스 토큰의 문자열 값을 매개변수로 포함시키십시오.
  3. GET 또는 POST 요청을 인트로스펙션 엔드포인트 URL로 전송하십시오.

결과

이러한 단계를 완료한 후에는 예제 절에 나타낸 것처럼 인트로스펙션 엔드포인트로 전송되는 유효한 HTTP 요청이 있습니다.

유효한 요청에 대해 인트로스펙션 엔드포인트는 application/json 형식의 JSON 오브젝트가 있는 HTTP 200 응답을 리턴합니다. 여기에는 액세스 토큰이 활성인지 또는 만료되었는지에 따라 다음과 같은 정보가 포함됩니다.

액세스 토큰이 활성인 경우, 엔드포인트는 JSON 오브젝트에서 다음과 같은 추가 정보와 함께 active:true을 리턴합니다.

  • active: 액세스 토큰이 활성인지 여부를 나타내는 부울 표시기입니다.
  • client_id: 액세스 토큰을 요청한 OpenID 연결 클라이언트의 클라이언트 ID입니다.
  • sub: 액세스 토큰에 대한 권한이 부여된 자원 소유자입니다.
  • scope: 액세스 토큰과 연관된 범위의 공백으로 구분된 목록입니다.
  • iat: 액세스 토큰이 발행된 시간을 표시하며 UTC 1970년 1월 1일부터 초 단위로 계산되는 정수 시간소인입니다.
  • exp: 액세스 토큰이 만료되는 시간을 표시하며 UTC 1970년 1월 1일부터 초 단위로 계산되는 정수 시간소인입니다.
  • realmName: 자원 소유자의 영역 이름입니다.
  • uniqueSecurityName: 자원 소유자의 고유 보안 이름입니다.
  • tokenType: 액세스 토큰 유형입니다. OpenID Connect의 경우 이 값은 Bearer입니다.
  • grant_type: 액세스 토큰을 생성한 권한 부여의 유형을 나타내는 문자열입니다. 가능한 값은 authorization_code, password, refresh_token, client_credentials, resource_owner, impliciturn:ietf:params:oauth:grant-type:jwt-bearer입니다.

액세스 토큰이 만료되었지만 제공된 인증이 유효하거나 제공된 액세스 토큰의 유형이 잘못된 경우, 엔드포인트는 JSON 오브젝트에 active:false를 리턴합니다.

참고: 클라이언트 또는 자원 서비스가 액세스 토큰 인트로스펙션을 수행하려면 클라이언트 또는 자원 서비스는 OpenID Connect 제공자에 클라이언트로 자신을 등록해야 하며 클라이언트 메타데이터에서 introspect_tokenstrue로 설정되어야 합니다.

다음은 요청과 함께 활성 및 만료된 액세스 토큰의 예를 보여줍니다.

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

  POST /register HTTP/1.1
 Accept: application/x-www-form-urlencoded
 Authorization: Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3
     token=SOYleDziTitHeKcodp6vqEmRwKPjz3lFZTcsQtVC

활성 액세스 토큰을 위한 예제 응답:

 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
{  
   "exp"                : 1415307710,
   "realmName"          : "BasicRealm",
   "sub"                : "testuser",
   "scope"              : "openid scope2 scope1",
   "grant_type"         : "authorization_code",
   "uniqueSecurityName" : "testuser",
   "active"             : true,
   "token_type"         : "Bearer",
   "client_id"          : "pclient01",
   "iat"                : 1415307700
}

만료된 액세스 토큰을 위한 예제 응답:

 HTTP/1.1 200 OK
 Content-Type: application/json
 Cache-Control: no-store
 {
     "active":"false"
 }

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



시간소인 아이콘 마지막 업데이트 날짜: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_oidc_introspection_endpoint
파일 이름: twlp_oidc_introspection_endpoint.html