Teilen über


Schnellstart: Anmelden von Benutzern und Aufrufen von Microsoft Graph aus einer iOS- oder macOS-App

In dieser Schnellstartanleitung laden Sie ein Codebeispiel herunter und führen es aus, das veranschaulicht, wie eine systemeigene iOS- oder macOS-Anwendung Benutzer anmelden und ein Zugriffstoken abrufen kann, um die Microsoft Graph-API aufzurufen.

Die Schnellstartanleitung gilt sowohl für iOS- als auch für macOS-Apps. Einige Schritte sind nur für iOS-Apps erforderlich und werden als solche angegeben.

Voraussetzungen

Funktionsweise des Beispiels

Diagramm, das zeigt, wie die von dieser Schnellstartanleitung generierte Beispiel-App funktioniert.

Registrieren Ihrer Schnellstart-App

Führen Sie die folgenden Schritte aus, um Ihre Anwendung zu registrieren und die Registrierungsinformationen der App manuell zu Ihrer Lösung hinzuzufügen:

  1. Melden Sie sich beim Microsoft Entra Admin-Center als mindestens ein Anwendungsentwickleran.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Symbol Einstellungen im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.
  3. Navigieren Sie zu Identität>Anwendungen>App-Registrierungen.
  4. Wählen Sie Neue Registrierung aus.
  5. Geben Sie einen Namen für Ihre Anwendung ein. Benutzer Ihrer App sehen diesen Namen möglicherweise, und Sie können ihn später ändern.
  6. Wählen Sie Registrieren.
  7. Wählen Sie unter Verwaltendie Option Authentifizierung>aus und klicken Sie aufPlattform hinzufügen>iOS.
  8. Geben Sie den Bundle-Bezeichner für Ihre Anwendung ein. Der Bündelbezeichner ist eine eindeutige Zeichenfolge, die Ihre Anwendung eindeutig identifiziert, z. B. com.<yourname>.identitysample.MSALMacOS. Notieren Sie sich den Wert, den Sie verwenden. Beachten Sie, dass die iOS-Konfiguration auch für macOS-Anwendungen gilt.
  9. Wählen Sie Konfigurieren aus, und speichern Sie die Details der MSAL-Konfiguration zur späteren Verwendung in diesem Schnellstart.
  10. Wählen Sie Fertig aus.

Schritt 2: Herunterladen des Beispielprojekts

Schritt 3: Installieren von Abhängigkeiten

  1. Extrahieren Sie die ZIP-Datei.
  2. Navigieren Sie in einem Terminalfenster zum Ordner mit dem heruntergeladenen Codebeispiel, und führen Sie pod install aus, um die neueste MSAL-Bibliothek zu installieren.

Schritt 4: Konfigurieren Des Projekts

Wenn Sie option 1 oben ausgewählt haben, können Sie diese Schritte überspringen.

  1. Öffnen Sie das Projekt in XCode.

  2. Bearbeiten Sie ViewController.swift, und ersetzen Sie die Zeile beginnend mit "let kClientID" durch den folgenden Codeausschnitt. Denken Sie daran, den Wert für kClientID mit der Client-ID zu aktualisieren, die Sie gespeichert haben, wenn Sie Ihre App weiter oben in dieser Schnellstartanleitung registriert haben:

    let kClientID = "Enter_the_Application_Id_Here"
    
  3. Wenn Sie eine App für Microsoft Entra national cloudserstellen, ersetzen Sie die Zeile beginnend mit "let kGraphEndpoint" und "let kAuthority" durch die richtigen Endpunkte. Verwenden Sie für den globalen Zugriff Standardwerte:

    let kGraphEndpoint = "https://graph.microsoft.com/"
    let kAuthority = "https://login.microsoftonline.com/common"
    
  4. Informationen zu anderen Endpunkten finden Sie hier. Wenn Sie beispielsweise die Schnellstartanleitung mit Microsoft Entra Deutschland ausführen möchten, verwenden Sie Folgendes:

    let kGraphEndpoint = "https://graph.microsoft.de/"
    let kAuthority = "https://login.microsoftonline.de/common"
    
  5. Öffnen Sie die Projekteinstellungen. Geben Sie im Abschnitt Identity den Bundle Identifierein.

  6. Klicken Sie mit der rechten Maustaste auf Info.plist, und wählen Sie Öffnen als>Quellcode aus.

  7. Ersetzen Sie unter dem Stammknoten „dict“ Enter_the_bundle_Id_Here durch den Wert für *Bündel-ID_, den Sie im Portal verwendet haben. Beachten Sie das Präfix msauth. in der Zeichenfolge.

    <key>CFBundleURLTypes</key>
    <array>
       <dict>
          <key>CFBundleURLSchemes</key>
          <array>
             <string>msauth.Enter_the_Bundle_Id_Here</string>
          </array>
       </dict>
    </array>
    
  8. Erstellen und ausführen Sie die App!

Weitere Informationen

Lesen Sie diese Abschnitte, um mehr über diese Schnellstartanleitung zu erfahren.

Abrufen von MSAL

MSAL (MSAL.framework) ist die Bibliothek, die zum Anmelden von Benutzern und Anfordern von Token verwendet wird, um auf eine API zuzugreifen, die von Microsoft Identity Platform geschützt ist. Sie können IHRER Anwendung MSAL mithilfe des folgenden Prozesses hinzufügen:

$ vi Podfile

Fügen Sie folgendes zu dieser Poddatei hinzu (mit dem Ziel Ihres Projekts):

use_frameworks!

target 'MSALiOS' do
   pod 'MSAL'
end

Ausführen des CocoaPods-Installationsbefehls:

pod install

MSAL initialisieren

Sie können den Verweis für MSAL hinzufügen, indem Sie den folgenden Code hinzufügen:

import MSAL

Initialisieren Sie DANN MSAL mithilfe des folgenden Codes:

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

let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Wo: Beschreibung
clientId Die Anwendungs-ID der in portal.azure.com registrierten Anwendung.
authority Die Microsoft Identity Platform. In den meisten Fällen ist dies https://login.microsoftonline.com/common.
redirectUri Der Umleitungs-URI der Anwendung. Sie können "nil" übergeben, um den Standardwert oder den benutzerdefinierten Umleitungs-URI zu verwenden.

Nur für iOS, zusätzliche App-Anforderungen

Ihre App muss auch Folgendes in AppDelegate enthalten. Auf diese Weise kann MSAL SDK die Tokenantwort von der Auth-Broker-App verarbeiten, wenn Sie die Authentifizierung durchführen.

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

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

Anmerkung

Wenn Sie unter iOS 13+ UISceneDelegate anstelle von UIApplicationDelegateübernehmen, platzieren Sie diesen Code stattdessen in die scene:openURLContexts:-Rückrufmethode (siehe die Apple-Dokumentation). Wenn Sie sowohl UISceneDelegate als auch UIApplicationDelegate zur Kompatibilität mit älteren iOS-Versionen unterstützen, muss der MSAL-Callback an beiden Stellen platziert werden.

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

Schließlich muss Ihre App einen LSApplicationQueriesSchemes Eintrag in Ihrer Info.plist neben dem CFBundleURLTypeshaben. Im Beispiel ist dies enthalten.

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

Anmelden von Benutzern und Anfordern von Token

MSAL verfügt über zwei Methoden zum Abrufen von Token: acquireToken und acquireTokenSilent.

acquireToken: Interaktives Abrufen eines Tokens

In einigen Situationen müssen Benutzer mit der Microsoft Identity Platform interagieren. In diesen Fällen muss der Endbenutzer möglicherweise sein Konto auswählen, seine Anmeldeinformationen eingeben oder den Berechtigungen Ihrer App zustimmen. Zum Beispiel

  • Wenn sich Benutzer zum ersten Mal bei der Anwendung anmelden
  • Wenn ein Benutzer sein Kennwort zurücksetzt, muss er seine Anmeldeinformationen eingeben.
  • Wenn Ihre Anwendung den Zugriff auf eine Ressource zum ersten Mal anfordert
  • Wenn MFA- oder andere Richtlinien für bedingten Zugriff erforderlich sind
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Wo: Beschreibung
scopes Enthält die angeforderten Bereiche (d. a. [ "user.read" ] für Microsoft Graph oder [ "<Application ID URL>/scope" ] für benutzerdefinierte Web-APIs (api://<Application ID>/access_as_user))

acquireTokenSilent: Abrufen eines Zugriffstokens lautlos

Apps sollten ihre Benutzer nicht jedes Mal anmelden müssen, wenn sie ein Token anfordern. Wenn sich der Benutzer bereits angemeldet hat, ermöglicht diese Methode Apps das automatische Anfordern von Token.

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 */}
}
Wo: Beschreibung
scopes Enthält die angeforderten Bereiche (d. a. [ "user.read" ] für Microsoft Graph oder [ "<Application ID URL>/scope" ] für benutzerdefinierte Web-APIs (api://<Application ID>/access_as_user))
account Das Konto, für das ein Token angefordert wird. In dieser Schnellstartanleitung geht es um eine einzelne Kontoanwendung. Wenn Sie eine App mit mehreren Konten erstellen möchten, müssen Sie die Logik zum Identifizieren des gewünschten Kontos für Tokenanforderungen mit accountsFromDeviceForParameters:completionBlock: definieren und den richtigen accountIdentifier übergeben.

Hilfe und Support

Wenn Sie Hilfe benötigen, ein Problem melden oder mehr über Ihre Supportoptionen erfahren möchten, lesen Sie Hilfe und Support für Entwickler.

Nächste Schritte

Fahren Sie mit dem schrittweisen Lernprogramm fort, in dem Sie eine iOS- oder macOS-App erstellen, die ein Zugriffstoken von der Microsoft Identity Platform abruft und sie zum Aufrufen der Microsoft Graph-API verwendet.