Loading
Identificar seus usuários e gerenciar acesso
Fluxo de credenciais do cliente OAuth 2.0 para integração entre servidores

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.

Nota
Nota Esse fluxo não é compatível com tokens de atualização.
  1. 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.
  2. O Salesforce valida as credenciais do cliente e autentica o aplicativo.
  3. O Salesforce retorna um token de acesso em nome do usuário de integração que você atribuiu.
  4. O aplicativo cliente externo usa o token de acesso para chamar uma API do Salesforce, como a API REST.
  5. A API responde com os dados solicitados para o relatório.
Aviso
Aviso Antes de configurar o fluxo de credenciais do cliente, é importante entender seus riscos de segurança. Com esse fluxo habilitado, qualquer pessoa ou aplicativo que tenha acesso à chave de consumidor e ao segredo de consumidor do seu aplicativo cliente externo poderá obter um token de acesso. Mantenha a segurança alterando periodicamente seu segredo de consumidor e alterando-o imediatamente se ele for comprometido.

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.

Importante
Importante Ao desenvolver integrações do OAuth, sempre passe informações confidenciais no corpo de uma solicitação POST ou em um cabeçalho da solicitação. Não use parâmetros GET na string de consulta de URL para passar informações confidenciais. As informações confidenciais incluem, entre outros, nomes de usuário, senhas, tokens OAuth, segredos do cliente e quaisquer informações de identificação pessoal. Para obter mais informações sobre as melhores práticas de segurança, consulte Armazenamento de dados confidenciais no Guia de codificação segura.

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 client_credentials.

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_credentials

Se 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.

Nota
Nota Uma vez que o Salesforce não oferece suporte a escopos no ponto de extremidade do token, você não pode incluir escopos na solicitação. Em vez disso, atribua escopos ao seu aplicativo cliente externo.

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.

  • Acesso total (full)
  • Gerenciar os dados do usuário por meio de navegadores da Web (web)
  • Realizar solicitações a qualquer momento (refresh_token, offline_access)

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.
 
Carregando
Salesforce Help | Article