Este tópico descreve como acessar o Drive and Photo Service (PDS) a partir de uma aplicação de servidor web usando OAuth 2.0.
Introdução ao OAuth 2.0
O OAuth 2.0 permite autorizar um serviço de terceiros a obter informações sobre seus recursos sem revelar a senha da sua conta.
O OAuth 2.0 oferece suporte aos seguintes métodos de autorização: Authorization Code, Implicit, Resource Owner Password Credentials e Client Credentials. O método Authorization Code proporciona o nível de segurança mais alto. Este tópico utiliza o método Authorization Code.
A figura a seguir ilustra o processo de autorização do OAuth 2.0 com o método Authorization Code.

Processo de acesso para uma aplicação de servidor web

Processo:
-
Login e autorização
Um usuário acessa a aplicação de servidor web. A aplicação redireciona a solicitação de acesso para o servidor de autenticação. O sistema solicita que o usuário decida se deseja autorizar a aplicação de servidor web.
-
Obtenção de um token de acesso
Se o usuário concordar em autorizar a aplicação de servidor web, o servidor de autorização redirecionará a solicitação de acesso para a URI de redirecionamento especificada pela aplicação e gerará um código de autorização.
Após receber o código de autorização, a aplicação de servidor web solicita um token de acesso ao servidor de autenticação. Assim, o usuário obtém o token de acesso.
-
Acesso aos recursos
O usuário usa o token de acesso para chamar a API do PDS no frontend da aplicação de servidor web.
Pré-requisitos
Um serviço compatível com OAuth 2.0 está pronto.
O PDS Developer Edition está ativado. Para mais informações, consulte Primeiros passos com o PDS.
Procedimento
Etapa 1: Obter o ID e o segredo de uma aplicação
-
Faça login no console do PDS. No painel de navegação à esquerda, escolha Drive and Photo Service (Developer Edition) > Domains.
Localize o domínio desejado e clique em Details na coluna Actions.
-
Crie uma aplicação.
NotaSe nenhuma aplicação estiver disponível, crie uma antes de executar as operações subsequentes.
Na página de detalhes do domínio, clique na aba Applications e, em seguida, clique em Create Application.
-
No painel exibido, especifique os parâmetros e clique em OK.
Para o parâmetro Type, selecione WebServer (Web Server Application).

-
Na lista de aplicações, visualize o ID (client_id) e o Secret (client_secret) da aplicação criada.
ImportanteMantenha o segredo em sigilo.
Etapa 2: Autorizar login baseado em OAuth 2.0
-
Configure os parâmetros de autorização
Se um usuário ainda não autorizado acessar sua aplicação de servidor web por meio de um navegador, a aplicação deverá criar uma solicitação de autorização. Essa solicitação inclui o client_id da aplicação e os escopos de permissões. O usuário envia a solicitação ao servidor de autorização do PDS para conceder as permissões necessárias à aplicação.
Exemplo de solicitação:
GET /v2/oauth/authorize?client_id=<ID>&redirect_uri=<redirect_uri>&login_type=<login_type>&scope=<scope>&response_type=code&state=[state] HTTP/1.1 Host: {domainId}.api.aliyunpds.comA tabela a seguir descreve os parâmetros da solicitação:
Parâmetro
Obrigatório
Descrição
client_id
Sim
O
IDda aplicação. Para saber como obter o ID, consulte Obter o ID e o segredo de uma aplicação.redirect_uri
Sim
A URL de callback, ou seja, a URL para a qual a solicitação é redirecionada após a autorização. Exemplo:
https://example.com/callback.Após a autorização bem-sucedida, a solicitação do usuário é redirecionada para essa URL. A URL contém um código de verificação de uso único, como
https://example.com/callback?code=xxxx.NotaCertifique-se de que a URL de callback corresponda à URL de callback OAuth 2.0 especificada durante a criação da aplicação.
scope
Não
Os escopos que definem as permissões para as ações exigidas pela aplicação. Esses escopos são um subconjunto daqueles especificados na criação da aplicação e aparecem na página de consentimento. Para mais informações, consulte Escopos.
NotaAs permissões representadas pelo token de acesso correspondem à interseção entre as permissões do usuário e as permissões definidas pelos escopos.
response_type
Sim
O tipo de resposta. Defina o valor como
code.state
Não, mas recomendado
O estado. Se a solicitação incluir este parâmetro, o servidor de autenticação devolverá a solicitação com o mesmo estado para evitar ataques de Cross Site Request Forgery (CSRF). Exemplo:
https://example.com/callback?code=xxxx&state=abc.login_type
Sim
A opção de login. Valores válidos:
-
default: fornece uma página de login abrangente com suporte a login por número de celular e outros métodos.
-
phone: login por número de celular.
-
ding: login com DingTalk.
-
ldap: login baseado em Lightweight Directory Access Protocol (LDAP) ou Active Directory (AD).
-
wx: login com uma conta WeChat.
-
ram: login como usuário do Resource Access Management (RAM).
-
lark: login com Lark.
-
saml: login com uma conta de terceiros baseada no protocolo Security Assertion Markup Language (SAML).
hide_consent
Não
Define se a página de autorização do usuário deve ser ignorada nas tentativas de login subsequentes após o primeiro login bem-sucedido. Valores válidos:
-
true (padrão): A página de autorização não é exibida. Os usuários prosseguem diretamente para a próxima etapa.
-
false: A página de autorização é exibida.
lang
Não
O idioma de exibição da página. Valores válidos:
-
zh_CN (padrão): Chinês simplificado
-
en_US: Inglês
-
-
Página de consentimento
Na página de consentimento, o usuário decide se concede as permissões à aplicação. Caso o usuário recuse, o processo termina. Se concordar, o servidor de autorização do PDS redireciona a solicitação do usuário para a
redirection URIespecificada na Etapa 2.1. Exemplo:https://example.com/callback?code=xxxx&state=abc. -
Troque o código de autorização por um token de acesso
Uma aplicação de servidor web possui duas partes: frontend e backend. Configure a URL de redirecionamento, como
https://example.com/callback, no frontend. Ao receber o parâmetro?code=xxx, o frontend analisa o código e o transmite ao backend. O backend usa o método a seguir para obter um token de acesso e devolvê-lo ao frontend.Exemplo de solicitação:
POST /v2/oauth/token HTTP/1.1 Host: {domainId}.api.aliyunpds.com Content-Type: application/x-www-form-urlencoded code=xxx\ &client_id=your_app_id\ &client_secret=your_app_secret\ &redirect_uri=https://example.com/callback\ &grant_type=authorization_codeParâmetro
Obrigatório
Descrição
code
Sim
O
codede autorização de uso único.client_id
Sim
O
IDda aplicação. Para saber como obter o ID, consulte Obter o ID e o segredo de uma aplicação.client_secret
Sim
O
secretgerado durante a criação da aplicação.redirect_uri
Sim
A URL de callback, ou seja, a URL para a qual a solicitação é redirecionada após a autorização. Exemplo:
https://example.com/callback.NotaCertifique-se de que a URL de callback corresponda à URL de callback OAuth 2.0 especificada durante a criação da aplicação.
grant_type
Sim
O tipo de concessão. Defina o valor como
authorization_code, que indica o método Authorization Code.Exemplo de resposta:
HTTP/1.1 200 OK Content-Type: application/json { "access_token":"Aiasd76*****", "expires_time":"2019-11-11T10:10:10.009Z", "expire_in": 7200, "token_type":"Bearer", "refresh_token":"LSLKdk*******" }Parâmetro
Posição
Tipo
Obrigatório
Descrição
access_token
body
string
Sim
O
access tokengerado, válido por duas horas.refresh_token
body
string
Sim
Token de atualização usado para renovar o
access token. Geralmente, o período de validade é de sete dias.expires_time
body
string
Sim
Horário de expiração do
access token.expire_in
body
long
Sim
Período de validade do
access token. Unidade: segundos. Valor padrão: 7200.token_type
body
string
Sim
Tipo de token. O valor é
Bearer. -
Chame a API do PDS
O frontend da web pode usar o
access tokenpara chamar as operações de API do PDS. Inclua oaccess tokenno cabeçalhoAuthorizationdas solicitações de API.Para mais informações, consulte Métodos de chamada.
Atualizar o token de acesso
Exemplo de solicitação:
POST /v2/oauth/token HTTP/1.1
Host: {domainId}.api.aliyunpds.com
Content-Type: application/x-www-form-urlencoded
refresh_token=xxx\
&client_id=xxx\
&client_secret=xxx\
&grant_type=refresh_token
A tabela a seguir descreve os parâmetros da solicitação:
|
Parâmetro |
Obrigatório |
Descrição |
|
refresh_token |
Sim |
Token de atualização retornado ao trocar o código de autorização pelo token de acesso. |
|
client_id |
Sim |
O |
|
grant_type |
Sim |
Tipo de concessão. Defina o valor como |
|
client_secret |
Sim |
Segredo da aplicação, usado para autenticá-la. |
Exemplo de resposta:
HTTP/1.1 200 OK
Content-Type: application/json
{
"access_token":"xxxxxxxxx",
"refresh_token": "xxxxx",
"expires_in":7200,
"expire_time":"2019-11-11T10:10:10.009Z",
"token_type":"Bearer"
}
|
Parâmetro |
Posição |
Tipo |
Obrigatório |
Descrição |
|
access_token |
body |
string |
Sim |
O |
|
refresh_token |
body |
string |
Sim |
Token de atualização usado para renovar o |
|
expires_time |
body |
string |
Sim |
Horário de expiração do |
|
expire_in |
body |
long |
Sim |
Período de validade do |
|
token_type |
body |
string |
Sim |
Tipo de token. O valor é |
Perguntas frequentes
Referências
Para saber como chamar operações de API do PDS Developer Edition, consulte Métodos de chamada.
Para acessar o PDS a partir de uma aplicação móvel ou desktop usando OAuth 2.0, consulte Acesso OAuth 2.0 para aplicações móveis e desktop.
Para acessar o PDS a partir de uma aplicação de navegador web usando OAuth 2.0, consulte Acesso OAuth 2.0 para aplicações de navegador web.