Tutorial: Preparar seu aplicativo iOS (Swift) para autenticação
Este é o segundo tutorial da série de tutoriais que demonstra como adicionar a MSAL (Biblioteca de Autenticação da Microsoft) para iOS e macOS ao aplicativo iOS Swift.
Neste tutorial, você aprenderá:
- Adicione a estrutura MSAL a um aplicativo iOS (Swift).
- Criar uma instância do SDK.
Pré-requisitos
- Xcode.
- Se você ainda não o fez, siga as instruções no Tutorial: Registrar e configurar o aplicativo móvel iOS (Swift) e registre um aplicativo no seu locatário externo. Certifique-se de concluir as seguintes etapas:
- Registre um aplicativo.
- Adicione uma URL de redirecionamento de plataforma.
- Habilite o fluxo de cliente público.
- Permissão delegada para o Microsoft Graph.
- Projeto do iOS (Swift).
Adicionar a estrutura MSAL a um aplicativo iOS (Swift)
O SDK de autenticação da MSAL é usado para integrar a autenticação em seus aplicativos usando o OAuth2 padrão e o OpenID Connect. Ele permite que você conecte usuários ou aplicativos com identidades da Microsoft. Para adicionar a MSAL ao projeto do iOS (Swift), siga estas etapas:
- Abra seu projeto do iOS no Xcode.
- Selecione Adicionar Dependências de Pacote... no menu Arquivo.
- Insira
https://github.com/AzureAD/microsoft-authentication-library-for-objc
como a URL do Pacote e escolha Adicionar Pacote
Atualizar o Identificador de Pacote
No ecossistema da Apple, um Identificador de Pacote é um identificador exclusivo para um aplicativo. Para atualizar o Identificador de Pacote em seu projeto, siga estas etapas:
Abra as configurações do projeto. Na seção Identidade, insira o Identificador de pacote.
Clique com o botão direito do mouse em Info.plist e selecione Abrir Como>Código-Fonte.
No nó raiz dict, substitua
Enter_the_bundle_Id_Here
pela ID do Pacoteque 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 uma instância MSAL em seu projeto, siga estas etapas:
Importe a biblioteca MSAL para o seu controlador de exibição adicionando
import MSAL
na parte superior da sua classeViewController
.Para adicionar uma variável de membro
applicationContext
à classe ViewController, inclua o seguinte código antes da funçãoviewDidLoad()
:var applicationContext : MSALPublicClientApplication? var webViewParamaters : MSALWebviewParameters?
O código declara duas variáveis:
applicationContext
(que armazena uma instância deMSALPublicClientApplication
) ewebViewParameters
(que armazena uma instância deMSALWebviewParameters
).MSALPublicClientApplication
é uma classe fornecida pela MSAL para lidar com aplicativos cliente públicos.MSALWebviewParameters
é 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
viewDidLoad()
de exibição:do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
O código tenta inicializar a MSAL, tratando todos os erros que ocorrem durante o processo. Se ocorrer um erro, ele atualizará o log com os detalhes do erro.
Adicione o seguinte código que cria a função
initMSAL()
, que inicializa a 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) }
Esse código inicializa a MSAL para iOS. Primeiro, ele tenta criar uma URL para a autoridade usando a cadeia de caracteres Configuration.kAuthority fornecida. Se tiver êxito, ele criará um objeto de autoridade MSAL com base nessa URL. Em seguida, ele configura o
MSALPublicClientApplication
com a ID do cliente, o URI de redirecionamento e a autoridade fornecidos. Se todas as configurações estiverem configuradas corretamente, ele inicializará o contexto do aplicativo com oMSALPublicClientApplication
configurado. Se ocorrerem erros durante o processo, ele vai gerar 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" }
Esse código de configuração Swift define uma classe chamada
Configuration
e é 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 de locatário, a ID do cliente, o URI de redirecionamento, o ponto de extremidade de API protegido e os escopos. Essas constantes de configuração devem ser atualizadas com valores apropriados específicos para a instalação do aplicativo.Localize o espaço reservado:
Enter_the_Application_Id_Here
e substitua pela ID do Aplicativo (cliente) referente ao aplicativo registrado antes.Enter_the_Redirect_URI_Here
e substitua-o pelo valor de kRedirectUri no arquivo de configuração da 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 tiver registrado nenhum escopo, poderá deixar essa lista de escopo vazia.Enter_the_Tenant_Subdomain_Here
e substitua-o pelo subdomínio do diretório (locatário). Por exemplo, se o domínio primário do locatário forcontoso.onmicrosoft.com
, usecontoso
. Se você não sabe o subdomínio do seu locatário, confira como ler os detalhes do locatário.
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 o nome de domínio ciamlogin.com.
Use as etapas a seguir para usar um domínio personalizado:
Use as etapas em Habilitar domínios de URL personalizados para aplicativos em locatários externos para habilitar URL de domínio personalizado para seu locatário externo.
Abra o arquivo Configuration.swift:
- Atualize o valor da propriedade
kAuthority
para https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. SubstituaEnter_the_Custom_Domain_Here
pelo domínio de URL personalizado eEnter_the_Tenant_ID_Here
pela ID do locatário. Se você não tiver o nome do locatário, saiba como ler os detalhes do locatário.
- Atualize o valor da propriedade
Depois de fazer as alterações no arquivo Configuration.swift, se a URL de domínio personalizado for login.contoso.com e sua ID de locatário for aaaabbbb-0000-cccc-1111-dddd2222eeee, o arquivo deverá ser semelhante ao seguinte snippet:
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"
}