Autenticação e autorização no Serviço de Aplicações do Azure para aplicações 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 seus aplicativos móveis possam entrar usuários sem alterar nenhum código no Serviço de Aplicativo. Ele fornece uma maneira fácil de proteger seu 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 do Serviço de Aplicativo do Azure e à Autorização 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 do provedor

Depois que tudo estiver configurado no Serviço de Aplicativo, você poderá modificar os clientes móveis para entrar com o Serviço de Aplicativo. Há duas abordagens aqui:

  • Use um SDK que um determinado provedor de identidade publica para estabelecer a identidade e, em seguida, obter acesso ao Serviço de Aplicativo.
  • Use uma única linha de código para que o SDK do cliente de Aplicativos Móveis possa entrar nos usuários.

Gorjeta

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

Quando você usa um SDK de provedor, os usuários podem entrar em uma experiência que se integra mais firmemente com o sistema operacional no qual o aplicativo está sendo executado. Esse método também fornece um token de provedor e algumas informações do usuário no cliente, o que torna muito mais fácil consumir APIs gráficas e personalizar a experiência do usuário. Esse método é conhecido como "fluxo do cliente" ou "fluxo direcionado ao cliente" porque o código no cliente entra nos usuários.

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

Nota

Algumas plataformas, como o Windows (WPF), SÓ funcionarão com um fluxo direcionado ao cliente. Outros funcionarão igualmente bem com o fluxo de servidor e cliente. Se a plataforma só funciona com fluxo direcionado ao cliente, o guia de início rápido 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 do provedor

Se não quiser configurar um SDK de provedor, você pode permitir que o Serviço de Aplicativo do Azure manipule a entrada para você. O SDK do cliente de Aplicativos Móveis do Azure abrirá uma exibição da Web para o provedor de sua escolha e entrará no usuário. Esse método é chamado de "fluxo do servidor" ou "fluxo direcionado ao servidor" porque o servidor gerencia o processo que entra nos usuários. O SDK do cliente nunca recebe o token do provedor.

Enviando um token do fluxo direcionado ao cliente

Ao usar o fluxo direcionado ao 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, o token será um token de acesso. Para obter mais informações, consulte a documentação do Serviço de Aplicativo do Azure.

Em seguida, você pode criar o objeto JSON apropriado. Por exemplo, se você estiver usando o MSAL para fazer um fluxo direcionado ao cliente no .NET em um aplicativo WPF, você pode usar o seguinte código:

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

O organismo requerente deve corresponder às expectativas estabelecidas na documentação.