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

Willkommen! Dies ist wahrscheinlich nicht die Seite, die Sie erwartet haben. Während wir an einer Korrektur arbeiten, sollten Sie über diesen Link zum richtigen Artikel gelangen:

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

Wir entschuldigen uns für die Unannehmlichkeiten und bitten Sie um Geduld, während wir an einer Lösung arbeiten.

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

Zeigt, wie die in diesem Schnellstart generierte Beispiel-App funktioniert

Schritt 1: Konfigurieren der Anwendung

Fügen Sie einen mit dem Authentifizierungsbroker kompatiblen Umleitungs-URI hinzu, damit das Codebeispiel für diese Schnellstartanleitung funktioniert.

Bereits konfiguriert: Ihre Anwendung ist mit diesen Attributen konfiguriert.

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: Ihre App ist konfiguriert und betriebsbereit

Wir haben das Projekt mit Werten Ihrer App-Eigenschaften konfiguriert. Es ist nun ausführungsbereit.

Hinweis

Enter_the_Supported_Account_Info_Here

  1. 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"
    
  2. 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"
    
  3. Öffnen Sie die Projekteinstellungen. Geben Sie im Abschnitt Identität den Wert für Bundle Identifier (Paket-ID) ein, den Sie im Portal angegeben haben.

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

  5. 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>
    
  6. 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 ([ "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.