Gera um token de acesso para um aplicativo em uma instância IDaaS especificada com base nas informações de credenciais.
Descrição da operação
Os seguintes métodos são suportados: Authorization Code, Device Flow, Refresh Token, Client Credentials e Password.
1. Authorization Code
Cenário: Este é o fluxo de código de autorização padrão do OAuth 2.0, adequado para aplicativos web com interação de frontend. Exemplo de chamada:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code={authorization_code}
&redirect_uri={redirect_uri}
&client_id={client_id}
&client_secret={client_secret}
Parâmetros:
● code: O código de autorização obtido no endpoint de autorização.
● redirect_uri: Deve ser o mesmo redirect_uri usado para obter o código de autorização.
1.1 Authorization Code para clientes públicos
Cenário: Este cenário é adequado para aplicativos que não podem armazenar um segredo com segurança, como aplicativos de página única (SPAs) ou aplicativos nativos. Neste fluxo, um client_secret não é necessário, mas você deve usar o mecanismo Proof Key for Code Exchange (PKCE). Exemplo de chamada:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code={authorization_code}
&redirect_uri={redirect_uri}
&client_id={client_id}
&code_verifier={code_verifier}
Parâmetros:
● code_verifier: O verificador de código para o mecanismo PKCE. O cliente o gera ao iniciar uma solicitação de autorização e o usa para derivar o code_challenge. Ao trocar por um token, você deve enviar este valor. Ele deve ser idêntico ao valor usado para gerar o code_challenge.
Exemplo em Java para gerar um code_verifier e code_challenge:
String codeVerifier = Base64.getUrlEncoder().withoutPadding().encodeToString(new SecureRandom().generateSeed(43));
String codeChallenge = Base64.getUrlEncoder().withoutPadding().encodeToString(java.security.MessageDigest.getInstance("SHA-256").digest(codeVerifier.getBytes()));
2. Device Flow
Cenário: Este cenário é adequado para dispositivos com entrada restrita, como TVs e dispositivos IoT. Exemplo de chamada:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:device_code
&device_code={device_code}
&client_id={client_id}
&client_secret={client_secret}
Para obter o código do dispositivo, primeiro chame /oauth2/device/code para recuperar o device_code e o user_code.
2.1 Device Flow para clientes públicos
Cenário: Este cenário é usado quando o logon interativo não é conveniente e o cliente é um cliente público. Exemplo de chamada:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:device_code
&device_code={device_code}
&client_id={client_id}
3. Refresh Token
Cenário: Este cenário usa um refresh_token para obter um novo access_token. Exemplo de chamada:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token
&refresh_token={refresh_token}
&client_id={client_id}
&client_secret={client_secret}
4. Client Credentials
Cenário: Este cenário é para autenticação de servidor para servidor sem o envolvimento do usuário. Exemplo de chamada:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id={client_id}
&client_secret={client_secret}
&scope={scope}
5. Password
Cenário: Este cenário usa a autenticação tradicional de nome de usuário e senha. Use este método com cautela. Exemplo de chamada:
POST /v2/{instanceId}/{applicationId}/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=password
&username={username}
&password={password}
&client_id={client_id}
&scope={scope}
Experimente agora
Testar
Autorização RAM
Sintaxe da solicitação
POST /v2/{instanceId}/{applicationId}/oauth2/token HTTP/1.1
Parâmetros de caminho
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
| instanceId |
string |
Sim |
O ID da instância. |
idaas_ue2jvisn35ea5lmthk267xxxxx |
| applicationId |
string |
Sim |
O ID do aplicativo. |
app_mkv7rgt4d7i4u7zqtzev2mxxxx |
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
Exemplo |
| client_id |
string |
Não |
O ID do cliente. |
app_mkv7rgt4d7i4u7zqtzev2mxxxx |
| client_secret |
string |
Não |
O segredo do cliente. Este parâmetro é obrigatório quando o |
CSEHDcHcrUKHw1CuxkJEHPveWRXBGqVqRsxxxx |
| grant_type |
string |
Sim |
O tipo de concessão de autorização. Os seguintes tipos são suportados:
|
client_credentials |
| code |
string |
Não |
O código de autorização. Este parâmetro é obrigatório quando o |
xxxx |
| username |
string |
Não |
O nome de usuário. Este parâmetro é obrigatório para o tipo de concessão de senha. |
uesrname_001 |
| password |
string |
Não |
A senha. Este parâmetro é obrigatório para o modo de senha. |
xxxxxx |
| device_code |
string |
Não |
O código do dispositivo. Este parâmetro é obrigatório quando o |
xxxx |
| redirect_uri |
string |
Não |
O URI de redirecionamento. Este parâmetro é obrigatório para o tipo de concessão de código de autorização. Ele deve corresponder ao URI de redirecionamento na solicitação para obter o código de autorização. |
xxx |
| refresh_token |
string |
Não |
O token de atualização. Este parâmetro é obrigatório quando o |
ATxxx |
| code_verifier |
string |
Não |
O verificador de código. Este parâmetro é usado no tipo de concessão de código de autorização quando o PKCE está ativado. |
xxx |
| exclusive_tag |
string |
Não |
A tag obsoleta. |
ATxxx |
| scope |
string |
Não |
O escopo. Este parâmetro é opcional. Vários valores são suportados. Separe vários valores com espaços. Valores válidos:
|
xxxx |
Elementos de resposta
|
Elemento |
Tipo |
Descrição |
Exemplo |
|
object |
A resposta. |
||
| token_type |
string |
O tipo de token. Valores válidos: Basic - Tipo básico. Bearer - Tipo portador. Valores válidos:
|
Bearer |
| access_token |
string |
O token de acesso. |
ATxxx |
| refresh_token |
string |
O token de atualização. |
RTxxx |
| expires_in |
integer |
O período de validade do token em segundos. |
1200 |
| expires_at |
integer |
O tempo de expiração. O valor é um timestamp UNIX em segundos. |
1653288641 |
| id_token |
string |
O token de ID. |
xxxxx |
Exemplos
Resposta de sucesso
JSON formato
{
"token_type": "Bearer",
"access_token": "ATxxx",
"refresh_token": "RTxxx",
"expires_in": 1200,
"expires_at": 1653288641,
"id_token": "xxxxx"
}
Códigos de erro
Consulte Códigos de Erro para uma lista completa.
Notas de versão
Consulte Notas de Versão para uma lista completa.