Autenticação e autorização no Serviço de Aplicativo do Azure para aplicativos móveis

Este artigo descreve como a autenticação e a autorização funcionam ao desenvolver aplicativos móveis nativos com um back-end do Serviço de Aplicativo. O Serviço de Aplicativo fornece autenticação e autorização integradas para que os aplicativos móveis possam conectar usuários sem alterar nenhum código no Serviço de Aplicativo. Ele fornece uma maneira fácil de proteger o aplicativo e trabalhar com dados por usuário.

Aviso

Este artigo aborda a v4.2.0 do SDK do Cliente de Aplicativos Móveis do Azure. A versão atual usa um novo mecanismo de autenticação e não oferece suporte à Autenticação e Autorização do Serviço de Aplicativo do Azure da mesma maneira.

Para obter informações sobre como a autenticação e a autorização funcionam no Serviço de Aplicativo, consulte Autenticação e autorização no Serviço de Aplicativo do Azure.

Autenticação com SDK de provedor

Depois que a configuração for totalmente concluída no Serviço de Aplicativo, será possível modificar os clientes móveis para entrar com Serviço de Aplicativo. Há duas abordagens aqui:

  • Utilize um SDK que um provedor de identidade específico publica para estabelecer a identidade e obtenha acesso ao Serviço de Aplicativo.
  • Use uma única linha de código para permitir que o SDK do cliente dos Aplicativos Móveis possa fazer os usuários entrar.

Dica

A maioria dos aplicativos deve usar um SDK de provedor para obter uma experiência mais consistente quando os usuários conectam, para usar o suporte à atualização de token e para obter outros benefícios especificados pelo provedor.

Quando você usar um provedor de SDK, os usuários poderão entrar e obter uma experiência mais rigidamente integrada ao sistema operacional em que o aplicativo está sendo executado. Esse método também fornece um token de provedor e algumas informações sobre o usuário no cliente, o que facilita muito o uso de APIs gráficas e a personalização da experiência do usuário. Esse método é conhecido como "fluxo do cliente" ou "fluxo direcionado pelo cliente", pois o código no cliente faz a entrada dos usuários.

Depois que um token do provedor é obtido, ele precisa ser enviado ao Serviço de Aplicativo para validação. O Serviço de Aplicativo do Azure valida o token. Depois, o serviço cria um token para o cliente. O SDK do cliente dos Aplicativos Móveis tem métodos auxiliares para gerenciar essa troca e anexar automaticamente o token a todas as solicitações para o back-end do aplicativo. Você também pode manter uma referência ao token do provedor.

Observação

Algumas plataformas, como Windows (WPF), SOMENTE funcionarão com um fluxo direcionado pelo cliente. Outras trabalharão bem igualmente com o fluxo do servidor e do cliente. Se a plataforma funcionar apenas com o fluxo direcionado ao cliente, o guia de início rápido vai mostrar isso.

Para obter mais informações sobre o fluxo de autenticação, consulte Fluxo de autenticação do Serviço de Aplicativo.

Autenticação sem SDK de provedor

Se você não quer configurar um provedor de SDK, deixe que o Serviço de Aplicativo do Azure processe a credencial para você. O SDK do cliente dos Aplicativos Móveis do Azure abrirá uma exibição da Web para o provedor da sua escolha e fará a entrada do usuário. Esse método é chamado de "fluxo de servidor" ou "fluxo direcionado pelo servidor", pois o servidor gerencia o processo de entrada dos usuários. O SDK do cliente nunca recebe o token do provedor.

Enviar um token do fluxo direcionado pelo cliente

Ao usar o fluxo direcionado pelo cliente, primeiro obtenha as informações relevantes de que o Serviço de Aplicativo do Azure precisa para validar o token. Na maioria dos casos, ele será um token de acesso. Para obter mais informações, confira a Documentação do Serviço de Aplicativo do Azure.

Depois, você pode criar o objeto JSON apropriado. Por exemplo, se você estiver usando a MSAL para criar um fluxo direcionado pelo cliente no .NET em um aplicativo WPF, poderá usar o seguinte código:

var requestBody = new JObject(new JProperty("access_token", authResult.AccessToken));
var userInfo = await mobileClient.login("aad", requestBody);

O corpo da solicitação precisa corresponder às expectativas conforme a descrição na documentação.