Inicie sessão em utilizadores e chame uma API Web protegida na aplicação iOS (Swift) de exemplo
Este guia demonstra como configurar um aplicativo móvel iOS de exemplo para entrar usuários e chamar uma API da Web protegida do ASP.NET Core.
Neste artigo, você executa as seguintes tarefas:
- Registe uma aplicação no centro de administração do Microsoft Entra.
- Adicione um URL de redirecionamento de plataforma.
- Habilite fluxos de clientes públicos.
- Atualize o arquivo de exemplo de código de configuração do iOS para usar sua própria ID Externa do Microsoft Entra para obter detalhes do locatário do cliente.
- Execute e teste o aplicativo móvel iOS de exemplo.
Pré-requisitos
Um locatário externo. Se ainda não tiver uma, inscreva-se para uma avaliação gratuita.
Um registro de API que expõe pelo menos um escopo (permissões delegadas) e uma função de aplicativo (permissão de aplicativo), como ToDoList.Read. Se ainda não o fez, siga as instruções para chamar uma API em um aplicativo móvel iOS de exemplo para ter uma API da Web ASP.NET Core protegida funcionalmente. Certifique-se de concluir as seguintes etapas:
- Registre um aplicativo de API da Web.
- Configure escopos de API.
- Configure funções de aplicativo.
- Configure declarações opcionais.
- Clone ou baixe uma API da Web de exemplo.
- Configure e execute uma API da Web de exemplo.
Registar uma aplicação
Para permitir que seu aplicativo entre usuários com o Microsoft Entra, a ID Externa do Microsoft Entra deve estar ciente do aplicativo criado. O registo da aplicação estabelece uma relação de confiança entre a aplicação e o Microsoft Entra. Quando você registra um aplicativo, o ID externo gera um identificador exclusivo conhecido como ID do aplicativo (cliente), um valor usado para identificar seu aplicativo ao criar solicitações de autenticação.
As etapas a seguir mostram como registrar seu aplicativo no centro de administração do Microsoft Entra:
Entre no centro de administração do Microsoft Entra como pelo menos um desenvolvedor de aplicativos.
Se tiver acesso a vários inquilinos, utilize o ícone
Definições no menu superior para mudar para o inquilino externo a partir do menu Diretórios + subscrições.
Navegue até Registros do aplicativo Identity>Applications>.
Selecione + Novo registo.
Na página Registar uma candidatura que aparece;
- Insira um Nome de aplicativo significativo que é exibido para os usuários do aplicativo, por exemplo, ciam-client-app.
- Em Tipos de conta suportados, selecione Contas somente neste diretório organizacional.
Selecione Registar.
O painel Visão geral do aplicativo é exibido após o registro bem-sucedido. Registre o ID do aplicativo (cliente) a ser usado no código-fonte do aplicativo.
Adicionar um URL de redirecionamento de plataforma
Para especificar o tipo de aplicativo para o registro do aplicativo, siga estas etapas:
- Em Gerir, selecione Autenticação.
- Na página Configurações da plataforma, selecione Adicionar uma plataforma e, em seguida, selecione a opção iOS / macOS.
- Insira o ID do pacote do seu projeto. Se você baixou o código de exemplo, esse valor é
com.microsoft.identitysample.ciam.MSALiOS
. - Selecione Configurar e salvar a Configuração MSAL que aparece no painel de configuração do iOS / macOS para que você possa inseri-la quando configurar seu aplicativo mais tarde.
- Selecionar Concluído.
Habilitar o fluxo público de clientes
Para identificar seu aplicativo como um cliente público, siga estas etapas:
Em Gerir, selecione Autenticação.
Em Configurações avançadas, para Permitir fluxos de clientes públicos, selecione Sim.
Selecione Guardar para guardar as alterações.
Conceder consentimento do administrador
Depois de registrar seu aplicativo, ele recebe a permissão User.Read . No entanto, como o locatário é um locatário externo, os próprios usuários do cliente não podem consentir com essa permissão. Você, como administrador, deve consentir com essa permissão em nome de todos os usuários no locatário:
Na página Registros de aplicativos, selecione o aplicativo que você criou (como ciam-client-app) para abrir a página Visão geral.
Em Gerenciar, selecione Permissões de API.
- Selecione Conceder consentimento de administrador para <o nome> do seu inquilino e, em seguida, selecione Sim.
- Selecione Atualizar e verifique se Concedido para <o nome> do locatário aparece em Status da permissão.
Conceder permissões de API da Web para o aplicativo de exemplo do iOS
Depois de registrar o aplicativo cliente, a API da Web e expor a API criando escopos, você pode configurar as permissões do cliente para a API seguindo estas etapas:
Na página Registros de aplicativos, selecione o aplicativo que você criou (como ciam-client-app) para abrir a página Visão geral.
Em Gerenciar, selecione Permissões de API.
Em Permissões configuradas, selecione Adicionar uma permissão.
Selecione a guia APIs que minha organização usa .
Na lista de APIs, selecione a API, como ciam-ToDoList-api.
Selecione a opção Permissões delegadas.
Na lista de permissões, selecione ToDoList.Read, ToDoList.ReadWrite (use a caixa de pesquisa, se necessário).
Selecione o botão Adicionar permissões .
Neste ponto, você atribuiu as permissões corretamente. No entanto, como o locatário é locatário de um cliente, os próprios usuários consumidores não podem consentir com essas permissões. Para resolver isso, você, como administrador, deve consentir com essas permissões em nome de todos os usuários no locatário:
Selecione Conceder consentimento de administrador para <o nome> do seu inquilino e, em seguida, selecione Sim.
Selecione Atualizar e verifique se Concedido para <o nome> do locatário aparece em Status para ambas as permissões.
Na lista Permissões configuradas, selecione as permissões ToDoList.Read e ToDoList.ReadWrite, uma de cada vez, e copie o URI completo da permissão para uso posterior. O URI de permissão total é semelhante a
api://{clientId}/{ToDoList.Read}
ouapi://{clientId}/{ToDoList.ReadWrite}
.
Exemplo de clonagem de aplicativo móvel iOS
Para obter o aplicativo de exemplo, você pode cloná-lo do GitHub ou baixá-lo como um arquivo .zip.
Para clonar o exemplo, abra um prompt de comando e navegue até onde deseja criar o projeto e digite o seguinte comando:
git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-ios-sample.git
Configurar o aplicativo móvel iOS de exemplo
Para habilitar a autenticação e o acesso aos recursos da API da Web, configure o exemplo seguindo estas etapas:
No Xcode, abra o projeto que você clonou.
Abra o arquivo /MSALiOS/Configuration.swift .
Encontre o espaço reservado:
Enter_the_Application_Id_Here
e substitua-o pelo ID do aplicativo (cliente) do aplicativo que você registrou anteriormente.Enter_the_Redirect_URI_Here
e substitua-o pelo valor de kRedirectUri no arquivo de configuração da Microsoft Authentication Library (MSAL) que você baixou anteriormente quando adicionou a URL de redirecionamento da plataforma.Enter_the_Protected_API_Full_URL_Here
e substitua-o pelo URL da sua API Web. O Enter_the_Protected_API_Full_URL_Here deve incluir a URL base (a URL da API da Web implantada) e o ponto de extremidade (/api/todolist) para nossa API da Web ASP.NET.Enter_the_Protected_API_Scopes_Here
e substitua-o pelos escopos registrados em Conceder permissões de API da Web para o aplicativo de exemplo do iOS.Enter_the_Tenant_Subdomain_Here
e substitua-o pelo subdomínio Directory (locatário). Por exemplo, se o domínio principal do locatário forcontoso.onmicrosoft.com
, usecontoso
. Se não souber o subdomínio do inquilino, saiba como ler os detalhes do inquilino.
Você configurou o aplicativo e ele está pronto para ser executado.
Execute o aplicativo de exemplo do iOS e chame a API da Web
Para criar e executar seu aplicativo, siga estas etapas:
- Para criar e executar seu código, selecione Executar no menu Produto no Xcode. Após uma compilação bem-sucedida, o Xcode iniciará o aplicativo de exemplo no simulador.
- Selecione Adquirir token interativamente para solicitar um token de acesso.
- Selecione API - Execute GET para chamar a API Web principal do ASP.NET configurada anteriormente. Uma chamada bem-sucedida para a API da Web retorna HTTP
200
, enquanto HTTP403
significa acesso não autorizado.