Partilhar via


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:

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

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

  2. Clique com o botão direito do mouse em Info.plist e selecione Abrir como>código-fonte.

  3. Sob o nó raiz dict, substitua Enter_the_bundle_Id_Here pelo Bundle Id que 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 instância MSAL em seu projeto, execute estas etapas:

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

  2. Adicione uma applicationContext variável membro à sua classe ViewController adicionando o seguinte código imediatamente antes da viewDidLoad() função:

    var applicationContext : MSALPublicClientApplication?
    var webViewParamaters : MSALWebviewParameters?
    

    O código declara duas variáveis: applicationContext, que armazena uma instância de MSALPublicClientApplication, e , que armazena webViewParametersuma instância de MSALWebviewParameters. MSALPublicClientApplication é uma classe fornecida pelo MSAL para lidar com aplicativos cliente públicos. O 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 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.

  4. 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 arquivo MSALPublicClientApplication. Se ocorrer algum erro durante o processo, ele lança 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"
    
    }
    

    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_Heree substitua-o pelo ID do aplicativo (cliente) do aplicativo que você registrou anteriormente.
    • Enter_the_Redirect_URI_Heree 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 for contoso.onmicrosoft.com, use contoso. 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:

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

  2. Abra o arquivo Configuration.swift :

    1. Atualize o kAuthority valor da propriedade para https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Substitua Enter_the_Custom_Domain_Here pelo seu domínio de URL personalizado e Enter_the_Tenant_ID_Here pelo seu ID de inquilino. Se não tiver o ID do inquilino, saiba como ler os detalhes do inquilino.

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)