Compartilhar via


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:

  1. Abra seu projeto do iOS no Xcode.
  2. Selecione Adicionar Dependências de Pacote... no menu Arquivo.
  3. 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:

  1. Abra as configurações do projeto. Na seção Identidade, insira o Identificador de pacote.

  2. Clique com o botão direito do mouse em Info.plist e selecione Abrir Como>Código-Fonte.

  3. No nó raiz dict, substitua Enter_the_bundle_Id_Here pela ID do Pacoteque você usou no portal. Observe o prefixo msauth. 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:

  1. Importe a biblioteca MSAL para o seu controlador de exibição adicionando import MSAL na parte superior da sua classe ViewController.

  2. Para adicionar uma variável de membro applicationContext à classe ViewController, inclua o seguinte código antes da função viewDidLoad():

    var applicationContext : MSALPublicClientApplication?
    var webViewParamaters : MSALWebviewParameters?
    

    O código declara duas variáveis: applicationContext (que armazena uma instância de MSALPublicClientApplication) e webViewParameters (que armazena uma instância de MSALWebviewParameters). 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.

  3. 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.

  4. 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 o MSALPublicClientApplication configurado. Se ocorrerem erros durante o processo, ele vai gerar um erro.

  5. 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 for contoso.onmicrosoft.com, use contoso. 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:

  1. 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.

  2. Abra o arquivo Configuration.swift:

    1. Atualize o valor da propriedade kAuthority para https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Substitua Enter_the_Custom_Domain_Here pelo domínio de URL personalizado e Enter_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.

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"
    
    }

Próximas etapas

Tutorial: Conectar usuários no aplicativo móvel iOS (Swift)