Partilhar via


Guia de início rápido: inicie sessão para utilizadores e chame o Microsoft Graph numa aplicação iOS ou macOS

Neste guia de início rápido, deve baixar e executar um exemplo de código que demonstra como uma aplicação nativa iOS ou macOS pode autenticar utilizadores e obter um token de acesso para aceder à API do Microsoft Graph.

O início rápido aplica-se a aplicações iOS e macOS. Algumas etapas são necessárias apenas para aplicativos iOS e serão indicadas como tal.

Pré-requisitos

Como funciona a amostra

Diagrama mostrando como funciona o aplicativo de exemplo gerado por este início rápido.

Registar a sua aplicação de início rápido

Para registrar seu aplicativo e adicionar as informações de registro do aplicativo à sua solução manualmente, siga estas etapas:

  1. Entre no centro de administração do Microsoft Entra como no mínimo um Desenvolvedor de Aplicações.
  2. Se tiver acesso a vários inquilinos, utilize o ícone Definições no menu superior para mudar para o inquilino no qual pretende registar a aplicação a partir do menu Diretórios + subscrições.
  3. Navegue até Identidade>Aplicações>Registos de aplicações.
  4. Selecione Novo registo.
  5. Introduza um Nome para a sua aplicação. Os usuários do seu aplicativo podem ver esse nome e você pode alterá-lo mais tarde.
  6. Selecione Registo.
  7. Em Gerenciar, selecione Autenticação >Adicionar plataforma>iOS.
  8. Insira o Identificador de Pacote para seu aplicativo. O identificador de pacote é uma cadeia de caracteres exclusiva que identifica exclusivamente seu aplicativo, por exemplo, com.<yourname>.identitysample.MSALMacOS. Anota o valor que usas. Observe que a configuração do iOS também é aplicável a aplicativos macOS.
  9. Selecione Configurar e guarde os detalhes da Configuração do MSAL para usar mais tarde neste início rápido.
  10. Selecione Concluído.

Etapa 2: Baixe o projeto de exemplo

Etapa 3: Instalar dependências

  1. Extraia o arquivo zip.
  2. Em uma janela de terminal, navegue até a pasta com o exemplo de código baixado e execute pod install para instalar a biblioteca MSAL mais recente.

Etapa 4: Configurar seu projeto

Se selecionou a Opção 1 acima, pode ignorar estes passos.

  1. Abra o projeto no XCode.

  2. Edite ViewController.swift e substitua a linha que começa com 'let kClientID' pelo seguinte trecho de código. Lembre-se de atualizar o valor para kClientID com o clientID que você salvou quando registrou seu aplicativo anteriormente neste início rápido:

    let kClientID = "Enter_the_Application_Id_Here"
    
  3. Se estiveres a criar uma aplicação para nuvens nacionais do Microsoft Entra, substitui a linha que começa por 'let kGraphEndpoint' e 'let kAuthority' por endpoints corretos. Para acesso global, use valores padrão:

    let kGraphEndpoint = "https://graph.microsoft.com/"
    let kAuthority = "https://login.microsoftonline.com/common"
    
  4. Outros endpoints estão documentados aqui. Por exemplo, para executar o início rápido com o Microsoft Entra Alemanha, use o seguinte:

    let kGraphEndpoint = "https://graph.microsoft.de/"
    let kAuthority = "https://login.microsoftonline.de/common"
    
  5. Abra as configurações do projeto. Na secção Identity, introduza o Bundle Identifier.

  6. Clique com o botão direito Info.plist e selecione Abrir como>Código-Fonte.

  7. Sob o nó raiz do dicionário, substitua Enter_the_bundle_Id_Here pelo Bundle Id que utilizou 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>
    
  8. Crie e execute o aplicativo!

Mais informações

Leia estas seções para saber mais sobre este início rápido.

Obtenha o MSAL

MSAL (MSAL.framework) é a biblioteca usada para autenticar utilizadores e solicitar tokens utilizados para aceder a uma API protegida pela plataforma de identidade da Microsoft. Você pode adicionar MSAL ao seu aplicativo usando o seguinte processo:

$ vi Podfile

Adicione o seguinte a este podfile (com o destino do seu projeto):

use_frameworks!

target 'MSALiOS' do
   pod 'MSAL'
end

Execute o comando de instalação do CocoaPods:

pod install

Inicializar MSAL

Você pode adicionar a referência para MSAL adicionando o seguinte código:

import MSAL

Em seguida, inicialize o MSAL usando o seguinte código:

let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)

let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Onde: Descrição
clientId O ID da aplicação registada no portal.azure.com
authority A plataforma de identidade da Microsoft. Na maioria dos casos, isso será https://login.microsoftonline.com/common
redirectUri O URI de redirecionamento do aplicativo. Você pode passar 'nil' para usar o valor padrão ou seu URI de redirecionamento personalizado.

Apenas para iOS, requisitos adicionais de aplicativos

A sua aplicação também deve ter o seguinte no seu AppDelegate. Isso permite que o SDK do MSAL manipule a resposta de token do aplicativo de agente de autenticação quando você faz autenticação.

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

    return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}

Observação

No iOS 13+, se você adotar UISceneDelegate em vez de UIApplicationDelegate, coloque esse código no retorno de chamada scene:openURLContexts: (Consulte documentação da Apple). Se suportar tanto o UISceneDelegate como o UIApplicationDelegate para compatibilidade com versões mais antigas do iOS, o callback do MSAL deve ser colocado em ambos os lugares.

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {

   guard let urlContext = URLContexts.first else {
      return
   }

   let url = urlContext.url
   let sourceApp = urlContext.options.sourceApplication

   MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}

Por fim, o seu aplicativo deve ter uma entrada LSApplicationQueriesSchemes no arquivoInfo.plist do, ao lado do CFBundleURLTypes. A amostra vem com isso incluído.

<key>LSApplicationQueriesSchemes</key>
<array>
   <string>msauthv2</string>
   <string>msauthv3</string>
</array>

Iniciar sessão dos utilizadores & para solicitar tokens

MSAL tem dois métodos usados para adquirir tokens: acquireToken e acquireTokenSilent.

acquireToken: Obtenha um token interativamente

Algumas situações exigem que os usuários interajam com a plataforma de identidade da Microsoft. Nesses casos, o usuário final pode ser solicitado a selecionar sua conta, inserir suas credenciais ou consentir com as permissões do seu aplicativo. Por exemplo

  • A primeira vez que os usuários entram no aplicativo
  • Se um utilizador redefinir a palavra-passe, terá de introduzir as suas credenciais
  • Quando seu aplicativo está solicitando acesso a um recurso pela primeira vez
  • Quando MFA ou outras políticas de Acesso Condicional são necessárias
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Onde: Descrição
scopes Contém os escopos que estão sendo solicitados (ou seja, [ "user.read" ] para Microsoft Graph ou [ "<Application ID URL>/scope" ] para APIs da Web personalizadas (api://<Application ID>/access_as_user))

acquireTokenSilent: Obtenha um token de acesso silenciosamente

Os aplicativos não devem exigir que seus usuários entrem sempre que solicitarem um token. Se o usuário já tiver entrado, esse método permitirá que os aplicativos solicitem tokens silenciosamente.

self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in

   guard let account = currentAccount else {
      return
   }

   let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
   self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Onde: Descrição
scopes Contém os escopos que estão sendo solicitados (ou seja, [ "user.read" ] para Microsoft Graph ou [ "<Application ID URL>/scope" ] para APIs da Web personalizadas (api://<Application ID>/access_as_user))
account A conta para a qual um token está sendo solicitado. Esta introdução rápida é sobre uma aplicação de conta única. Se você quiser criar um aplicativo com várias contas, precisará definir a lógica para identificar qual conta usar para solicitações de token usando accountsFromDeviceForParameters:completionBlock: e passando o accountIdentifier correto

Ajuda e suporte

Se precisar de ajuda, quiser comunicar um problema ou quiser saber mais sobre as suas opções de suporte, consulte Ajuda e suporte para programadores.

Próximos passos

Vá para o tutorial passo a passo no qual você cria um aplicativo iOS ou macOS que obtém um token de acesso da plataforma de identidade da Microsoft e o usa para chamar a API do Microsoft Graph.