Fluxo de credenciais do cliente OAuth 2.0 para integração entre servidores
Às vezes, você quer compartilhar diretamente informações entre dois aplicativos sem um usuário interferir. Para estes cenários, é possível usar o fluxo de credenciais do cliente OAuth 2.0. Nesse fluxo, o aplicativo cliente troca suas credenciais de cliente definidas no aplicativo cliente externo (sua chave e seu segredo de consumidor) por um token de acesso. Esse fluxo elimina a necessidade de interação explícita do usuário, embora exija que você especifique um usuário de integração para executar a integração. Você pode usar esse fluxo como uma alternativa mais segura ao fluxo de nome de usuário e senha do OAuth 2.0.
Edições obrigatórias
| Disponível em: Salesforce Classic e Lightning Experience |
| Disponível em: Todas as edições |
Para usar o fluxo de credenciais do cliente, você deve criar um aplicativo cliente externo e definir suas configurações de OAuth e políticas de acesso.
Por exemplo, você cria um aplicativo personalizado para executar relatórios automatizados com base no Salesforce. Você quer que o aplicativo execute relatórios todas as noites. Para integrar seu aplicativo personalizado ao Salesforce, você configura um aplicativo cliente externo. Em seguida, para configurar seu aplicativo cliente externo para o fluxo de credenciais do cliente, habilite o fluxo e atribua um usuário de integração. Quando o serviço de relatório noturno começa, seu aplicativo personalizado acessa dados do Salesforce usando estas etapas gerais.
- O aplicativo cliente externo envia suas credenciais de cliente para o ponto de extremidade do token OAuth do Salesforce por meio de uma solicitação POST.
- O Salesforce valida as credenciais do cliente e autentica o aplicativo.
- O Salesforce retorna um token de acesso em nome do usuário de integração que você atribuiu.
- O aplicativo cliente externo usa o token de acesso para chamar uma API do Salesforce, como a API REST.
- A API responde com os dados solicitados para o relatório.
Solicitar uma chave de acesso
Vamos analisar o processo de obter um token de acesso com o fluxo de credenciais do cliente.
Para iniciar o fluxo, o aplicativo cliente externo publica suas credenciais de cliente no ponto de extremidade do token do Salesforce. Você pode incluir as credenciais do cliente como parâmetros no corpo da solicitação. Ou, para segurança adicional, coloque suas credenciais de cliente em um cabeçalho de Autorização básica.
Aqui está um exemplo de solicitação de POST com as credenciais de clientes no corpo da solicitação.
POST /services/oauth2/token HTTP/1.1
Host: MyDomainName.my.salesforce.com
grant_type=client_credentials&
client_id=*******************&
client_secret=*******************Para esse fluxo, não há suporte para solicitações para https://login.salesforce.com e https://test.salesforce.com. Em vez disso, use seu URL do Meu domínio. Para localizar seu URL do Meu domínio, em Configuração, na caixa Busca rápida, insira Meu domínio e selecione Meu domínio.
Esses parâmetros devem ser incluídos na solicitação.
| Parâmetro | Descrição |
|---|---|
client_id |
A chave de consumidor do aplicativo cliente externo. Para acessar a chave de consumidor, no Gerenciador de aplicativo cliente externo, localize o aplicativo cliente externo e selecione Editar configurações na lista suspensa. Em seguida, expanda a seção Configurações do OAuth e clique em chave e segredo de consumidor. Às vezes, você é solicitado a verificar sua identidade antes de visualizar a chave de consumidor. |
client_secret |
O segredo do consumidor do aplicativo cliente externo. Para acessar o segredo do consumidor, no Gerenciador de aplicativo cliente externo, localize o aplicativo cliente externo e selecione Editar configurações na lista suspensa. Em seguida, expanda a seção Configurações do OAuth e clique em chave e segredo de 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 cliente externo solicita. Para o fluxo de credenciais do cliente, esse valor deve ser definido como Para obter uma explicação detalhada do tipo de concessão de credenciais do cliente, consulte a seção 4.4 Concessão de credenciais do cliente em A estrutura de autorização do OAuth 2.0 da Internet Engineering Task Force. |
Aqui está um exemplo com as credenciais do cliente em um cabeçalho de autorização Básica. Com esse formato, o client_id é anexado ao client_secret no formato client_id:client_secret, e o valor resultante é codificado em Base64.
POST /services/oauth2/token HTTP/1.1
Host: MyDomainName.my.salesforce.com
Header: Authorization: Basic
TXlDbGllbnRJRDpNeUNsaWVudFNlY3JldA==
grant_type=client_credentialsSe você usar esse formato, o grant_type será o único parâmetro necessário no corpo da solicitação. O grant_type deve ser definido como client_credentials.
O Salesforce concede um token de acesso
Depois de validar as credenciais do cliente, o Salesforce retorna uma resposta contendo um token de acesso e os escopos solicitados. O aplicativo pode usar o token de acesso para acessar dados protegidos no Salesforce.
Veja aqui um exemplo de resposta de token de acesso no formato JSON.
{
"access_token": "*******************",
"instance_url": "https://yourInstance.salesforce.com",
"id": "https://login.salesforce.com/id/XXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXXXXX",
"token_type": "Bearer",
"scope": "id api",
"issued_at": "1657741493799",
"signature": "c2lnbmF0dXJl"
}Esses parâmetros são incluídos na resposta de exemplo.
| Parâmetro | Descrição |
|---|---|
access_token
|
Token OAuth que um aplicativo cliente externo 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. |
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 a organização e o usuário de integração. O formato do URL é https://login.salesforce.com/id/orgID/userID. |
token_type
|
Um tipo de token Bearer, que é usado para todas as respostas que incluem um token de acesso.
|
scope
|
Os escopos associados ao token de acesso. O escopo define ainda mais o tipo de recursos protegidos que o cliente pode acessar. Você atribui escopos a um aplicativo cliente externo ao criá-lo e eles são incluídos com os tokens OAuth durante o fluxo de autorização. Como o fluxo de credenciais do cliente não oferece suporte a sessões de interface do usuário e não emite um token de atualização, o Salesforce filtra automaticamente esses escopos.
Para obter mais informações, consulte Tokens e escopos do OAuth. |
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 o ID concatenado e o valor de issued_at, que você pode usar para verificar se o URL da identidade não mudou desde que o servidor a enviou. |
