Configurar a autenticação em um aplicativo Android de exemplo usando o Azure AD B2C

Este artigo usa um aplicativo Android de exemplo (Kotlin e Java) para ilustrar como adicionar a autenticação do Azure Ative Directory B2C (Azure AD B2C) aos seus aplicativos móveis.

Descrição geral

OpenID Connect (OIDC) é um protocolo de autenticação que é construído em OAuth 2.0. Você pode usar o OIDC para conectar usuários com segurança a um aplicativo. Este exemplo de aplicativo móvel usa a Biblioteca de Autenticação da Microsoft (MSAL) com o fluxo PKCE do código de autorização OIDC. O MSAL é uma biblioteca fornecida pela Microsoft que simplifica a adição de suporte de autenticação e autorização a aplicativos móveis.

O fluxo de entrada envolve as seguintes etapas:

  1. Os usuários abrem o aplicativo e selecionam entrar.
  2. O aplicativo abre o navegador do sistema do dispositivo móvel e inicia uma solicitação de autenticação para o Azure AD B2C.
  3. Os utilizadores inscrevem-se ou iniciam sessão, repõem a palavra-passe ou iniciam sessão com uma conta social.
  4. Depois que os usuários entrarem com êxito, o Azure AD B2C retorna um código de autorização para o aplicativo.
  5. O aplicativo executa as seguintes ações:
    1. Ele troca o código de autorização para um token de ID, token de acesso e token de atualização.
    2. Ele lê as declarações de token de ID.
    3. Ele armazena os tokens em um cache na memória para uso posterior.

Visão geral do registro do aplicativo

Para permitir que seu aplicativo entre com o Azure AD B2C e chame uma API Web, registre dois aplicativos no diretório do Azure AD B2C.

  • O registro do aplicativo móvel permite que seu aplicativo entre com o Azure AD B2C. Durante o registro do aplicativo, especifique o URI de redirecionamento. O URI de redirecionamento é o ponto de extremidade para o qual os usuários são redirecionados pelo Azure AD B2C depois de se autenticarem com o Azure AD B2C. O processo de registro do aplicativo gera uma ID do aplicativo, também conhecida como ID do cliente, que identifica exclusivamente seu aplicativo móvel (por exemplo, ID do aplicativo: 1).

  • O registro da API da Web permite que seu aplicativo chame uma API da Web protegida. O registro expõe as permissões da API da Web (escopos). O processo de registro do aplicativo gera uma ID de aplicativo, que identifica exclusivamente sua API da Web (por exemplo, ID de aplicativo: 2). Conceda ao seu aplicativo móvel (ID do aplicativo: 1) permissões para os escopos da API da Web (ID do aplicativo: 2).

O registro de aplicativos e a arquitetura de aplicativos são ilustrados nos diagramas a seguir:

Diagram of the mobile app with web API call registrations and tokens.

Chamada para uma API da Web

Depois que a autenticação é concluída, os usuários interagem com o aplicativo, que invoca uma API da Web protegida. A API da Web usa autenticação de token de portador. O token de portador é o token de acesso que o aplicativo obteve do Azure AD B2C. O aplicativo passa o token no cabeçalho de autorização da solicitação HTTPS.

Authorization: Bearer <access token>

Se o escopo do token de acesso não corresponder aos escopos da API da Web, a biblioteca de autenticação obterá um novo token de acesso com os escopos corretos.

O fluxo de saída

O fluxo de saída envolve as seguintes etapas:

  1. A partir da aplicação, os utilizadores terminam sessão.
  2. O aplicativo limpa seus objetos de sessão e a biblioteca de autenticação limpa seu cache de token.
  3. O aplicativo leva os usuários ao ponto de extremidade de saída do Azure AD B2C para encerrar a sessão do Azure AD B2C.
  4. Os usuários são redirecionados de volta para o aplicativo.

Pré-requisitos

Um computador que esteja executando:

Etapa 1: Configurar o fluxo de usuários

Quando os usuários tentam entrar em seu aplicativo, o aplicativo inicia uma solicitação de autenticação para o ponto de extremidade de autorização por meio de um fluxo de usuário. O fluxo do usuário define e controla a experiência do usuário. Depois que os usuários concluem o fluxo de usuários, o Azure AD B2C gera um token e, em seguida, redireciona os usuários de volta para seu aplicativo.

Se ainda não tiver feito isso, crie um fluxo de usuário ou uma política personalizada. Repita as etapas para criar três fluxos de usuário separados da seguinte maneira:

  • Um fluxo de usuário combinado de login e inscrição , como susi. Esse fluxo de usuário também suporta a experiência Esqueceu sua senha .
  • Um fluxo de usuário de edição de perfil, como edit_profile.
  • Um fluxo de usuário de redefinição de senha, como reset_password.

O Azure AD B2C precede o nome do fluxo de B2C_1_ usuário. Por exemplo, susi passa a B2C_1_susi.

Passo 2: Registar aplicações móveis

Crie o registro do aplicativo móvel e do aplicativo da API da Web e especifique os escopos da sua API da Web.

Etapa 2.1: Registrar o aplicativo de API da Web

Para criar o registro do aplicativo de API da Web (ID do aplicativo: 2), siga estas etapas:

  1. Inicie sessão no portal do Azure.

  2. Verifique se você está usando o diretório que contém seu locatário do Azure AD B2C. Selecione o ícone Diretórios + assinaturas na barra de ferramentas do portal.

  3. Nas configurações do Portal | Página Diretórios + assinaturas , localize seu diretório do Azure AD B2C na lista Nome do diretório e selecione Alternar.

  4. No portal do Azure, procure e selecione Azure AD B2C.

  5. Selecione Registos de aplicações e, em seguida, selecione Novo registo.

  6. Em Name, insira um nome para o aplicativo (por exemplo, my-api1). Deixe os valores padrão para URI de redirecionamento e tipos de conta suportados.

  7. Selecione Registar.

  8. Depois que o registro do aplicativo for concluído, selecione Visão geral.

  9. Registre o valor da ID do aplicativo (cliente) para uso posterior ao configurar o aplicativo Web.

    Screenshot that demonstrates how to get a web A P I application I D.

Etapa 2.2: Configurar escopos de aplicativo de API Web

  1. Selecione o aplicativo my-api1 que você criou (ID do aplicativo: 2) para abrir a página Visão geral.

  2. Em Gerenciar, selecione Expor uma API.

  3. Ao lado de URI da ID do aplicativo, selecione o link Definir. Substitua o valor padrão (GUID) por um nome exclusivo (por exemplo, tasks-api) e selecione Salvar.

    Quando seu aplicativo Web solicita um token de acesso para a API da Web, ele deve adicionar esse URI como o prefixo para cada escopo que você define para a API.

  4. Em Escopos definidos por esta API, selecione Adicionar um escopo.

  5. Para criar um escopo que defina o acesso de leitura à API:

    1. Em Nome do escopo, insira tasks.read.
    2. Para Nome de exibição do consentimento do administrador, insira API de acesso de leitura às tarefas.
    3. Para Descrição do consentimento do administrador, insira Permite acesso de leitura à API de tarefas.
  6. Selecione Adicionar escopo.

  7. Selecione Adicionar um escopo e adicione um escopo que defina o acesso de gravação à API:

    1. Em Nome do escopo, insira tasks.write.
    2. Para Nome de exibição do consentimento do administrador, digite Acesso de gravação à API de tarefas.
    3. Para Descrição do consentimento do administrador, insira Permite acesso de gravação à API de tarefas.
  8. Selecione Adicionar escopo.

Passo 2.3: Registar a aplicação móvel

Para criar o registro do aplicativo móvel, faça o seguinte:

  1. Inicie sessão no portal do Azure.

  2. Selecione Registos de aplicações e, em seguida, selecione Novo registo.

  3. Em Nome, insira um nome para o aplicativo (por exemplo, android-app1).

  4. Em Tipos de conta suportados, selecione Contas em qualquer provedor de identidade ou diretório organizacional (para autenticar usuários com fluxos de usuários).

  5. Em Redirecionar URI, selecione Cliente público/nativo (móvel ou desktop) e, na caixa URL, insira um dos seguintes URIs:

    • Para a amostra de Kotlin: msauth://com.azuresamples.msalandroidkotlinapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D
    • Para o exemplo Java: msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D
  6. Selecione Registar.

  7. Depois que o registro do aplicativo for concluído, selecione Visão geral.

  8. Registre o ID do aplicativo (cliente) para uso posterior, quando você configurar o aplicativo móvel.

    Screenshot highlighting the Android application ID

Etapa 2.4: Conceder permissões ao aplicativo móvel para a API da Web

Para conceder permissões ao seu aplicativo (ID do aplicativo: 1), siga estas etapas:

  1. Selecione Registos de aplicações e, em seguida, selecione a aplicação que criou (ID da aplicação: 1).

  2. Em Gerenciar, selecione Permissões de API.

  3. Em Permissões configuradas, selecione Adicionar uma permissão.

  4. Selecione a guia Minhas APIs .

  5. Selecione a API (ID do aplicativo: 2) à qual o aplicativo Web deve ter acesso. Por exemplo, digite my-api1.

  6. Em Permissão, expanda tarefas e selecione os escopos definidos anteriormente (por exemplo, tasks.read e tasks.write).

  7. Selecione Adicionar permissões.

  8. Selecione Conceder consentimento de administrador para <o nome> do seu inquilino.

  9. Selecione Yes (Sim).

  10. Selecione Atualizar e verifique se Concedido para ... aparece em Status para ambos os escopos.

  11. Na lista Permissões configuradas, selecione seu escopo e copie o nome completo do escopo.

    Screenshot of the configured permissions pane, showing that read access permissions are granted.

Etapa 3: obter o exemplo de aplicativo móvel Android

Efetue um dos seguintes procedimentos:

  • Faça o download de um destes exemplos:

    Extraia o arquivo de .zip de exemplo para sua pasta de trabalho.

  • Clone o aplicativo móvel Android de exemplo do GitHub.

    git clone https://github.com/Azure-Samples/ms-identity-android-kotlin
    

Etapa 4: Configurar a API Web de exemplo

Este exemplo adquire um token de acesso com os escopos relevantes que o aplicativo móvel pode usar para uma API da Web. Para chamar uma API da Web a partir do código, faça o seguinte:

  1. Use uma API da Web existente ou crie uma nova. Para obter mais informações, consulte Habilitar autenticação em sua própria API Web usando o Azure AD B2C.
  2. Altere o código de exemplo para chamar uma API da Web.

Etapa 5: Configurar o aplicativo móvel de exemplo

Abra o projeto de exemplo com o Android Studio ou outro editor de código e, em seguida, abra o arquivo /app/src/main/res/raw/auth_config_b2c.json .

O arquivo de configuração auth_config_b2c.json contém informações sobre seu provedor de identidade do Azure AD B2C. O aplicativo móvel usa essas informações para estabelecer uma relação de confiança com o Azure AD B2C, entrar e sair de usuários, adquirir tokens e validá-los.

Atualize as seguintes propriedades de configurações do aplicativo:

Key valor
client_id O ID do aplicativo móvel da etapa 2.3.
redirect_uri O aplicativo móvel redireciona o URI da etapa 2.3.
autoridades A autoridade é uma URL que indica um diretório do qual o MSAL pode solicitar tokens. Use o seguinte formato: https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-sign-in-sign-up-policy>. Substitua <your-tenant-name> pelo nome do locatário do Azure AD B2C. Em seguida, substitua <your-sign-in-sign-up-policy> pelos fluxos de usuário ou pela política personalizada que você criou na etapa 1.

Abra a B2CConfiguration classe e atualize os seguintes membros da classe:

Key valor
Políticas A lista de fluxos de usuário ou políticas personalizadas que você criou na etapa 1.
azureAdB2CHostName A primeira parte do nome do locatário do Azure AD B2C (por exemplo, https://contoso.b2clogin.com).
tenantName Seu nome completo de locatário do Azure AD B2C (por exemplo, contoso.onmicrosoft.com).
âmbitos Os escopos da API da Web que você criou na etapa 2.4.

Etapa 6: executar e testar o aplicativo móvel

  1. Crie e execute o projeto.

  2. No canto superior esquerdo, selecione o ícone de hambúrguer (também chamado de ícone de menu recolhido), como mostrado aqui:

    Screenshot highlighting the hamburger, or collapsed menu, icon.

  3. No painel esquerdo, selecione Modo B2C.

    Screenshot highlighting the

  4. Selecione Executar fluxo de usuário.

    Screenshot highlighting the

  5. Inscreva-se ou entre com sua conta local ou social do Azure AD B2C.

  6. Após a autenticação bem-sucedida, você verá seu nome para exibição no painel do modo B2C.

    Screenshot showing a successful authentication, with signed-in user and policy displayed.

Próximos passos

Aprenda a: