Configure e use os aplicativos OAuth 2 personalizados de sua organização usando o fluxo PKCE
O PKCE é um fluxo de autorização seguro que funciona bem com a atualização dinâmica de aplicativos, como aplicativos móveis, mas é valioso em todos os clientes OAuth2. Em vez de um segredo de cliente estático, o PKCE usa uma string gerada dinamicamente, eliminando o risco de um segredo de cliente vazado.
Visão geral do PKCE
Um fluxo PKCE tem as etapas a seguir. As etapas desta seção são apresentadas apenas para fins informativos. Para executar esses procedimentos, consulte outras seções neste artigo.
-
O cliente cria o
code_challenge
transformando ocode_verifier
usando a criptografiaS256
. -
O cliente direciona o navegador para a página de entrada OAuth2, junto com o
code_challenge
gerado. Você deve registrar seu aplicativo (Cliente) para que OAuth2 possa aceitar a solicitação de autorização. Após o registro, seu aplicativo pode redirecionar o navegador para OAuth2. -
O servidor de autorização OAuth2 redireciona o prompt de autenticação para o usuário.
-
O usuário é autenticado usando uma das opções de logon configuradas e pode ver uma página de consentimento listando as permissões que o OAuth2 dará ao aplicativo.
-
O OAuth2 redireciona de volta para seu aplicativo com um
authorization code
. -
Seu aplicativo envia esse código, juntamente com o
code_verifier
, para o OAuth2. -
O Servidor de Autorização OAuth2 transforma o
code_verifier
usando ocode_challenge_method
da solicitação de autorização inicial e verifica o resultado em relação aocode_challenge
. Se o valor de ambas as cadeias de caracteres for correspondente, o servidor verificou que as solicitações vieram do mesmo cliente e emitirá umaccess token
. -
OAuth2 retorna o
access token
e, opcionalmente, umrefresh token
. -
Seu aplicativo agora pode usar esses tokens para chamar o servidor de recursos, como uma API, em nome do usuário.
-
O servidor de recursos valida o token antes de responder à solicitação.
Configurar o aplicativo
Antes de implementar a autorização, é necessário registrar seu aplicativo no OAuth2 criando uma integração de aplicativo do Workfront.
Para obter instruções sobre como criar o aplicativo OAuth2, consulte Criar um aplicativo Web de página única OAuth2 usando PKCE em Criar aplicativos OAuth2 para integrações do Workfront
Criar a chave da prova para troca de código
Semelhante ao fluxo de Código de autorização padrão, seu aplicativo inicia redirecionando o navegador do usuário para o ponto de extremidade /authorize
do servidor de autorização. No entanto, nesse caso, também é necessário transmitir um desafio de código.
Sua primeira etapa é gerar um verificador de código e um desafio.
Você deve adicionar código no aplicativo cliente para criar o verificador de código e o desafio de código.
O código do gerador PKCE cria uma saída semelhante à seguinte:
code language-none |
---|
|
Seu aplicativo salva o code_verifier
para depois e envia o code_challenge
junto com a solicitação de autorização para a URL /authorize
do seu Servidor de Autorização.
Solicitar um código de autorização
Se você estiver usando o Servidor de autorização personalizado padrão, seu URL de solicitação será semelhante ao seguinte:
code language-none |
---|
|
Observe os parâmetros que estão sendo transmitidos:
-
client_id
corresponde à ID do cliente do aplicativo OAuth2 que você criou no ao configurar o aplicativo.Para obter instruções, consulte Criar um aplicativo web de página única OAuth2 usando PKCE em Criar aplicativos OAuth2 para integrações do Workfront.
-
response_type
écode
, porque o aplicativo usa o tipo de concessão Código de Autorização. -
redirect_uri
é o local de retorno de chamada para o qual o agente do usuário é direcionado junto com ocode
. Deve corresponder a um dos URLs de redirecionamento especificados ao criar o aplicativo OAuth2. -
code_challenge_method
é o método de hash usado para gerar o desafio, que é sempreS256
para aplicativos Workfront Oauth2 que usam PKCE. -
code_challenge
é o desafio de código usado para PKCE.
Trocar o código por tokens
Para trocar o código de autorização por um token de acesso, passe-o para o ponto de extremidade /token
do Servidor de Autorização junto com o code_verifier
.
code language-none |
---|
|
Observe os parâmetros que estão sendo transmitidos:
-
grant_type
éauthorization_code
, porque o aplicativo usa o tipo de concessão Código de Autorização. -
redirect_uri
deve corresponder ao URI que foi usado para obter o código de autorização. -
code
é o código de autorização recebido do ponto de extremidade /authorize. -
code_verifier
é o verificador de código PKCE gerado pelo seu aplicativo em Criar a Chave de Prova para Troca de Código. -
client_id
identifica seu cliente e deve corresponder ao valor pré-registrado em OAuth2.
Se o código ainda for válido e o verificador de código corresponder, seu aplicativo receberá um token de acesso.
code language-none |
---|
|
Validar o token de acesso
Quando o aplicativo transmite uma solicitação com um token de acesso, o servidor de recursos precisa validá-lo.
Você pode validar seu token de acesso com uma chamada de API semelhante ao seguinte:
code language-none |
---|
|
Solicitar um token de atualização
Para solicitar um token de atualização, você pode fazer uma chamada de POST para a API, semelhante ao seguinte:
code language-none |
---|
|