Este tópico descreve como seu aplicativo web pode usar o fluxo de código de autorização OAuth 2.0 para acessar as APIs do Alibaba Cloud em nome de um usuário.
Pré-requisitos
-
Antes que seu aplicativo web possa acessar as APIs do Alibaba Cloud em nome de um usuário, crie um aplicativo. Forneça informações essenciais, como nome, escopos OAuth e URIs de redirecionamento. Para mais informações, consulte Create an application. Após criar o aplicativo, localize o ID do cliente na lista de aplicativos da página Enterprise Applications.
NotaDepois de criado, o aplicativo pode agir em nome dos usuários da sua conta do Alibaba Cloud. Para atuar em nome de usuários de outras contas do Alibaba Cloud, obtenha autorização dessas contas.
Crie um segredo do cliente. Para mais informações, consulte Create a client secret. O segredo do cliente (
client_secret) é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene-o com segurança.
Visão geral do fluxo de autorização

Um usuário faz login no aplicativo web por meio de um navegador.
-
O aplicativo web redireciona o usuário para o endpoint de autorização OAuth 2.0 do Alibaba Cloud.
NotaSe o usuário não estiver conectado ao Alibaba Cloud, ele será redirecionado primeiro para a página de login do Alibaba Cloud.
O usuário faz login e autoriza o aplicativo na tela de consentimento.
O service OAuth 2.0 do Alibaba Cloud redireciona o usuário de volta ao aplicativo web com um código de autorização.
-
O aplicativo web troca o código de autorização por um token de acesso.
Para obter um token de acesso, consulte Get an access token.
Para renovar um token de acesso, consulte Refresh an access token.
Para revogar um token de atualização, consulte Revoke a refresh token.
O service OAuth 2.0 do Alibaba Cloud retorna um token de acesso (
access_token) para o aplicativo web.-
O aplicativo web usa o token de acesso para chamar as APIs do Alibaba Cloud em nome do usuário.
NotaComo o token de acesso representa o usuário, o aplicativo consegue acessar os recursos desse usuário.
Obter um token de acesso
Etapa 1: Solicitar um código de autorização
Endpoint de autorização: https://signin.alibabacloud.com/oauth2/v1/auth.
Parâmetros da solicitação:
|
Parâmetro |
Obrigatório |
Descrição |
|
client_id |
Sim |
O ID do cliente do seu aplicativo. |
|
redirect_uri |
Sim |
Uma das URIs de redirecionamento especificadas durante a criação do aplicativo. |
|
response_type |
Sim |
O tipo de resposta. De acordo com o protocolo OAuth 2.0, este valor deve ser |
|
scope |
Não |
Uma lista de escopos OAuth separados por espaços. Se este parâmetro for omitido, a solicitação usará por padrão todos os escopos configurados para o aplicativo. |
|
access_type |
Não |
O tipo de acesso solicitado. Valores válidos:
Valor padrão: online. |
|
state |
Não |
Um aplicativo pode usar o parâmetro state para diversas finalidades, como preservar o estado ou atuar como um nonce para mitigar riscos de CSRF. Se você definir o parâmetro state com qualquer string, o service OAuth 2.0 do Alibaba Cloud incluirá o parâmetro state e seu valor na resposta. |
|
prompt |
Não |
Especifica se o servidor deve solicitar autorização ao usuário. Incluir este parâmetro força o usuário a reautorizar o aplicativo, mesmo que já tenha concedido autorização anteriormente. Se omitido, a solicitação de autorização ocorre apenas no primeiro uso. Valor válido: |
Exemplo de solicitação:
https://signin.alibabacloud.com/oauth2/v1/auth?
client_id=123****&
redirect_uri=https://example.com/authcallback/&
response_type=code&
scope=openid /acs/ccc&
access_type=offline&
state=123456****
Parâmetros da resposta:
|
Parâmetro |
Descrição |
|
code |
O código de autorização. |
|
state |
O valor do parâmetro state na solicitação. |
Exemplo de resposta:
GET HTTP/1.1 302 Found
Location: https://example.com/authcallback/?code=ABAFDGDFXYZW888&state=123456****
Etapa 2: Trocar o código por um token de acesso
Endpoint de token: https://oauth.alibabacloud.com/v1/token.
Parâmetros da solicitação:
|
Parâmetro |
Obrigatório |
Descrição |
|
code |
Sim |
O código de autorização. O código recebido na Etapa 1. |
|
client_id |
Sim |
O ID do cliente do seu aplicativo. |
|
redirect_uri |
Sim |
A URI de redirecionamento. Esta URI deve corresponder ao valor especificado na solicitação de autorização da Etapa 1. |
|
grant_type |
Sim |
De acordo com o protocolo OAuth 2.0, o valor deve ser authorization_code. |
|
client_secret |
Sim |
O segredo do cliente do seu aplicativo. |
Exemplo de solicitação:
POST /v1/token HTTP/1.1
Host: oauth.alibabacloud.com
Content-Type: application/x-www-form-urlencoded
code=ABAFDGDFXYZW888&
client_id=123****&
client_secret=`your_client_secret`&
redirect_uri=https://example.com/authcallback/&
grant_type=authorization_code
Parâmetros da resposta:
|
Parâmetro |
Descrição |
|
access_token |
Um token que concede acesso às APIs do Alibaba Cloud em nome do usuário. Seu aplicativo não deve analisar este token; passe-o exatamente como recebido nas chamadas de API. O token de acesso representa a identidade de um usuário, e os aplicativos o usam para acessar as APIs do Alibaba Cloud. Os aplicativos não precisam interpretar o significado do token e podem usá-lo diretamente. |
|
expires_in |
A validade do token de acesso, em segundos. |
|
token_type |
O tipo do token de acesso. O valor é sempre Bearer. |
|
id_token |
O token de ID. Um JWT (JSON Web Token) que contém informações de identidade do usuário. Este token é retornado apenas se o parâmetro |
|
refresh_token |
O token de atualização. Este token é retornado apenas se o parâmetro |
|
scope |
A lista de escopos concedidos para o token de acesso, separados por espaços. Se o aplicativo exigir um escopo de autorização diferente de Caso seu aplicativo não tenha recebido o scope especificado, solicite autorização novamente. Para isso, requisite um código de autorização conforme descrito na Etapa 1 a partir de |
Exemplo de resposta:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600",
"refresh_token": "Ccx63VVeTn2dxV7ovXXfLtAqLLERA****",
"id_token": "eyJhbGciOiJIUzI1****",
"scope": "openid /acs/ccc"
}
Renovar um token de acesso
Endpoint de token: https://oauth.alibabacloud.com/v1/token.
Parâmetros da solicitação:
|
Parâmetro |
Obrigatório |
Descrição |
|
refresh_token |
Sim |
O token de atualização recebido na troca inicial de tokens. |
|
client_id |
Sim |
O ID do cliente do seu aplicativo. |
|
grant_type |
Sim |
De acordo com o protocolo OAuth 2.0, o valor deve ser refresh_token. |
|
client_secret |
Não |
O segredo do cliente do seu aplicativo. |
Exemplo de solicitação:
POST /v1/token HTTP/1.1
Host: oauth.alibabacloud.com
Content-Type: application/x-www-form-urlencoded
refresh_token=Ccx63VVeTn2dxV7ovXXfLtAqLLERAH1Bc&
client_id=123****&
client_secret=`your_client_secret`&
grant_type=refresh_token
Parâmetros da resposta:
|
Parâmetro |
Descrição |
|
access_token |
Um novo token de acesso. |
|
expires_in |
A validade do token de acesso, em segundos. |
|
token_type |
O tipo do token de acesso. O valor é Bearer. |
Exemplo de resposta:
{
"access_token": "eyJraWQiOiJrMTIzNCIsImVu****",
"token_type": "Bearer",
"expires_in": "3600"
}
Revogar um token de atualização
Após seu aplicativo web obter um token de atualização, revogue o token quando o usuário sair ou desconectar a conta do seu aplicativo.
Endpoint de revogação: https://oauth.alibabacloud.com/v1/revoke.
Parâmetros da solicitação:
|
Parâmetro |
Obrigatório |
Descrição |
|
token |
Sim |
O token de atualização a ser revogado. |
|
client_id |
Sim |
O ID do cliente do seu aplicativo. |
|
client_secret |
Não |
O segredo do cliente do seu aplicativo. |