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
- Ein Azure-Konto mit einem aktiven Abonnement. Erstellen Sie ein kostenloses Konto.
- XCode 10+
- iOS 10+
- macOS 10.12+
Funktionsweise des Beispiels
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:
- Melden Sie sich beim Microsoft Entra Admin-Center als mindestens ein Anwendungsentwickleran.
- 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.
- Navigieren Sie zu Identität>Anwendungen>App-Registrierungen.
- Wählen Sie Neue Registrierung aus.
- 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.
- Wählen Sie Registrieren.
- Wählen Sie unter Verwaltendie Option Authentifizierung>aus und klicken Sie aufPlattform hinzufügen>iOS.
- 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. - Wählen Sie Konfigurieren aus, und speichern Sie die Details der MSAL-Konfiguration zur späteren Verwendung in diesem Schnellstart.
- Wählen Sie Fertig aus.
Schritt 2: Herunterladen des Beispielprojekts
- Codebeispiel für iOS- herunterladen
- Codebeispiel für macOS- herunterladen
Schritt 3: Installieren von Abhängigkeiten
- Extrahieren Sie die ZIP-Datei.
- 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.
Öffnen Sie das Projekt in XCode.
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"
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"
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"
Öffnen Sie die Projekteinstellungen. Geben Sie im Abschnitt Identity den Bundle Identifierein.
Klicken Sie mit der rechten Maustaste auf Info.plist, und wählen Sie Öffnen als>Quellcode aus.
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äfixmsauth.
in der Zeichenfolge.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
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 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 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.