Understand Security and Authentication
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Compreender os métodos de segurança e autenticação usados nos aplicativos Salesforce.
- Compreender o uso de aplicativos conectados para integrar aplicativos móveis ao servidor do Salesforce.
- Compreender a terminologia básica de OAuth.
- Compreender o fluxo de eventos na autenticação OAuth e na segurança por PIN.
Sobre segurança e autenticação
A autenticação segura é essencial para aplicativos empresariais executados em dispositivos móveis. O OAuth 2.0, protocolo padrão da indústria, permite uma autorização segura para acesso a dados do cliente, sem ter que divulgar nome de usuário e a senha. Muitas vezes, ele é descrito como a chave de serviço de acesso ao software. Uma chave de serviço restringe o acesso a determinados recursos do seu carro. Por exemplo, um funcionário do estacionamento não pode abrir o porta-malas ou o porta-luvas usando uma chave de serviço.
Os desenvolvedores de aplicativos móveis podem integrar, de forma rápida e fácil, uma implantação Salesforce do OAuth 2.0. A implantação usa um modo de exibição HTML para coletar o nome de usuário e a senha, que são enviados ao servidor. O servidor retorna um token de sessão e um token de atualização persistente que são armazenados no dispositivo para interações futuras.
Um aplicativo conectado ao Salesforce é o principal meio de conexão de um aplicativo móvel ao Salesforce. Um aplicativo conectado dá ao desenvolvedor e ao administrador controle sobre como o aplicativo se conecta e quem tem acesso. Por exemplo, um aplicativo conectado pode restringir o acesso a um conjunto de clientes, definir ou liberar um intervalo de endereços IP e muito mais.
Terminologia do OAuth
Se você se sentir perdido, essa lista poderá ajudá-lo a encontrar seu caminho. Esses rótulos, considerados em conjunto, levam diretamente ao nirvana do OAuth.
Chave de cliente |
Um valor usado pelo cliente, neste caso, o aplicativo do Mobile SDK, para se identificar perante o Salesforce. Chamado de |
---|---|
Token de acesso |
Valor usado pelo cliente para obter acesso a recursos protegidos em nome do usuário, em vez de usar as credenciais do usuário do Salesforce. O token de acesso é uma ID de sessão e pode ser usado diretamente. |
Token de atualização |
Um token usado pelo consumidor para obter um novo token de acesso, sem ter que fazer o usuário final aprovar o acesso novamente. |
Código de autorização |
Um token de vida curta que representa o acesso concedido pelo usuário final. O código de autorização é usado para obter um token de acesso e um token de atualização. |
Aplicativo conectado |
Um aplicativo externo ao Salesforce que usa o protocolo OAuth para verificar o usuário do Salesforce e o aplicativo externo. |
Fluxo de autenticação do OAuth2
O fluxo de eventos durante a autorização do OAuth depende do status da autenticação no dispositivo.
Fluxo de autorização na primeira vez
- O cliente abre um aplicativo do Mobile SDK.
- Um prompt de autenticação é exibido.
- O cliente insere um nome de usuário e senha.
- O aplicativo envia as credenciais do cliente para o Salesforce e, em troca, recebe uma ID de sessão como confirmação de autenticação bem-sucedida.
- O cliente aprova o pedido do aplicativo para conceder acesso ao aplicativo.
- O aplicativo é iniciado.
Autorização em andamento
- O cliente abre um aplicativo móvel.
- Se a ID da sessão estiver ativa, o aplicativo será iniciado imediatamente. Se a ID da sessão tiver expirado, o aplicativo usará o token de atualização da autorização inicial para obter uma ID de sessão atualizada.
- O aplicativo é iniciado.
Segurança com PIN
Os aplicativos conectados ao Salesforce têm uma camada adicional de segurança com proteção por PIN no aplicativo. A proteção por PIN é para o próprio aplicativo e não é a mesma coisa que a proteção por PIN no dispositivo ou a segurança de login fornecida pela organização do Salesforce.
Para usar a proteção por PIN, o desenvolvedor precisa marcar a caixa de seleção Implements Screen Locking & Pin Protection (Implanta bloqueio de tela e proteção por pin) durante a criação do aplicativo conectado. Os administradores do aplicativo móvel têm as opções de impor proteção por PIN, personalizar a duração do tempo limite e definir o tamanho do PIN.
Na prática, a proteção por PIN pode ser usada para que o aplicativo móvel seja bloqueado quando não está sendo usado depois de determinada quantidade de minutos. Quando um aplicativo móvel é colocado em segundo plano, as horas continuam a passar.
Para ilustrar como a proteção por PIN funciona:
- O cliente liga um celular e insere o PIN do dispositivo.
- Ele inicia um aplicativo do Mobile SDK.
- O cliente insere as informações de login para a organização do Salesforce.
- Ele insere o código PIN para o aplicativo do Mobile SDK.
- O cliente trabalha no aplicativo e o coloca em segundo plano abrindo outro aplicativo (ou recebendo uma chamada, etc.).
- O aplicativo atinge o tempo limite.
- O cliente reabre o aplicativo e aparece a tela de PIN do aplicativo (para o aplicativo do Mobile SDK, não para o dispositivo).
- O cliente insere o PIN do aplicativo e pode retomar o trabalho.
Fluxo de agente do usuário do OAuth2
No fluxo de agente do usuário, o aplicativo conectado, que integra o aplicativo cliente à API do Salesforce, recebe o token de acesso como um redirecionamento HTTP. O aplicativo conectado solicita ao servidor de autorização o redirecionamento do agente do usuário para outro servidor Web ou para um recurso local acessível. O servidor Web pode extrair o token de acesso da resposta e transmiti-lo ao aplicativo conectado. Para segurança, a resposta do token é fornecida como fragmento de hashtag (#) na URL. Esse formato evita que o token seja transmitido ao servidor ou a outros servidores em cabeçalhos de referência.
Atenção
Como o token de acesso está codificado na URL de redirecionamento, ele pode ficar exposto ao usuário e a outros aplicativos no dispositivo.
Por exemplo, você usa o Salesforce Mobile SDK para criar um aplicativo móvel que busque informações de contato de clientes em sua organização do Salesforce. O Mobile SDK implementa o fluxo de agente do usuário de OAuth 2.0 para seu aplicativo conectado, integrando o aplicativo móvel com sua API do Salesforce e fornecendo acesso autorizado aos dados definidos. O fluxo segue estas etapas.
- O usuário final abre o aplicativo móvel.
- O aplicativo conectado direciona o usuário ao Salesforce para autenticação e autorização do aplicativo móvel.
- O usuário aprova o acesso para esse fluxo de autorização.
- O aplicativo conectado recebe o retorno de chamada do Salesforce para a URL de redirecionamento, que extrai os tokens de acesso e atualização.
- O aplicativo conectado usa o token de acesso para acessar dados em nome do usuário final.
Connected Apps
Um aplicativo conectado integra um aplicativo ao Salesforce usando APIs. Os aplicativos conectados usam protocolos SAML e OAuth padrão para autenticar, fornecer logon único e tokens para uso com APIs do Salesforce. Além dos recursos OAuth padrão, os aplicativos conectados permitem que os administradores do Salesforce definam várias políticas de segurança e tenham controle explícito sobre quem pode usar os aplicativos correspondentes.
Aqui está uma lista de informações gerais que você fornece ao criar um aplicativo conectado.
- Nome, descrição, logotipo e informações de contato
- URL na qual o Salesforce pode encontrar o aplicativo para autorização ou identificação
- Protocolo de autorização: OAuth, SAML ou ambos
- Intervalos IP dos quais os usuários podem fazer login no aplicativo conectado (opcional)
- Informações sobre políticas de dispositivos móveis que o aplicativo conectado pode impor (opcional)
Os aplicativos do Salesforce Mobile SDK usam aplicativos conectados para acessar os serviços OAuth do Salesforce e chamar as APIs REST do Salesforce.
Valores de parâmetro do escopo
O OAuth exige a configuração do escopo no servidor e no cliente. O acordo entre os dois lados define o contrato do escopo.
-
Lado do servidor — Define as permissões do escopo em um aplicativo conectado ao servidor Salesforce. Estas configurações determinam quais níveis de acesso os aplicativos clientes, como os aplicativos Mobile SDK, podem solicitar. Configure, no mínimo, as definições de OAuth do seu aplicativo conectado para que correspondam ao que está especificado em seu código. Na maioria dos aplicativos, refresh_token, web e api são suficientes.
-
Lado do cliente – Especifica as solicitações de escopo em seu aplicativo Mobile SDK. As solicitações de escopo do cliente devem ser um subconjunto das permissões de escopo do aplicativo conectado.
Configuração do lado do servidor
Você pode definir os valores de parâmetro do escopo a seguir.
Valor |
Descrição |
---|---|
api |
Permite acesso à conta do usuário atualmente conectado usando APIs, como a REST API e a Bulk API. Este valor também inclui a chatter_api, que permite acesso aos recursos API REST do Chatter. |
chatter_api |
Permite acesso somente aos recursos API REST do Chatter. |
custom_permissions |
Permite acesso às permissões personalizadas em uma organização associada ao aplicativo conectado e informa se o usuário atual tem cada uma das permissões ativadas. |
full |
Permite acesso a todos os dados que podem ser acessados pelo usuário conectado e abrange todos os outros escopos. full não retorna um token de atualização. É necessário solicitar explicitamente o escopo refresh_token para obter um token de atualização. |
id |
Permite acesso ao serviço de URL de identidade. É possível solicitar profile, email, address ou phone, individualmente, para obter o mesmo resultado obtido ao usar id; eles são sinônimos. |
openid |
Permite acesso ao identificador exclusivo do usuário atualmente registrado para aplicativos OpenID Connect. Use o escopo openid no fluxo de agente do usuário do OAuth 2.0 e no fluxo de autenticação do servidor Web do OAuth 2.0 para obter como retorno um token de ID assinado conforme as Especificações do OpenID Connect, além do token de acesso. |
refresh_token |
Permite que um token de atualização seja retornado quanto você estiver qualificado para receber um. Assim, o aplicativo pode interagir com os dados do usuário enquanto o usuário está offline e equivale à solicitação offline_access. |
visualforce |
Permite acesso às páginas Visualforce relacionadas ao cliente. Não permite o acesso a IUs do Salesforce padrão. |
web |
Permite a capacidade de usar o access_token na web e inclui visualforce, permitindo acesso a páginas do Visualforce relacionadas ao cliente. |
Configuração do lado do cliente
As seguintes regras regem a configuração do escopo para aplicativos Mobile SDK:
Escopo |
Configuração de aplicativo Mobile SDK |
---|---|
refresh_token |
Implicitamente solicitado pelo Mobile SDK para seu aplicativo. Não é necessário inclui-lo na lista de escopos do seu aplicativo. |
api |
Inclua se estiver realizando chamadas de API REST Salesforce (se aplica à maioria dos aplicativos). |
web |
Inclua se seu aplicativo acessa páginas definidas em uma organização Salesforce (para aplicativos que carreguem páginas da Web baseadas no Salesforce). |
full |
Inclua para solicitar todas as permissões. (O Mobile SDK solicita implicitamente o refresh_token para você.) |
chatter_api |
Inclua se seu aplicativo chamar APIs REST do Chatter. |
id |
(Não é necessário) |
visualforce |
Prefira usar web. |
Criar um aplicativo conectado
A criação de um aplicativo conectado é simples, mas exige direitos de administrador. Em sua própria organização Developer Edition ou Trailhead Playground, você recebe essas permissões automaticamente.
- Acesse Configuração no Trailhead Playground ou na organização Developer Edition.
- Execute uma das etapas a seguir.
- Se você está usando o Salesforce Classic, selecione Criar | Aplicativos, role até Aplicativos conectados e clique em Novo.
- Se está usando o Lightning Experience, selecione Aplicativos | Gerenciador de aplicativos e clique em Novo aplicativo conectado.
- Em Basic Information (Informações básicas), preencha o formulário da seguinte maneira:
-
Nome do aplicativo conectado: <o que você quiser; pode ter espaços>
-
API Name (Nome da API): aceite o valor sugerido
-
Contact Email (Email de contato): insira o seu endereço de email
- Em API (Habilitar configurações do OAuth), marque Habilitar configurações do OAuth.
- Defina URL de retorno de chamada como: <uma sequência de caracteres de URL, real ou fictícia, por exemplo, mysampleapp://auth/success>. Se o preenchimento automático oferecer uma sugestão, não a aceite. Em vez disso, digite a URL de retorno de chamada.
- Em Escopos do OAuth disponíveis, selecione:
-
Gerenciar dados de usuários por meio de APIs (api)
-
Gerenciar dados de usuários por meio de navegadores da Web (web)
-
Realizar solicitações a qualquer hora (refresh_token, offline_access)
- Clique em Adicionar. Esse conjunto mínimo de escopos funciona bem com a maioria dos aplicativos do Mobile SDK.
- Desabilite Require Secret for Web Server Flow (Exigir segredo para o fluxo do servidor da Web).
- Clique em Salvar.
Após salvar a configuração, observe os detalhes do seu novo aplicativo conectado.
- A URL de retorno de chamada e a Chave do cliente. Copie esses valores na sua configuração do aplicativo do Mobile SDK antes de distribuir o aplicativo.
- Os aplicativos do Mobile SDK não utilizam o segredo do cliente, de forma que você pode ignorar esse valor.
Agora que você sabe um pouco sobre a arquitetura e a segurança do Mobile SDK, é hora de praticar com ele. Você pode começar concluindo o desafio a seguir, que exige apenas uma organização Developer Edition ou Trailhead Playground. Depois, recomendamos que você conclua o projeto Configurar seu ambiente de desenvolvimento do Mobile SDK.
Recursos