Fluxo do token de atualização OAuth 2.0 para sessões renovadas
O fluxo de token de atualização do OAuth 2.0 renova tokens de acesso emitidos pelo servidor da web do OAuth 2.0 ou o fluxo de agente de usuário do OAuth 2.0.
Edições obrigatórias
| Disponível em: Salesforce Classic (não disponível em todas as organizações) e Lightning Experience |
| Disponível em: Todas as edições |
Depois que um cliente, por meio de um aplicativo conectado, recebe um token de acesso, ele pode usar um token de atualização para obter uma nova sessão quando sua sessão atual expira. O valor de tempo limite da sessão do aplicativo conectado determina quando um token de acesso não é mais válido e quando solicitar um novo usando um token de atualização.
Para maior segurança, habilite a rotação de token de atualização em seu aplicativo conectado ou aplicativo cliente externo ao definir suas configurações do OAuth. Com essa configuração habilitada, o aplicativo conectado emite um novo token de atualização junto com o token de acesso sempre que o fluxo for invocado. O token de atualização anterior é invalidado automaticamente. A rotação do token de atualização garante que cada token de atualização seja usado apenas uma vez por usuário, de modo que os tokens de atualização não possam ser usados para obter novos tokens de acesso. Se alguém tentar usar um token de atualização que foi rotacionado, o Salesforce invalidará o token de atualização atual e todos os tokens de acesso associados. Para obter um novo token de atualização, o cliente deve concluir um novo fluxo.
O fluxo do token de atualização envolve estas etapas.
- O aplicativo conectado usa a chave de atualização existente para solicitar uma nova chave de acesso.
- Depois de verificar a solicitação, o Salesforce concede um novo token de acesso ao cliente.
Solicite uma chave de acesso atualizado
Um aplicativo conectado pode usar o token de atualização para obter um novo token de acesso enviando uma destas solicitações POST do token de atualização ao ponto de extremidade do token do Salesforce.
O aplicativo conectado pode enviar client_id e client_secret no corpo da solicitação POST do token de atualização, como mostrado aqui.
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com/
grant_type=refresh_token&
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&client_secret=1955279925675241571&
refresh_token=your token here Em vez de enviar credenciais de cliente como parâmetros no corpo da solicitação de POST do token de atualização, você pode usar o esquema de autenticação básico HTTP. O formato deste esquema exige client_id e client_secret no cabeçalho de autorização da publicação da seguinte maneira:
Authorization:
Basic64Encode(client_id:secret)
O client_id e o client_secret são separados por dois-pontos (:). Para obter mais informações, consulte a Estrutura de autorização do OAuth 2.0.
Este exemplo mostra uma solicitação POST de token de atualização que usa o esquema de autenticação básica HTTP em vez de enviar credenciais do cliente no corpo da solicitação POST.
POST /services/oauth2/token HTTP/1.1
Host: login.salesforce.com
Authorization: Basic
client_id=3MVG9lKcPoNINVBIPJjdw1J9LLM82HnFVVX19KY1uA5mu0QqEWhqKpoW3svG3XHrXDiCQjK1mdgAvhCscA9GE&
client_secret=1955279925675241571
grant_type=refresh_token&
refresh_token=your token here client_id e client_secret forem enviados no corpo POST, o cabeçalho de autorização será ignorado.Evite enviar solicitações simultâneas que contenham o mesmo token de atualização. Se o cliente enviar solicitações idênticas ao mesmo tempo, algumas das solicitações falharão de modo intermitente e a coluna Status no Histórico de logins exibirá Falha: A solicitação de token já está sendo processada. Em vez de enviar continuamente solicitações para novos tokens de acesso, armazene em cache e reutilize tokens. Se você enviar solicitações simultâneas com o mesmo token de atualização, o que não é recomendado, desenvolva uma maneira de tentar novamente as solicitações quando esse erro ocorrer.
Com o formato de solicitação de POST do token de atualização, inclua os seguintes parâmetros.
| Parâmetro | Descrição |
|---|---|
client_id
|
A chave de consumidor do aplicativo conectado. Para acessar a chave de consumidor, no Gerenciador de aplicativo, localize o aplicativo conectado e selecione Visualizar no menu suspenso. Então clique em Gerenciar detalhes do consumidor. Às vezes, você é solicitado a verificar sua identidade antes de visualizar a chave de consumidor. |
client_secret
|
O segredo do consumidor do aplicativo conectado. Para acessar o segredo de consumidor, no Gerenciador de aplicativo, localize o aplicativo conectado e selecione Visualizar no menu suspenso. Então clique em Gerenciar detalhes do consumidor. Às vezes, você é solicitado a verificar sua identidade para poder visualizar o segredo do consumidor. |
grant_type
|
O tipo de concessão OAuth 2.0 que o aplicativo conectado solicita. O valor deve ser refresh_token para esse fluxo. |
refresh_token
|
Token obtido do servidor da Web, do agente do usuário ou do fluxo do token do aplicativo híbrido. Este valor é secreto. Tome medidas adequadas para protegê-lo. Esse parâmetro é retornado somente se o aplicativo conectado estiver configurado com um escopo refresh_token. |
client_assertion
|
Em vez de passar client_secret, você pode fornecer client_assertion e client_assertion_type. Se um parâmetro client_secret não for fornecido, o Salesforce verificará se há client_assertion e client_assertion_type. Consulte Usar client_assertion em vez de client_secret. |
client_assertion_type
|
Forneça esse valor ao usar o parâmetro O valor |
format
|
Se não estiver incluído no cabeçalho da solicitação, você poderá especificar o formato de retorno esperado. O parâmetro
|
O Salesforce concede um novo token de acesso
Depois de verificar a solicitação, o Salesforce envia uma resposta com um novo token de acesso ao aplicativo conectado.
Aqui está um exemplo de resposta JSON do Salesforce.
{
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448384422",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4",
"token_type":"Bearer",
"scope":"id api refresh_token"
}Aqui está um exemplo de resposta XML.
<Oauth>
<access_token>00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNB
aT1cyWk7TrqoDjoNIWQ2ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4
</access_token>
<token_type>Bearer
</token_type>
<scope>id api refresh_token
</scope>
<instance_url>https://yourInstance.salesforce.com/</instance_url>
<id>https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P</id>
<issued_at>1278448101416</issued_at>
<signature>CMJ4l+CCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe+fVg=</signature>
</Oauth>Este exemplo mostra uma resposta codificada em URL.
access_token=00Dx0000000BV7z%21AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7TrqoDjoNIWQ2
ME_sTZzBjfmOE6zMHq6y8PIW4eWze9JksNEkWUl.Cju7m4
&token_type=Bearer&scope=id%20api%20refresh_token
&instance_url=https%3A%2F%2FyourInstance.salesforce.com
&id=https://login.salesforce.com%2Fid%2F00Dx0000000BV7z%2F005x00000012Q9P
&issued_at=1278448101416
&signature=CMJ4l%2BCCaPQiKjoOEwEig9H4wqhpuLSk4J2urAe%2BfVg%3DSe a rotação do token de atualização estiver habilitada para o aplicativo conectado ou o aplicativo cliente externo, a resposta incluirá um novo token de atualização. Aqui está um exemplo de resposta JSON se a rotação de token de atualização estiver habilitada.
{
"access_token":"00Dx0000000BV7z!AR8AQP0jITN80ESEsj5EbaZTFG0RNBaT1cyWk7T...",
"refresh_token":"CjAwRHgwMDAwMDAwQlY3eiFBUjhBUVAwaklUTjgwRVNFc2o1RWJhWl...",
"signature":"SSSbLO/gBhmmyNUvN18ODBDFYHzakxOMgqYtu+hDPsc=",
"scope":"id api refresh_token",
"instance_url":"https://yourInstance.salesforce.com/",
"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P"
"token_type":"Bearer",
"issued_at":"1278448384422",
}Os seguintes parâmetros podem ser incluídos no corpo da resposta.
| Parâmetro | Descrição |
|---|---|
access_token
|
Token OAuth que um aplicativo conectado usa para solicitar acesso a um recurso protegido em nome do aplicativo cliente. Permissões adicionais na forma de escopos podem acompanhar o token de acesso. |
refresh_token
|
Um novo token de atualização. Use o token de atualização para obter um novo token de acesso na próxima vez que invocar o fluxo do token de atualização. Esse parâmetro será incluído apenas se você habilitar a rotação de token de atualização para seu aplicativo conectado ou aplicativo cliente externo. |
token_type
|
Um tipo de token Bearer, que é usado para todas as respostas que incluem um token de acesso. |
token_format
|
Se seu aplicativo conectado ou aplicativo cliente externo estiver habilitado para emitir tokens de acesso baseados em Token da Web JSON (JWT), sua resposta incluirá esse parâmetro para indicar o formato do token de acesso. O valor é Esse parâmetro não será incluído se o aplicativo emitir tokens de acesso opacos. |
instance_url
|
Um URL que indica a instância da organização do usuário. Por exemplo: https://yourInstance.salesforce.com/. |
id
|
Um URL de identidade que pode ser usado para identificar o usuário e consultar mais informações sobre o usuário. Veja os URLs de identidade. |
issued_at
|
Carimbo de data/hora de criação da assinatura em milissegundos. |
signature
|
Assinatura HMAC-SHA256 com codificação Base64 realizada com client_secret. A assinatura pode incluir ID concatenado e issued_at value, que você pode usar para verificar se o URL da identidade não mudou desde que o servidor o enviou. |
sfdc_site_url
|
Se o usuário for um membro de um site do Experience Cloud, o URL do site será fornecido. |
sfdc_site_id
|
Se o usuário for um membro de um site do Experience Cloud, o ID do site do usuário será fornecido. |

