Tutorial: Preparar seu aplicativo iOS (Swift) para autenticação
Este é o segundo tutorial da série de tutoriais que demonstra como adicionar a Biblioteca de Autenticação da Microsoft (MSAL) para iOS e macOS ao seu aplicativo iOS Swift.
Neste tutorial, você;
- Adicione a estrutura MSAL a um aplicativo iOS (Swift).
- Crie uma instância do SDK.
Pré-requisitos
- Xcode.
- Se ainda não o fez, siga as instruções em Tutorial: Registar e configurar a aplicação móvel iOS (Swift) e registar uma aplicação no seu inquilino externo. Certifique-se de concluir as seguintes etapas:
- Registe uma candidatura.
- Adicione um URL de redirecionamento de plataforma.
- Habilite o fluxo público de clientes.
- Permissão delegada ao Microsoft Graph.
- Projeto iOS (Swift).
Adicionar a estrutura MSAL a um aplicativo iOS (Swift)
O SDK de autenticação MSAL é usado para integrar a autenticação em seus aplicativos usando OAuth2 padrão e OpenID Connect. Ele permite que você entre usuários ou aplicativos com identidades da Microsoft. Para adicionar o MSAL ao seu projeto iOS (Swift), siga estas etapas:
- Abra seu projeto iOS no Xcode.
- Selecione Adicionar dependências do pacote... no menu Arquivo.
- Digite
https://github.com/AzureAD/microsoft-authentication-library-for-objc
como o URL do pacote e escolha Adicionar pacote
Atualizar o identificador do pacote
No ecossistema Apple, um Identificador de Pacote é um identificador exclusivo para um aplicativo. Para atualizar o identificador de pacote em seu projeto, execute estas etapas:
Abra as configurações do projeto. Na seção Identidade, insira o Identificador do pacote.
Clique com o botão direito do mouse em Info.plist e selecione Abrir como>código-fonte.
Sob o nó raiz dict, substitua
Enter_the_bundle_Id_Here
pelo Bundle Id que você usou no portal. Observe o prefixomsauth.
na cadeia de caracteres.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Criar instância do SDK
Para criar instância MSAL em seu projeto, execute estas etapas:
Importe a biblioteca MSAL para o controlador de visualização adicionando
import MSAL
na parte superior da suaViewController
classe.Adicione uma
applicationContext
variável membro à sua classe ViewController adicionando o seguinte código imediatamente antes daviewDidLoad()
função:var applicationContext : MSALPublicClientApplication? var webViewParamaters : MSALWebviewParameters?
O código declara duas variáveis:
applicationContext
, que armazena uma instância deMSALPublicClientApplication
, e , que armazenawebViewParameters
uma instância deMSALWebviewParameters
.MSALPublicClientApplication
é uma classe fornecida pelo MSAL para lidar com aplicativos cliente públicos. OMSALWebviewParameters
é uma classe fornecida pela MSAL que define parâmetros para configurar a exibição da Web usada durante o processo de autenticação.Adicione o seguinte código à função view
viewDidLoad()
:do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
O código tenta inicializar o MSAL, manipulando quaisquer erros que ocorram durante o processo. Se ocorrer um erro, ele atualiza o log com os detalhes do erro.
Adicione o seguinte código que cria
initMSAL()
a função, que inicializa o MSAL:func initMSAL() throws { guard let authorityURL = URL(string: Configuration.kAuthority) else { self.updateLogging(text: "Unable to create authority URL") return } let authority = try MSALCIAMAuthority(url: authorityURL) let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID, redirectUri: Configuration.kRedirectUri, authority: authority) self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration) }
Este código inicializa o MSAL para iOS. Primeiro, ele tenta criar uma URL para a autoridade usando a cadeia de caracteres Configuration.kAuthority fornecida. Se for bem-sucedido, ele criará um objeto de autoridade MSAL com base nessa URL. Em seguida, ele configura o com o ID do cliente fornecido, o URI de redirecionamento e a
MSALPublicClientApplication
autoridade. Se todas as configurações estiverem configuradas corretamente, ele inicializa o contexto do aplicativo com o arquivoMSALPublicClientApplication
. Se ocorrer algum erro durante o processo, ele lança um erro.Crie o arquivo Configuration.swift e adicione as seguintes configurações:
import Foundation @objcMembers class Configuration { static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here" // Update the below to your client ID you received in the portal. static let kClientID = "Enter_the_Application_Id_Here" static let kRedirectUri = "Enter_the_Redirect_URI_Here" static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here" static let kScopes = ["Enter_the_Protected_API_Scopes_Here"] static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com" }
Este código de configuração Swift define uma classe chamada
Configuration
e está marcado com@objcMembers
. Ele inclui constantes estáticas para vários parâmetros de configuração relacionados a uma configuração de autenticação. Esses parâmetros incluem o subdomínio do locatário, a ID do cliente, o URI de redirecionamento, o ponto de extremidade da API protegida e os escopos. Essas constantes de configuração devem ser atualizadas com valores apropriados específicos para a configuração do aplicativo.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 MSAL que você baixou anteriormente quando adicionou a URL de redirecionamento da plataforma.Enter_the_Protected_API_Scopes_Here
e substitua-o pelos escopos registrados anteriormente. Se você não registrou nenhum escopo, pode deixar essa lista de escopo vazia.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.
Usar domínio de URL personalizado (opcional)
Use um domínio personalizado para marcar totalmente a URL de autenticação. Do ponto de vista do usuário, os usuários permanecem no seu domínio durante o processo de autenticação, em vez de serem redirecionados para ciamlogin.com nome de domínio.
Use as seguintes etapas para usar um domínio personalizado:
Use as etapas em Habilitar domínios de URL personalizados para aplicativos em locatários externos para habilitar o domínio de URL personalizado para seu locatário externo.
Abra o arquivo Configuration.swift :
- Atualize o
kAuthority
valor da propriedade para https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. SubstituaEnter_the_Custom_Domain_Here
pelo seu domínio de URL personalizado eEnter_the_Tenant_ID_Here
pelo seu ID de inquilino. Se não tiver o ID do inquilino, saiba como ler os detalhes do inquilino.
- Atualize o
Depois de fazer as alterações no arquivo Configuration.swift , se o domínio de URL personalizado estiver login.contoso.com e o ID do locatário for aaaabbbb-0000-cccc-1111-dddd2222eeee, o arquivo deverá ser semelhante ao seguinte trecho:
import Foundation
@objcMembers
class Configuration {
static let kTenantSubdomain = "login.contoso.com"
// Update the below to your client ID you received in the portal.
static let kClientID = "Enter_the_Application_Id_Here"
static let kRedirectUri = "Enter_the_Redirect_URI_Here"
static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
Próximos passos
Tutorial: Iniciar sessão de utilizadores na aplicação móvel iOS (Swift)