개인 액세스 토큰 (Personal access token)
개인 액세스 토큰 (PAT, Personal access token)은 사용자가 자격 증명과 상호작용 로그인 없이 액세스 토큰 (Access token)을 안전하게 부여할 수 있는 방법을 제공합니다. 이는 CI/CD, 스크립트, 또는 리소스에 프로그래밍 방식으로 접근해야 하는 애플리케이션에 유용합니다.
개인 액세스 토큰 관리하기
콘솔 사용하기
콘솔 > 사용자 관리의 사용자 상세 페이지에서 개인 액세스 토큰을 관리할 수 있습니다. "인증 (Authentication)" 카드에서 개인 액세스 토큰 목록을 확인하고 새로 생성할 수 있습니다.
Management API 사용하기
Management API를 설정한 후, API 엔드포인트를 사용하여 개인 액세스 토큰을 생성, 조회, 삭제할 수 있습니다.
PAT로 액세스 토큰 부여하기
PAT를 생성한 후, 토큰 교환 엔드포인트를 사용하여 애플리케이션에 액세스 토큰을 부여할 수 있습니다.
요청(Request)
애플리케이션은 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
이어야 합니다.
응답(Response)
토큰 교환 요청이 성공하면, 테넌트의 토큰 엔드포인트는 사용자의 아이덴티티를 나타내는 액세스 토큰을 반환합니다. 응답은 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"
}
관련 리소스
개인 액세스 토큰이란 무엇인가요? 언제 개인 액세스 토큰을 사용해야 하나요?
개인 액세스 토큰, 기계 간 (Machine-to-Machine) 인증 (Authentication), 그리고 API 키의 정의 및 실제 사용 사례