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 zeigt, wie eine native iOS- oder macOS-Anwendung Benutzer anmelden und ein Zugriffstoken abrufen kann, um die Microsoft Graph-API aufzurufen.

Die Schnellstartanleitung gilt für iOS- und macOS-Apps. Einige Schritte sind nur für iOS-Apps erforderlich und entsprechend gekennzeichnet.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
  • XCode 10 oder höher
  • iOS 10 oder höher
  • macOS 10.12 oder höher

Funktionsweise des Beispiels

Diagramm: Funktionsweise der in dieser Schnellstartanleitung generierten Beispiel-App.

Registrieren Ihrer Schnellstartanwendung

Tipp

Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.

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

  1. Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsentwickler an.
  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Symbol für Einstellungen im oberen Menü, um zum Mandanten zu wechseln, in dem Sie die Anwendung über das Menü Verzeichnisse + Abonnements registrieren möchten.
  3. Browsen Sie zu Identität>Anwendungen>App-Registrierungen.
  4. Wählen Sie Neue Registrierung aus.
  5. Geben Sie einen Namen für Ihre Anwendung ein. Benutzern Ihrer App wird wahrscheinlich dieser Namen angezeigt. Sie können ihn später ändern.
  6. Wählen Sie Registrieren.
  7. Wählen Sie unter Verwalten die Optionen Authentifizierung>Plattform hinzufügen>iOS aus.
  8. Geben Sie die Paket-ID für Ihre Anwendung ein. Die Paket-ID ist eine eindeutige Zeichenfolge, die Ihre Anwendung eindeutig identifiziert (z. B. com.<yourname>.identitysample.MSALMacOS). Notieren Sie sich den verwendeten Wert. Die iOS-Konfiguration ist auch bei macOS-Anwendungen anwendbar.
  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 Fertigaus.

Schritt 2: Herunterladen des Beispielprojekts

Schritt 3: Installieren von Abhängigkeiten

  1. Extrahieren Sie die ZIP-Datei.
  2. Navigieren Sie in einem Terminalfenster zu dem Ordner, der das heruntergeladene Codebeispiel enthält, und führen Sie pod install zum Installieren der MSAL-Bibliothek aus.

Schritt 4: Konfigurieren des Projekts

Wenn Sie weiter oben die erste Option 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, die mit „let kClientID“ beginnt, durch den folgenden Codeausschnitt. Vergessen Sie nicht, den Wert für kClientID mit der Client-ID zu aktualisieren, die Sie bei der Registrierung Ihrer App weiter oben in diesem Schnellstart gespeichert haben:

    let kClientID = "Enter_the_Application_Id_Here"
    
  3. Wenn Sie eine App für nationale Microsoft Entra-Clouds erstellen, ersetzen Sie die Zeile, die mit „let kGraphEndpoint“ und „let kAuthority“ beginnt, durch die richtigen Endpunkte. Verwenden Sie für globalen Zugriff die Standardwerte:

    let kGraphEndpoint = "https://graph.microsoft.com/"
    let kAuthority = "https://login.microsoftonline.com/common"
    
  4. Informationen zu anderen Endpunkten finden Sie hier. Verwenden Sie beispielsweise zum Ausführen der Schnellstartanleitung mit Microsoft Entra Deutschland Folgendes:

    let kGraphEndpoint = "https://graph.microsoft.de/"
    let kAuthority = "https://login.microsoftonline.de/common"
    
  5. Öffnen Sie die Projekteinstellungen. Geben Sie im Abschnitt Identität den Bündelbezeichner ein.

  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 Sie die App, und führen Sie sie aus.

Weitere Informationen

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

Abrufen von MSAL

MSAL (MSAL.framework) ist die Bibliothek zum Anmelden von Benutzern und zum Anfordern von Token, die für den Zugriff auf eine durch Microsoft Identity Platform geschützte API verwendet werden. Sie können Ihrer Anwendung MSAL mithilfe des folgenden Vorgangs hinzufügen:

$ vi Podfile

Fügen Sie der Podfile-Datei den folgenden Code (mit dem Ziel Ihres Projekts) hinzu:

use_frameworks!

target 'MSALiOS' do
   pod 'MSAL'
end

Ausführen des CocoaPods-Installationsbefehls:

pod install

MSAL initialisieren

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

import MSAL

Initialisieren Sie MSAL anschließend mit dem folgenden Code:

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

let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Hierbei gilt: BESCHREIBUNG
clientId Die Anwendungs-ID der in portal.azure.com registrierten Anwendung.
authority 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 zu verwenden, oder Ihren benutzerdefinierten Umleitungs-URI angeben.

Nur iOS: zusätzliche App-Anforderungen

Ihre App muss auch Folgendes in AppDelegate enthalten. Dadurch kann das MSAL SDK die Tokenantwort der Authentifizierungsbroker-App verarbeiten, wenn Sie die Authentifizierung ausführen.

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

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

Hinweis

Wenn Sie unter iOS 13 oder höher UISceneDelegate anstelle von UIApplicationDelegate übernehmen, platzieren Sie diesen Code stattdessen im scene:openURLContexts:-Rückruf (siehe Dokumentation von Apple). Wenn Sie sowohl UISceneDelegate als auch UIApplicationDelegate für die Kompatibilität mit älteren iOS-Versionen unterstützen, muss der MSAL-Rückruf für beide Optionen zur Verfügung gestellt 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 Anwendung einen LSApplicationQueriesSchemes Eintrag in Ihrer Info.plist neben dem CFBundleURLTypes haben. 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, die zum Abrufen von Token verwendet werden: acquireToken und acquireTokenSilent.

acquireToken: Interaktives Abrufen eines Tokens

In einigen Situationen müssen Benutzer mit 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. Beispiel:

  • Erstmaliges Anmelden von Benutzern bei der Anwendung.
  • Wenn ein Benutzer sein Kennwort zurücksetzt, muss er seine Anmeldeinformationen eingeben.
  • Wenn Ihre Anwendung zum ersten Mal Zugriff auf eine Ressource 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 */}
Hierbei gilt: BESCHREIBUNG
scopes Enthält die angeforderten Bereiche (d. h. [ "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 im Hintergrund

Apps sollten nicht verlangen, dass sich die Benutzer jedes Mal anmelden, wenn sie ein Token anfordern. Wenn sich der Benutzer bereits angemeldet hat, haben Apps durch diese Methode die Möglichkeit, Token im Hintergrund anzufordern.

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 */}
}
Hierbei gilt: BESCHREIBUNG
scopes Enthält die angeforderten Bereiche (d. h. [ "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 wird eine einzelne Kontoanwendung angezeigt. 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 möchten oder sich über Ihre Supportoptionen informieren möchten, finden Sie weitere Informationen unter Hilfe und Support für Entwickler.

Nächste Schritte

Fahren Sie mit dem Schritt-für-Schritt-Tutorial fort, in dem Sie eine iOS- oder macOS-App erstellen, aus der ein Zugriffstoken von der Microsoft Identity Platform abgerufen wird, das dann in der App verwendet wird, um die Microsoft Graph-API aufzurufen.