Token de acesso pessoal
Tokens de acesso pessoal (PATs) fornecem uma maneira segura para os usuários concederem tokens de acesso sem usar suas credenciais e login interativo. Isso é útil para CI/CD, scripts ou aplicativos que precisam acessar recursos programaticamente.
Gerenciando tokens de acesso pessoal
Usando o Console
Você pode gerenciar tokens de acesso pessoal na página de Detalhes do Usuário do Console. No cartão "Autenticação (Authentication)", você pode ver a lista de tokens de acesso pessoal e criar novos.
Usando a Management API
Após configurar a Management API, você pode usar os endpoints da API para criar, listar e excluir tokens de acesso pessoal.
Usar PATs para conceder tokens de acesso
Após criar um PAT, você pode usá-lo para conceder tokens de acesso ao seu aplicativo usando o endpoint de troca de token.
Solicitação
O aplicativo faz uma solicitação de troca de token para o endpoint de token do locatário com um tipo de concessão especial usando o método HTTP POST. Os seguintes parâmetros são incluídos no corpo da entidade da solicitação HTTP usando o formato application/x-www-form-urlencoded
.
client_id
: OBRIGATÓRIO. O ID do cliente do aplicativo.grant_type
: OBRIGATÓRIO. O valor deste parâmetro deve serurn:ietf:params:oauth:grant-type:token-exchange
, indicando que uma troca de token está sendo realizada.resource
: OPCIONAL. O indicador de recurso, o mesmo que outras solicitações de token.scope
: OPCIONAL. Os escopos solicitados, o mesmo que outras solicitações de token.subject_token
: OBRIGATÓRIO. O PAT do usuário.subject_token_type
: OBRIGATÓRIO. O tipo do token de segurança fornecido no parâmetrosubject_token
. O valor deste parâmetro deve serurn:logto:token-type:personal_access_token
.
Resposta
Se a solicitação de troca de token for bem-sucedida, o endpoint de token do locatário retorna um token de acesso que representa a identidade do usuário. A resposta inclui os seguintes parâmetros no corpo da entidade da resposta HTTP usando o formato application/json
.
access_token
: OBRIGATÓRIO. O token de acesso do usuário, que é o mesmo que outras solicitações de token, comoauthorization_code
ourefresh_token
.issued_token_type
: OBRIGATÓRIO. O tipo do token emitido. O valor deste parâmetro deve serurn:ietf:params:oauth:token-type:access_token
.token_type
: OBRIGATÓRIO. O tipo do token. O valor deste parâmetro deve serBearer
.expires_in
: OBRIGATÓRIO. O tempo de vida em segundos do token de acesso.scope
: OPCIONAL. Os escopos do token de acesso.
Exemplo de troca de token
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"
}
O exemplo de payload do token de acesso:
{
"jti": "iFtbZBeh2M1cTTBuKbHk4",
"sub": "123",
"iss": "https://tenant.logto.app/oidc",
"exp": 1672531200,
"iat": 1672527600,
"scope": "profile",
"client_id": "client-id"
}