개인 액세스 토큰 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

개인 액세스 토큰에 대해 더 읽어볼 수 있습니다.

개인 액세스 토큰 디렉터리

  • created_after, created_before, last_used_after, last_used_before, revoked, searchstate 필터는 GitLab 15.5에서 소개되었습니다.

인증된 사용자가 액세스 할 수있는 모든 개인 액세스 토큰을 가져옵니다. 기본적으로 다음을 반환합니다:

  • 현재 사용자가 생성 한 개인 액세스 토큰 (관리자가 아님).
  • 관리자에게는 모든 개인 액세스 토큰이 반환됩니다.

관리자는:

  • user_id 매개변수를 사용하여 사용자별로 필터링 할 수 있습니다.
  • 기타 필터를 모든 개인 액세스 토큰에 사용할 수 있습니다 (GitLab 15.5 이상).

비관리자는:

  • 자신을 제외한 모든 사용자에 대한 user_id 매개변수를 사용할 수 없으며, 그렇지 않으면 401 Unauthorized 응답을받습니다.
  • 자신의 개인 액세스 토큰 만 필터링 할 수 있습니다 (GitLab 15.5 및 이후).
GET /personal_access_tokens
GET /personal_access_tokens?created_after=2022-01-01T00:00:00
GET /personal_access_tokens?created_before=2022-01-01T00:00:00
GET /personal_access_tokens?last_used_after=2022-01-01T00:00:00
GET /personal_access_tokens?last_used_before=2022-01-01T00:00:00
GET /personal_access_tokens?revoked=true
GET /personal_access_tokens?search=name
GET /personal_access_tokens?state=inactive
GET /personal_access_tokens?user_id=1

지원되는 속성:

속성 유형 필수 설명
created_after datetime (ISO 8601) 아니요 지정된 시간 이후에 생성된 PAT에 대한 결과를 제한합니다.
created_before datetime (ISO 8601) 아니요 지정된 시간 이전에 생성된 PAT에 대한 결과를 제한합니다.
last_used_after datetime (ISO 8601) 아니요 지정된 시간 이후에 사용된 PAT에 대한 결과를 제한합니다.
last_used_before datetime (ISO 8601) 아니요 지정된 시간 이전에 사용된 PAT에 대한 결과를 제한합니다.
revoked boolean 아니요 지정된 폐지 상태의 PAT에 대한 결과를 제한합니다. truefalse가 유효한 값입니다.
search string 아니요 검색 문자열을 포함하는 이름의 PAT에 대한 결과를 제한합니다.
state string 아니요 지정된 상태의 PAT에 대한 결과를 제한합니다. activeinactive가 유효한 값입니다.
user_id integer 또는 string 아니요 지정된 사용자가 소유 한 PAT에 대한 결과를 제한합니다.

예제 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens"

예제 응답:

[
    {
        "id": 4,
        "name": "Test Token",
        "revoked": false,
        "created_at": "2020-07-23T14:31:47.729Z",
        "scopes": [
            "api"
        ],
        "user_id": 24,
        "last_used_at": "2021-10-06T17:58:37.550Z",
        "active": true,
        "expires_at": null
    }
]

예제 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens?user_id=3"

예제 응답:

[
    {
        "id": 4,
        "name": "Test Token",
        "revoked": false,
        "created_at": "2020-07-23T14:31:47.729Z",
        "scopes": [
            "api"
        ],
        "user_id": 3,
        "last_used_at": "2021-10-06T17:58:37.550Z",
        "active": true,
        "expires_at": null
    }
]

예제 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens?revoked=true"

예제 응답:

[
    {
        "id": 41,
        "name": "Revoked Test Token",
        "revoked": true,
        "created_at": "2022-01-01T14:31:47.729Z",
        "scopes": [
            "api"
        ],
        "user_id": 8,
        "last_used_at": "2022-05-18T17:58:37.550Z",
        "active": false,
        "expires_at": null
    }
]

Merge 된 속성으로 필터링 할 수 있습니다:

GET /personal_access_tokens?revoked=true&created_before=2022-01-01

단일 개인 액세스 토큰 가져오기

개인 액세스 토큰의 ID를 사용하여 또는 API에 헤더로 전달하여 개인 액세스 토큰을 가져옵니다.

개인 액세스 토큰 ID 사용

ID로 개인 액세스 토큰을 가져옵니다. 사용자는 자체 토큰을 가져올 수 있습니다. 관리자는 모든 토큰을 가져올 수 있습니다.

GET /personal_access_tokens/:id
속성 유형 필수 설명
id integer/string 개인 액세스 토큰의 ID
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/<id>"

응답

  • 토큰에 대한 사용자의 액세스 권한이 없는 경우 401: Unauthorized.
  • 지정된 ID의 토큰이 존재하지 않는 경우 404: Not Found.
  • 사용자가 관리자이지만 지정된 ID의 토큰이 존재하지 않는 경우 404: Not Found.

요청 헤더 사용

헤더에 토큰을 전달하여 개인 액세스 토큰 및 해당 토큰에 대한 정보를 가져옵니다.

GET /personal_access_tokens/self
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/self"

예제 응답:

{
    "id": 4,
    "name": "Test Token",
    "revoked": false,
    "created_at": "2020-07-23T14:31:47.729Z",
    "scopes": [
        "api"
    ],
    "user_id": 3,
    "last_used_at": "2021-10-06T17:58:37.550Z",
    "active": true,
    "expires_at": null
}

개인 액세스 토큰 교체

개인 액세스 토큰을 교체합니다. 이전 토큰을 폐지하고 1 주일 후에 만료되는 새로운 토큰을 생성합니다.

다음 중 하나를 사용할 수 있습니다:

  • 개인 액세스 토큰 ID 사용.
  • GitLab 16.10 이상에서 API에 개인 액세스 토큰을 요청 헤더로 전달합니다.

개인 액세스 토큰 ID 사용

GitLab 16.6 이상에서 다른 만료 날짜를 설정하기 위해 expires_at 매개변수를 사용할 수 있습니다. 이 비기본 만료 날짜는 회전 날짜로부터 1년까지 설정할 수 있습니다.

POST /personal_access_tokens/:id/rotate
속성 유형 필수 설명
id 정수/문자열 개인 액세스 토큰 ID
expires_at 날짜 아니요 액세스 토큰의 ISO 형식 만료 날짜 (YYYY-MM-DD). GitLab 16.6에서 도입됨.
note
관리자가 아닌 사용자는 자신의 토큰을 회전할 수 있습니다. 관리자는 모든 사용자의 토큰을 회전할 수 있습니다.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/<personal_access_token_id>/rotate"

예시 응답:

{
    "id": 42,
    "name": "Rotated Token",
    "revoked": false,
    "created_at": "2023-08-01T15:00:00.000Z",
    "scopes": ["api"],
    "user_id": 1337,
    "last_used_at": null,
    "active": true,
    "expires_at": "2023-08-15",
    "token": "s3cr3t"
}

응답

  • 200: OK : 기존 토큰이 성공적으로 폐기되고 새 토큰이 성공적으로 생성된 경우.
  • 400: Bad Request : 회전에 실패한 경우.
  • 401: Unauthorized : 다음 중 하나인 경우:
    • 사용자가 지정된 ID의 토큰에 액세스 권한이 없는 경우.
    • 지정된 ID의 토큰이 존재하지 않는 경우.
  • 404: Not Found : 사용자가 관리자이지만 지정된 ID의 토큰이 없는 경우.

요청 헤더 사용

필요 사항:

  • api 범위.

expires_at 매개변수를 사용하여 다른 만료 날짜를 설정할 수 있습니다. 이 비기본 만료 날짜는 회전 날짜로부터 1년까지 설정할 수 있습니다.

POST /personal_access_tokens/self/rotate
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/self/rotate"

예시 응답:

{
    "id": 42,
    "name": "Rotated Token",
    "revoked": false,
    "created_at": "2023-08-01T15:00:00.000Z",
    "scopes": ["api"],
    "user_id": 1337,
    "last_used_at": null,
    "active": true,
    "expires_at": "2023-08-15",
    "token": "s3cr3t"
}

응답

  • 200: OK : 기존 토큰이 성공적으로 폐기되고 새 토큰이 성공적으로 생성된 경우.
  • 400: Bad Request : 회전에 실패한 경우.
  • 401: Unauthorized : 다음 중 하나인 경우:
    • 토큰이 존재하지 않는 경우.
    • 토큰이 만료된 경우.
    • 토큰이 폐지된 경우.
  • 403: Forbidden : 토큰이 자체 회전을 허용하지 않는 경우.
  • 405: Method Not Allowed : 토큰이 개인 액세스 토큰이 아닌 경우.

자동 재사용 탐지

각 회전된 토큰마다 이전에 폐기된 토큰을 참조합니다. 이 참조 체인은 토큰 패밀리를 정의합니다. 토큰 패밀리에서는 최신 토큰만 활성화되고 해당 패밀리의 다른 모든 토큰은 폐기됩니다.

토큰 패밀리에서 폐기된 토큰이 토큰 회전 엔드포인트의 인증 시도에 사용될 때, 그 시도는 실패하고 토큰 패밀리의 활성 토큰이 폐기됩니다. 이 메커니즘은 개인 액세스 토큰이 유출될 때 침해를 방지하는 데 도움이 됩니다.

자동 재사용 탐지는 토큰 회전 API 요청에 대해 활성화됩니다.

개인 액세스 토큰 폐기

개인 액세스 토큰을 다음 중 하나로 폐기합니다.

  • 개인 액세스 토큰의 ID를 사용하는 것.
  • API에 헤더로 전달하는 것.

개인 액세스 토큰 ID 사용

개인 액세스 토큰의 ID를 사용하여 개인 액세스 토큰을 폐기합니다.

DELETE /personal_access_tokens/:id
속성 유형 필수 설명
id 정수/문자열 개인 액세스 토큰 ID
note
관리자가 아닌 사용자는 자신의 토큰을 폐기할 수 있습니다. 관리자는 모든 사용자의 토큰을 폐기할 수 있습니다.
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/<personal_access_token_id>"

응답

  • 204: No Content : 성공적으로 폐기된 경우.
  • 400: Bad Request : 폐기에 실패한 경우.

요청 헤더 사용

  • GitLab 15.0에서 api 범위를 갖는 토큰에 대해 도입됨.
  • GitLab 15.4에서 모든 토큰을 사용할 수 있게 도입됨.

요청 헤더로 전달된 개인 액세스 토큰을 폐기합니다. 필요 사항:

  • GitLab 15.0부터 GitLab 15.3까지 api 범위.
  • GitLab 15.4부터는 모든 범위.
DELETE /personal_access_tokens/self
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/personal_access_tokens/self"

응답

  • 204: No Content : 성공적으로 폐기된 경우.
  • 400: Bad Request : 폐기에 실패한 경우.

개인 액세스 토큰 생성 (관리자 전용)

현재 인증된 사용자를 위해 개인 액세스 토큰을 생성하는 방법에 대한 정보는 사용자 API 설명서를 참조하십시오.

현재 인증된 사용자를 위해 범위가 제한된 개인 액세스 토큰 생성

Tier: Free, Premium, Ultimate Offering: Self-Managed, GitLab Dedicated

현재 인증된 사용자를 위해 개인 액세스 토큰을 생성하는 정보는 사용자 API 설명서를 참조하십시오.