Configurar a autenticação numa aplicação Swift para iOS de exemplo com Azure AD B2C
Este artigo utiliza uma aplicação Swift iOS de exemplo para ilustrar como adicionar autenticação do Azure Active Directory B2C (Azure AD B2C) às suas aplicações móveis.
Descrição Geral
O OpenID Connect (OIDC) é um protocolo de autenticação criado no OAuth 2.0. Pode utilizar o OIDC para iniciar sessão de forma segura dos utilizadores numa aplicação. Este exemplo de aplicação móvel utiliza a Biblioteca de Autenticação da Microsoft (MSAL) com a Chave de Prova do código de autorização OIDC para o fluxo do Code Exchange (PKCE). O MSAL é uma biblioteca fornecida pela Microsoft que simplifica a adição de suporte de autenticação e autorização a aplicações móveis.
O fluxo de início de sessão envolve os seguintes passos:
- Os utilizadores abrem a aplicação e selecionam o início de sessão.
- A aplicação abre o browser de sistema do dispositivo móvel e inicia um pedido de autenticação para Azure AD B2C.
- Os utilizadores inscrevem-se ou iniciam sessão, repõem a palavra-passe ou iniciam sessão com uma conta social.
- Depois de os utilizadores iniciarem sessão com êxito, Azure AD B2C devolve um código de autorização à aplicação.
- A aplicação efetua as seguintes ações:
- Troca o código de autorização por um token de ID, token de acesso e token de atualização.
- Lê as afirmações do token de ID.
- Armazena os tokens numa cache dentro da memória para utilização posterior.
Descrição geral do registo de aplicações
Para permitir que a sua aplicação inicie sessão com Azure AD B2C e chame uma API Web, registe duas aplicações no diretório B2C Azure AD:
O registo de aplicações móveis permite que a sua aplicação inicie sessão com Azure AD B2C. Durante o registo da aplicação, especifique o URI de redirecionamento. O URI de redirecionamento é o ponto final para o qual os utilizadores são redirecionados pelo Azure AD B2C depois de terem sido autenticados com Azure AD B2C. O processo de registo de aplicações gera um ID de aplicação, também conhecido como ID de cliente, que identifica exclusivamente a sua aplicação móvel (por exemplo, ID da Aplicação: 1).
O registo da API Web permite que a sua aplicação chame uma API Web protegida. O registo expõe as permissões da API Web (âmbitos). O processo de registo de aplicações gera um ID de aplicação, que identifica exclusivamente a API Web (por exemplo, ID da Aplicação: 2). Conceda permissões à sua aplicação móvel (ID da Aplicação: 1) aos âmbitos da API Web (ID da Aplicação: 2).
O registo e a arquitetura da aplicação são ilustrados nos seguintes diagramas:
Chamar para uma API Web
Após a conclusão da autenticação, os utilizadores interagem com a aplicação, que invoca uma API Web protegida. A API Web utiliza a autenticação de tokens de portador . O token de portador é o token de acesso que a aplicação obteve do Azure AD B2C. A aplicação transmite o token no cabeçalho de autorização do pedido HTTPS.
Authorization: Bearer <access token>
Se o âmbito do token de acesso não corresponder aos âmbitos da API Web, a biblioteca de autenticação obtém um novo token de acesso com os âmbitos corretos.
O fluxo de início de sessão
O fluxo de início de sessão envolve os seguintes passos:
- A partir da aplicação, os utilizadores terminem sessão.
- A aplicação limpa os objetos de sessão e a biblioteca de autenticação limpa a respetiva cache de tokens.
- A aplicação direciona os utilizadores para o ponto final de fim de sessão Azure AD B2C para terminar o Azure AD sessão B2C.
- Os utilizadores são redirecionados novamente para a aplicação.
Pré-requisitos
Um computador em execução:
- Xcode 13 ou posterior.
- Gestor de dependências do CocoaPods para projetos Swift e Objective-C Cocoa.
Passo 1: Configurar o fluxo de utilizador
Quando os utilizadores tentam iniciar sessão na sua aplicação, a aplicação inicia um pedido de autenticação para o ponto final de autorização através de um fluxo de utilizador. O fluxo de utilizador define e controla a experiência do utilizador. Depois de os utilizadores concluirem o fluxo de utilizador, Azure AD B2C gera um token e, em seguida, redireciona os utilizadores de volta para a sua aplicação.
Se ainda não o fez, crie um fluxo de utilizador ou uma política personalizada. Repita os passos para criar três fluxos de utilizador separados da seguinte forma:
- Um fluxo de utilizador de início de sessão e inscrição combinado, como
susi
. Este fluxo de utilizador também suporta a experiência Esqueci-me da palavra-passe . - Um fluxo de utilizador de edição de perfil , como
edit_profile
. - Um fluxo de utilizador de reposição de palavra-passe , como
reset_password
.
Azure AD B2C é anexado B2C_1_
ao nome do fluxo de utilizador. Por exemplo, susi
torna-se B2C_1_susi
.
Passo 2: Registar aplicações móveis
Crie a aplicação móvel e o registo de aplicações da API Web e especifique os âmbitos da sua API Web.
Passo 2.1: Registar a aplicação API Web
Para criar o registo da aplicação API Web (ID da Aplicação: 2), siga estes passos:
Inicie sessão no portal do Azure.
Certifique-se de que está a utilizar o diretório que contém a sua Azure AD inquilino B2C. Selecione o ícone Diretórios + subscrições na barra de ferramentas do portal.
Nas definições do portal | Página Diretórios + subscrições, localize a sua Azure AD diretório B2C na lista Nome do diretório e, em seguida, selecione Mudar.
Na portal do Azure, procure e selecione Azure AD B2C.
Selecione Registos de aplicações e, em seguida, selecione Novo registo.
Em Nome, introduza um nome para a aplicação (por exemplo, my-api1). Deixe os valores predefinidos para URI de Redirecionamento e Tipos de conta suportados.
Selecione Registar.
Depois de concluído o registo da aplicação, selecione Descrição geral.
Registe o valor de ID da Aplicação (cliente) para utilização posterior quando configurar a aplicação Web.
Passo 2.2: Configurar âmbitos da aplicação API Web
Selecione a aplicação my-api1 que criou (ID da Aplicação: 2) para abrir a página Descrição Geral .
Em Gerir, selecione Expor uma API.
Junto ao URI do ID da Aplicação, selecione a ligação Definir . Substitua o valor predefinido (GUID) por um nome exclusivo (por exemplo, tasks-api) e, em seguida, selecione Guardar.
Quando a sua aplicação Web pedir um token de acesso para a API Web, deve adicionar este URI como o prefixo para cada âmbito que definir para a API.
Em Âmbitos definidos por esta API, selecione Adicionar um âmbito.
Para criar um âmbito que define o acesso de leitura à API:
- Em Nome do âmbito, introduza tasks.read.
- Para Administração nome a apresentar de consentimento, introduza Acesso de leitura à API de tarefas.
- Para Administração descrição do consentimento, introduza Permite o acesso de leitura à API de tarefas.
Selecione Adicionar âmbito.
Selecione Adicionar um âmbito e, em seguida, adicione um âmbito que defina o acesso de escrita à API:
- Em Nome do âmbito, introduza tasks.write.
- Para Administração nome a apresentar de consentimento, introduza Acesso de escrita à API de tarefas.
- Para Administração descrição do consentimento, introduza Permite o acesso de escrita à API de tarefas.
Selecione Adicionar âmbito.
Passo 2.3: Registar a aplicação móvel
Para criar o registo da aplicação móvel, faça o seguinte:
- Inicie sessão no Portal do Azure.
- Selecione Registos de aplicações e, em seguida, selecione Novo registo.
- Em Nome, introduza um nome para a aplicação (por exemplo, iOs-app1).
- Em Tipos de conta suportados, selecione Contas em qualquer fornecedor de identidade ou diretório organizacional (para autenticar utilizadores com fluxos de utilizador).
- Em URI de Redirecionamento, selecione Cliente público/nativo (ambiente de trabalho móvel & ) e, em seguida, na caixa URL, introduza
msauth.com.microsoft.identitysample.MSALiOS://auth
. - Selecione Registar.
- Depois de concluído o registo da aplicação, selecione Descrição geral.
- Registe o ID da Aplicação (cliente) para utilização posterior, quando configurar a aplicação móvel.
Passo 2.4: Conceder as permissões da aplicação móvel para a API Web
Para conceder permissões à sua aplicação (ID da Aplicação: 1), siga estes passos:
Selecione Registos de aplicações e, em seguida, selecione a aplicação que criou (ID da Aplicação: 1).
Em Gerir, selecione Permissões de API.
Em Permissões configuradas, selecione Adicionar uma permissão.
Selecione o separador As Minhas APIs .
Selecione a API (ID da Aplicação: 2) à qual deve ser concedido acesso à aplicação Web. Por exemplo, introduza my-api1.
Em Permissão, expanda tarefas e, em seguida, selecione os âmbitos que definiu anteriormente (por exemplo, tasks.read e tasks.write).
Selecione Adicionar permissões.
Selecione Conceder consentimento do administrador para <o seu nome> de inquilino.
Selecione Yes (Sim).
Selecione Atualizar e, em seguida, verifique se Concedido para ... aparece em Estado para ambos os âmbitos.
Na lista Permissões configuradas , selecione o âmbito e, em seguida, copie o nome completo do âmbito.
Passo 3: Configurar a API Web de exemplo
Este exemplo adquire um token de acesso com os âmbitos relevantes que a aplicação móvel pode utilizar para uma API Web. Para chamar uma API Web a partir de código, faça o seguinte:
- Utilize uma API Web existente ou crie uma nova. Para obter mais informações, veja Ativar a autenticação na sua própria API Web com o Azure AD B2C.
- Altere o código de exemplo para chamar uma API Web.
- Depois de configurar a API Web, copie o URI do ponto final da API Web. Irá utilizar o ponto final da API Web nos próximos passos.
Dica
Se não tiver uma API Web, ainda pode executar este exemplo. Neste caso, a aplicação devolve o token de acesso, mas não poderá chamar a API Web.
Passo 4: obter o exemplo de aplicação móvel para iOS
Transfira o ficheiro .zip ou clone a aplicação Web de exemplo a partir do repositório do GitHub.
git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal
Utilize o CocoaPods para instalar a biblioteca MSAL. Numa janela de terminal, aceda à pasta raiz do projeto. Esta pasta contém o ficheiro podfile . Execute o seguinte comando:
pod install
Abra a área
MSALiOS.xcworkspace
de trabalho com xcode.
Passo 5: Configurar a aplicação móvel de exemplo
Abra o ficheiro ViewController.swift . Os membros da ViewController
classe contêm informações sobre a sua Azure AD fornecedor de identidade B2C. A aplicação móvel utiliza estas informações para estabelecer uma relação de confiança com Azure AD B2C, iniciar e terminar sessão dos utilizadores, adquirir tokens e validá-los.
Atualize os seguintes membros da classe:
Chave | Valor |
---|---|
kTenantName | O seu Azure AD nome de inquilino completo do inquilino B2C (por exemplo, contoso.onmicrosoft.com ). |
kAuthorityHostName | A primeira parte do seu Azure AD nome do inquilino B2C (por exemplo, contoso.b2clogin.com ). |
kClientID | O ID da aplicação móvel do passo 2.3. |
kRedirectUri | O URI de redirecionamento da aplicação móvel do passo 2.3, msauth.com.microsoft.identitysample.MSALiOS://auth . |
kSignupOrSigninPolicy | O fluxo de utilizador de inscrição ou início de sessão ou a política personalizada que criou no passo 1. |
kEditProfilePolicy | O fluxo de utilizador de edição de perfil ou a política personalizada que criou no passo 1. |
kGraphURI | (Opcional) O ponto final da API Web que criou no passo 3 (por exemplo, https://contoso.azurewebsites.net/hello ). |
kScopes | Os âmbitos da API Web que criou no passo 2.4. |
Passo 6: Executar e testar a aplicação móvel
Crie e execute o projeto com um simulador de um dispositivo iOS ligado.
Selecione Iniciar Sessão e, em seguida, inscreva-se ou inicie sessão com a sua conta Azure AD B2C local ou social.
Após a autenticação bem-sucedida, verá o seu nome a apresentar na barra de navegação.
Passos seguintes
Aprenda a: