토큰

사용자가 정상적으로 인증되면 애플리케이션은 App ID에서 토큰을 받습니다. 이 서비스는 액세스, 신원, 새로 고침 토큰이라는 세 가지 주요 유형의 토큰을 사용하여 인증 프로세스를 완료합니다.

액세스 토큰

액세스 토큰은 App ID(으)로 설정된 권한 필터에 의해 보호되는 백엔드 리소스와의 통신을 사용하고 권한을 표시합니다. 토큰은 JOSE(JavaScript Object Signing and Encryption) 스펙을 준수합니다. 토큰은 RS256 알고리즘을 사용하는 JSON 웹 키로 서명된 JSON 웹 토큰으로 형식이 지정됩니다.

토큰 예제:

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "exp": 1551903163,
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "amr": [
   "cloud_directory"
   ],
   "iat": 1551899553,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "scope": "openid appid_default appid_readprofile appid_readuserattr appid_writeuserattr appid_authenticated"
}

ID 토큰

ID 토큰은 인증을 나타내며 사용자에 대한 정보를 포함합니다. 이름, 이메일, 성 및 위치에 대한 정보를 제공합니다. 토큰은 사용자의 이미지에 대한 URL을 리턴할 수도 있습니다. 토큰은 RS256 알고리즘을 사용하는 JSON 웹 키로 서명된 JSON 웹 토큰으로 형식이 지정됩니다.

토큰 예제:

Header:
{
   "alg": "RS256",
   "typ": "JWT",
   "kid": "appId-39a37f57-a227-4bfe-a044-93b6e6050a61-2018-08-02T11:57:43.401",
   "ver": 4
}
Payload:
{
   "iss": "https://us-south.appid.cloud.ibm.com/oauth/v4/39a37f57-a227-4bfe-a044-93b6e6050a61",
   "aud": [
   "968c2306-9aef-4109-bc06-4f5ed6axi24a"
   ],
   "exp": 1551903163,
   "tenant": "39a37f57-a227-4bfe-a044-93b6e6050a61",
   "iat": 1551899553,
   "email": "appid155@mailinator.com",
   "name": "appid155@mailinator.com",
   "sub": "2b96cc04-eca5-4122-a8de-6e07d14c13a5",
   "email_verified": true,
   "identities": [
   {
      "provider": "cloud_directory",
      "id": "118c0278-3526-4954-876b-cf70eb88efa2"
   }
   ],
   "amr": [
   "cloud_directory"
   ]
}

ID 토큰에는 부분적인 사용자 정보만 포함됩니다. ID 제공자에서 제공되는 모든 정보를 확인하기 위해 /userinfo 엔드포인트를 사용할 수 있습니다.

새로 고치기 토큰

App ID 는 OIDC에 정의된 대로 재인증 없이 새로운 액세스 및 신원 토큰을 획득할 수 있는 기능을 지원합니다. 새로 고치기 토큰은 사용자가 사인인하기 위해 어떤 조치(예: 인증 정보 제공)도 수행할 필요가 없도록 액세스 토큰을 갱신하기 위해 사용할 수 있습니다. 액세스 토큰과 마찬가지로 새로 고치기 토큰은 App ID이(가) 권한 부여 여부를 판별할 수 있는 데이터를 포함합니다. 하지만 이 토큰은 불투명합니다.

새로 고치기 토큰은 일반 액세스 토큰보다 수명이 길도록 구성됩니다. 액세스 토큰이 만기되면 새로 고치기 토큰은 계속해서 유효하며 액세스 토큰을 갱신하는 데 사용될 수 있습니다. App ID의 새로 고치기 토큰은 최근 1 - 90일로 구성될 수 있습니다. 새로 고치기 토큰을 완전히 활용하려면 전체 수명 기간 동안 또는 해당 토큰이 갱신될 때까지 토큰이 지속되도록 하십시오. 새로 고치기 토큰만 사용해서는 사용자가 리소스에 직접 액세스할 수 없으므로 액세스 토큰보다 더 오래 지속되더라도 안전합니다. 우수 사례의 경우 새로 고치기 토큰을 수신한 클라이언트에서 해당 토큰을 안전하게 저장한 후 해당 토큰을 발행한 권한 서버로만 전송해야 합니다.

편의상 App ID은(는) 액세스 토큰이 갱신될 때 새로 고치기 토큰 및 해당 만기 날짜도 갱신합니다. 이를 통해 현재 새로 고치기 토큰이 만료되기 이전에 활성 상태인 사용자가 로그인 상태를 유지할 수 있습니다. 또는, 새로 고치기 토큰을 사용하면서 사용자가 주기적으로 로그인하도록 강제 실행하려는 경우 앱은 사용자가 해당 인증 정보를 입력하여 로그인할 때 리턴된 새로 고치기 토큰만 사용할 수 있습니다. 그러나 OAuth 2.0 사양에 설명된 대로 항상 App ID 에서 받은 최신 새로 고침 토큰을 사용하는 것이 좋습니다.

이러한 토큰은 로그인 프로세스를 간소화할 수 있지만 앱은 해당 토큰을 사용하지 않아야 합니다. 토큰 새로 고치기가 손상되었다고 판단되는 경우와 같이 언제든지 취소할 수 있습니다. 필요한 경우, 새로 고치기 토큰을 취소하는 두 가지 방법을 사용할 수 있습니다. 새로 고침 토큰이 있는 경우, 토큰을 취소할 수 있습니다 RFC7009. 또는 사용자 ID가 있는 경우 관리 API를 사용하여 새로 고침 토큰을 해지할 수 있습니다. 관리 API 액세스에 대한 자세한 내용은 서비스 액세스 관리하기를 참조하세요.

새로 고치기 토큰 관련 작업을 수행하는 예제 및 해당 예제를 사용하여 기억하기 기능을 구현하는 방법은 시작하기 샘플을 참조하십시오.

토큰은 어디에서 제공됩니까?

토큰은 App ID OAuth 서버를 통해 발급되며 JSON 웹 토큰(JWT) 으로 형식이 지정됩니다. 토큰은 RS256 알고리즘을 사용하여 JSON 웹 키(JWK) 로 서명되었습니다.

토큰에 포함된 정보는 어떻게 처리됩니까?

액세스 토큰에는 표준 JWT 청구 세트 및 App ID 특정 청구 세트(예: 테넌트 ID)가 포함되어 있습니다. 식별 토큰은 사용자 특정 정보를 포함합니다. 토큰 내의 정보는 사용자 프로파일의 일부인 청구로 저장됩니다.

토큰을 받는 방법은 무엇입니까?

토큰은 정상적인 인증 후 앱에서 수신합니다. 앱이 토큰을 사용하여 사용자 권한 부여 및 인증에 대한 정보를 검색할 수 있습니다. 액세스 토큰은 리소스에 대한 요청을 전송하여 보호된 리소스에 대한 액세스 권한을 받기 위해 사용할 수 있습니다. 토큰을 추출하려면 앱에서 헤더를 구문 분석해야 합니다.

요청 예제:

GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer  mF_9.B5f-4.1JqM mF_9.B5f-4.1JqM

토큰을 구성하는 방법은 무엇입니까?

사용자 정의 청구 맵핑을 사용하여 토큰을 사용자 정의할 수 있습니다. 자세한 정보는 토큰 사용자 정의를 참조하십시오.