사용자 토큰 API
GitLab v19.5Offering: GitLab Self-Managed, GitLab Dedicated
요약
이 API로 개인 액세스 토큰과 가장 토큰을 다룹니다. 지정한 사용자의 개인 액세스 토큰을 생성합니다. 토큰 값은 응답에 포함되지만, 이후에는 다시 조회할 수 없습니다. 본인 계정의 개인 액세스 토큰을 생성합니다. 세분화된 범위로 생성한 토큰의 경우 응답에 granular_scopes 속성도 포함됩니다.
이 API로 개인 액세스 토큰과 가장 토큰을 다룹니다. 자세한 내용은 개인 액세스 토큰과 가장 토큰을 참고합니다.
사용자의 개인 액세스 토큰 생성#
히스토리
- 응답의
last_used_ips가 GitLab 19.4에서 도입되었습니다.
지정한 사용자의 개인 액세스 토큰을 생성합니다.
토큰 값은 응답에 포함되지만, 이후에는 다시 조회할 수 없습니다.
사전 요구 사항:
- 인스턴스의 관리자 액세스 권한이 있어야 합니다.
POST /users/:user_id/personal_access_tokens
지원하는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
user_id |
integer | yes | 사용자 계정의 ID 입니다. |
name |
string | yes | 개인 액세스 토큰의 이름입니다. |
description |
string | no | 개인 액세스 토큰의 설명입니다. 최대 255자입니다. |
expires_at |
date | no | ISO 형식(YYYY-MM-DD)으로 지정한 액세스 토큰의 만료일입니다. 지정하지 않고 토큰에 만료일이 필요하면 최대 허용 수명 제한이 기본값으로 적용됩니다. 필요하지 않으면 토큰에 만료일이 없습니다. |
scopes |
array | yes | 승인된 스코프의 배열입니다. 사용 가능한 값은 액세스 토큰 스코프를 참고합니다. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data "name=mytoken" --data "expires_at=2017-04-04" \
--data "scopes[]=api" \
--url "https://gitlab.example.com/api/v4/users/42/personal_access_tokens"
응답 예시:
{
"id": 3,
"name": "mytoken",
"revoked": false,
"created_at": "2020-10-14T11:58:53.526Z",
"description": "Test Token description",
"scopes": [
"api"
],
"user_id": 42,
"last_used_ips": [],
"active": true,
"expires_at": "2020-12-31",
"token": "<your_new_access_token>"
}
개인 액세스 토큰 생성#
본인 계정의 개인 액세스 토큰을 생성합니다. 보안을 위해 이 토큰은 다음과 같습니다.
k8s_proxy및self_rotate스코프로 제한됩니다.
토큰 값은 응답에 포함되지만, 이후에는 다시 조회할 수 없습니다.
사전 요구 사항:
- 본인 인증이 되어 있어야 합니다.
POST /user/personal_access_tokens
지원하는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
name |
string | yes | 개인 액세스 토큰의 이름입니다. |
description |
string | no | 개인 액세스 토큰의 설명입니다. 최대 255자입니다. |
scopes |
array | yes | 승인된 스코프의 배열입니다. k8s_proxy와 self_rotate만 허용합니다. |
expires_at |
date | no | ISO 형식(YYYY-MM-DD)으로 지정한 액세스 토큰의 만료일입니다. 지정하지 않고 토큰에 만료일이 필요하면 최대 허용 수명 제한이 기본값으로 적용됩니다. 필요하지 않으면 토큰에 만료일이 없습니다. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data "name=mytoken" --data "scopes[]=k8s_proxy" \
--url "https://gitlab.example.com/api/v4/user/personal_access_tokens"
응답 예시:
{
"id": 3,
"name": "mytoken",
"revoked": false,
"created_at": "2020-10-14T11:58:53.526Z",
"description": "Test Token description",
"scopes": [
"k8s_proxy"
],
"user_id": 42,
"last_used_ips": [],
"active": true,
"expires_at": "2020-10-15",
"token": "<your_new_access_token>"
}
세분화된 범위로 생성한 토큰의 경우 응답에 granular_scopes
속성도 포함됩니다. 자세한 내용은
모든 개인 액세스 토큰 나열을 참고합니다.
사용자의 모든 가장 토큰 조회#
히스토리
- 응답의
last_used_ips가 GitLab 19.2에서expose_last_used_ips_for_access_tokens라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - 응답의
last_used_ips가 GitLab 19.4에서 일반 제공되었습니다. 기능 플래그expose_last_used_ips_for_access_tokens는 제거되었습니다. - 응답의
granular_scopes가 GitLab 19.5에서 도입되었습니다.
지정한 사용자의 모든 가장 토큰을 조회합니다.
page 및 per_page 페이지네이션 파라미터로 결과를 필터링합니다.
사전 요구 사항:
- 인스턴스의 관리자 액세스 권한이 있어야 합니다.
GET /users/:user_id/impersonation_tokens
지원하는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
user_id |
integer | yes | 사용자 계정의 ID |
state |
string | no | 상태를 기준으로 토큰을 필터링합니다. 사용 가능한 값: all, active, inactive. |
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/42/impersonation_tokens"
응답 예시:
[
{
"active" : true,
"user_id" : 2,
"scopes" : [
"api"
],
"revoked" : false,
"name" : "mytoken",
"description": "Test Token description",
"id" : 2,
"created_at" : "2017-03-17T17:18:09.283Z",
"impersonation" : true,
"expires_at" : "2017-04-04",
"last_used_at": "2017-03-24T09:44:21.722Z",
"last_used_ips": ["192.0.2.10"]
},
{
"active" : false,
"user_id" : 2,
"scopes" : [
"read_user"
],
"revoked" : true,
"name" : "mytoken2",
"description": "Test Token description",
"created_at" : "2017-03-17T17:19:28.697Z",
"id" : 3,
"impersonation" : true,
"expires_at" : "2017-04-14",
"last_used_at": "2017-03-24T09:44:21.722Z",
"last_used_ips": ["192.0.2.11"]
}
]
세분화된 범위로 생성한 가장 토큰의 경우 응답에 granular_scopes
속성도 포함됩니다. 자세한 내용은
모든 개인 액세스 토큰 나열을 참고합니다.
사용자의 가장 토큰 조회#
히스토리
- 응답의
last_used_ips가 GitLab 19.2에서expose_last_used_ips_for_access_tokens라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - 응답의
last_used_ips가 GitLab 19.4에서 일반 제공되었습니다. 기능 플래그expose_last_used_ips_for_access_tokens는 제거되었습니다. - 응답의
granular_scopes가 GitLab 19.5에서 도입되었습니다.
지정한 사용자의 가장 토큰 하나를 조회합니다.
사전 요구 사항:
- 인스턴스의 관리자 액세스 권한이 있어야 합니다.
GET /users/:user_id/impersonation_tokens/:impersonation_token_id
지원하는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
user_id |
integer | yes | 사용자 계정의 ID |
impersonation_token_id |
integer | yes | 가장 토큰의 ID |
요청 예시:
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/42/impersonation_tokens/2"
응답 예시:
{
"active" : true,
"user_id" : 2,
"scopes" : [
"api"
],
"revoked" : false,
"name" : "mytoken",
"description": "Test Token description",
"id" : 2,
"created_at" : "2017-03-17T17:18:09.283Z",
"impersonation" : true,
"expires_at" : "2017-04-04",
"last_used_ips": ["192.0.2.10"]
}
세분화된 범위로 생성한 가장 토큰의 경우 응답에 granular_scopes
속성도 포함됩니다. 자세한 내용은
모든 개인 액세스 토큰 나열을 참고합니다.
가장 토큰 생성#
히스토리
- 응답의
last_used_ips가 GitLab 19.2에서expose_last_used_ips_for_access_tokens라는 이름의 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화되어 있습니다. - 응답의
last_used_ips가 GitLab 19.4에서 일반 제공되었습니다. 기능 플래그expose_last_used_ips_for_access_tokens는 제거되었습니다. - 응답의
granular_scopes가 GitLab 19.5에서 도입되었습니다.
지정한 사용자의 가장 토큰을 생성합니다. 이 토큰은 해당 사용자를 대신해 동작하며, API 호출은 물론 Git 읽기·쓰기 작업도 수행할 수 있습니다. 이 토큰은 해당 사용자의 프로필 설정 페이지에 표시되지 않습니다.
토큰 값은 응답에 포함되지만, 이후에는 다시 조회할 수 없습니다.
사전 요구 사항:
- 인스턴스의 관리자 액세스 권한이 있어야 합니다.
POST /users/:user_id/impersonation_tokens
지원하는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
user_id |
integer | yes | 사용자 계정의 ID |
name |
string | yes | 가장 토큰의 이름 |
description |
string | no | 가장 토큰의 설명 |
expires_at |
date | yes | ISO 형식(YYYY-MM-DD)으로 지정한 가장 토큰의 만료일입니다. 지정하지 않으면 최대 허용 수명 제한으로 설정됩니다. |
scopes |
array | yes | 승인된 스코프의 배열입니다. 사용 가능한 값은 액세스 토큰 스코프를 참고합니다. |
요청 예시:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data "name=mytoken" --data "expires_at=2017-04-04" \
--data "scopes[]=api" \
--url "https://gitlab.example.com/api/v4/users/42/impersonation_tokens"
응답 예시:
{
"id" : 2,
"revoked" : false,
"user_id" : 2,
"scopes" : [
"api"
],
"token" : "<impersonation_token>",
"active" : true,
"impersonation" : true,
"name" : "mytoken",
"description": "Test Token description",
"created_at" : "2017-03-17T17:18:09.283Z",
"expires_at" : "2017-04-04",
"last_used_ips": []
}
세분화된 범위로 생성한 가장 토큰의 경우 응답에 granular_scopes
속성도 포함됩니다. 자세한 내용은
모든 개인 액세스 토큰 나열을 참고합니다.
가장 토큰 폐기#
지정한 사용자의 가장 토큰을 폐기합니다.
사전 요구 사항:
- 인스턴스의 관리자 액세스 권한이 있어야 합니다.
DELETE /users/:user_id/impersonation_tokens/:impersonation_token_id
지원하는 속성:
| 속성 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
user_id |
integer | yes | 사용자 계정의 ID |
impersonation_token_id |
integer | yes | 가장 토큰의 ID |
요청 예시:
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/42/impersonation_tokens/1"