개인 액세스 토큰
개인 액세스 토큰 (PATs)은 사용자가 자격 증명과 상호작용 로그인 없이 액세스 토큰을 부여할 수 있는 안전한 방법을 제공합니다. 이는 CI/CD, 스크립트 또는 리소스에 프로그래밍 방식으로 접근해야 하는 애플리케이션에 유용합니다.
개인 액세스 토큰 관리
콘솔 사용
콘솔 > 사용자 관리의 사용자 세부 정보 페이지에서 개인 액세스 토큰을 관리할 수 있습니다. "인증 (Authentication)" 카드에서 개인 액세스 토큰 목록을 보고 새로 생성할 수 있습니다.
Management API 사용
Management API를 설정한 후, API 엔드포인트를 사용하여 개인 액세스 토큰을 생성, 목록화 및 삭제할 수 있습니다.
PATs를 사용하여 액세스 토큰 부여
PAT를 생성한 후, 토큰 교환 엔드포인트를 사용하여 애플리케이션에 액세스 토큰을 부여할 수 있습니다.
요청
애플리케이션은 HTTP POST 메서드를 사용하여 특별한 grant type으로 테넌트의 토큰 엔드포인트에 토큰 교환 요청을 합니다. 다음 매개변수는 application/x-www-form-urlencoded
형식으로 HTTP 요청 엔티티 본문에 포함됩니다.
client_id
: 필수. 애플리케이션의 클라이언트 ID.grant_type
: 필수. 이 매개변수의 값은urn:ietf:params:oauth:grant-type:token-exchange
이어야 하며, 이는 토큰 교환이 수행되고 있음을 나타냅니다.resource
: 선택적. 다른 토큰 요청과 동일한 리소스 지표.scope
: 선택적. 다른 토큰 요청과 동일한 요청된 스코프.subject_token
: 필수. 사용자의 PAT.subject_token_type
: 필수.subject_token
매개변수에 제공된 보안 토큰의 유형. 이 매개변수의 값은urn:logto:token-type:personal_access_token
이어야 합니다.
응답
토큰 교환 요청이 성공하면, 테넌트의 토큰 엔드포인트는 사용자의 아이덴티티를 나타내는 액세스 토큰을 반환합니다. 응답은 application/json
형식으로 HTTP 응답 엔티티 본문에 다음 매개변수를 포함합니다.
access_token
: 필수. 사용자의 액세스 토큰으로,authorization_code
또는refresh_token
과 같은 다른 토큰 요청과 동일합니다.issued_token_type
: 필수. 발급된 토큰의 유형. 이 매개변수의 값은urn:ietf:params:oauth:token-type:access_token
이어야 합니다.token_type
: 필수. 토큰의 유형. 이 매개변수의 값은Bearer
이어야 합니다.expires_in
: 필수. 액세스 토큰의 수명 (초 단위).scope
: 선택적. 액세스 토큰의 스코프.
토큰 교환 예시
POST /oidc/token HTTP/1.1
Host: tenant.logto.app
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64(client-id:client-secret)>
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&scope=profile
&subject_token=pat_W51arOqe7nynW75nWhvYogyc
&subject_token_type=urn%3Alogto%3Atoken-type%3Apersonal_access_token
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token": "eyJhbGci...zg",
"issued_token_type": "urn:ietf:params:oauth:token-type:access_token",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "profile"
}
예시 액세스 토큰 페이로드:
{
"jti": "iFtbZBeh2M1cTTBuKbHk4",
"sub": "123",
"iss": "https://tenant.logto.app/oidc",
"exp": 1672531200,
"iat": 1672527600,
"scope": "profile",
"client_id": "client-id"
}
관련 리소스
개인 액세스 토큰, 기계 간 인증 (M2M), 및 API 키 정의와 실제 시나리오