Konfigurieren der Authentifizierung in einer iOS Swift-Beispielanwendung mithilfe von Azure Active Directory B2C
In diesem Artikel wird anhand einer iOS Swift-Beispielwebanwendung veranschaulicht, wie Sie Ihren mobilen Anwendungen die Authentifizierung mithilfe von Azure Active Directory B2C (Azure AD B2C) hinzufügen.
Übersicht
OpenID Connect (OIDC) ist ein Authentifizierungsprotokoll, das auf OAuth 2.0 basiert. Sie können OIDC verwenden, um Benutzer sicher bei einer Anwendung anzumelden. In diesem Beispiel für eine mobile App wird die Microsoft Authentication Library (MSAL) mit dem OIDC-Autorisierungscode Proof Key for Code Exchange (PKCE) verwendet. MSAL ist eine von Microsoft bereitgestellte Bibliothek, die das Hinzufügen von Authentifizierungs- und Autorisierungsunterstützung zu mobilen Apps vereinfacht.
Der Anmeldeflow umfasst die folgenden Schritte:
- Benutzer öffnen die App und wählen Anmeldedatenaus.
- Die App öffnet den Systembrowser des mobilen Geräts und richtet eine Authentifizierungsanforderung an Azure AD B2C.
- Benutzer registrieren oder melden sich an, setzen das Passwort zurück, oder melden sich mit einem Social Account an.
- Nach erfolgreicher Benutzeranmeldung gibt Azure AD B2C einen Autorisierungscode an die App zurück.
- Die App führt die folgenden Aktionen aus:
- Sie tauscht den Autorisierungscode gegen ein ID-Token, ein Zugriffstoken und ein Aktualisierungstoken ein.
- Sie liest die ID-Tokenansprüche.
- Sie speichert die Token zur späteren Verwendung in einem In-Memory-Cache.
Übersicht über die App-Registrierung
Damit sich Ihre App bei Azure AD B2C anmelden und eine Web-API aufrufen kann, registrieren Sie im Azure AD B2C-Verzeichnis zwei Anwendungen:
Durch die Registrierung der mobilen Anwendung kann sich Ihre App bei Azure AD B2C anmelden. Geben Sie bei der App-Registrierung den Umleitungs-URI an. Der Umleitungs-URI ist der Endpunkt, an den die Benutzer von Azure AD B2C umgeleitet werden, nachdem sie sich mit Azure AD B2C authentifiziert haben. Beim App-Registrierungsprozess wird eine Anwendungs-ID generiert, die auch als Client-ID bezeichnet wird und Ihre mobile App eindeutig identifiziert (Beispiel: App ID: 1).
Durch die Web-API-Registrierung kann Ihre App eine geschützte Web-API aufrufen. Die Registrierung macht die Web-API-Berechtigungen (Bereiche) verfügbar. Beim App-Registrierungsprozess wird eine Anwendungs-ID generiert, die Ihre Web-API eindeutig identifiziert (Beispiel: App ID: 2). Erteilen Sie Ihrer mobilen App (App-ID: 1) Berechtigungen für die Web-API-Bereiche (App-ID: 2).
Die Anwendungsregistrierung und -architektur sind in den folgenden Diagrammen dargestellt:
Aufrufen einer Web-API
Nach Abschluss der Authentifizierung interagieren Benutzer mit der App, die eine geschützte Web-API aufruft. Die Web-API verwendet die Authentifizierung per Bearertoken. Das Bearertoken ist das Zugriffstoken, das von Azure AD B2C abgerufen wird. Die App übergibt das Token im Autorisierungsheader der HTTPS-Anforderung.
Authorization: Bearer <access token>
Wenn der Zugriffstokenbereich nicht mit den Web-API-Bereichen übereinstimmt, ruft die Authentifizierungsbibliothek ein neues Zugriffstoken mit den richtigen Bereichen ab.
Der Abmeldeflow
Der Abmeldeflow umfasst die folgenden Schritte:
- In der App melden sich Benutzer ab.
- Die App löscht ihre Sitzungsobjekte, und die Authentifizierungsbibliothek leert ihren Tokencache.
- Die App leitet den Benutzer zum Azure AD B2C-Abmeldeendpunkt, um die Azure AD B2C-Sitzung zu beenden.
- Benutzer werden zurück zur App geleitet.
Voraussetzungen
Ein Computer, auf dem Folgendes ausgeführt wird:
- Xcode 13 oder höher.
- CocoaPods-Abhängigkeits-Manager für Cocoa-Projekte für Swift- und Objective-C
Schritt 1: Konfigurieren Ihres Benutzerflows
Wenn Benutzer versuchen, sich bei Ihrer App anzumelden, startet die App über einen Benutzerflow eine Authentifizierungsanforderung an den Autorisierungsendpunkt. Der Benutzerflow definiert und kontrolliert die Benutzeroberfläche. Nachdem Benutzer den Benutzerflow abgeschlossen haben, generiert Azure AD B2C ein Token und leitet den Benutzer anschließend wieder zurück zu Ihrer Anwendung.
Falls noch nicht geschehen, erstellen Sie einen Benutzerflow oder eine benutzerdefinierte Richtlinie. Wiederholen Sie die Schritte, um drei separate Benutzerflows wie folgt zu erstellen:
- Kombinierter Benutzerflow für Registrierung und Anmeldung, z. B.
susi
. Dieser Benutzerflow unterstützt auch die Umgebung Kennwort vergessen. - Benutzerflow für die Profilbearbeitung, z. B.
edit_profile
. - Benutzerflow für die Kennwortzurücksetzung, z. B.
reset_password
.
Azure AD B2C stellt B2C_1_
dem Benutzerflownamen voran.
susi
wird beispielsweise zu B2C_1_susi
.
Schritt 2: Registrieren mobiler Anwendungen
Erstellen Sie die mobile App und Web-API-Anwendungsregistrierung und geben Sie die Bereiche Ihrer Web-API an.
Schritt 2.1: Registrieren der Web-API-App
Führen Sie die folgenden Schritte aus, um die Web-API-App-Registrierung (App-ID: 2) zu erstellen:
Melden Sie sich beim Azure-Portal an.
Stellen Sie sicher, dass Sie das Verzeichnis verwenden, das Ihren Azure AD B2C-Mandanten enthält. Wählen Sie auf der Symbolleiste des Portals das Symbol Verzeichnisse und Abonnements aus.
Suchen Sie auf der Seite Portaleinstellungen > Verzeichnisse und Abonnements das Azure AD B2C-Verzeichnis in der Liste Verzeichnisname, und klicken Sie dann auf Wechseln.
Suchen Sie im Azure-Portal nach Azure AD B2C, und wählen Sie diese Option dann aus.
Wählen Sie App-Registrierungen aus, und wählen Sie dann Registrierung einer neuen Anwendung aus.
Geben Sie für Name einen Namen für die Anwendung ein, z. B. my-api1. Behalten Sie die Standardwerte für Umleitungs-URI und Unterstützte Kontotypen bei.
Wählen Sie Registrieren.
Wählen Sie nach Abschluss der App-Registrierung Übersichtaus.
Notieren Sie sich die Anwendungs- bzw. Client-ID, die Sie später beim Konfigurieren der Webanwendung verwenden.
Schritt 2.2: Konfigurieren von Bereichen für die Web-API-App
Wählen Sie die von Ihnen erstellte Anwendung my-api1 (App-ID: 2) aus, um deren Seite Übersicht zu öffnen.
Wählen Sie unter Verwalten die Option Eine API verfügbar machen aus.
Wählen Sie neben Anwendungs-ID-URI den Link Festlegen aus. Ersetzen Sie den Standardwert (GUID) durch einen eindeutigen Namen, z. B. tasks-api, und wählen Sie dann Speichern aus.
Wenn Ihre Webanwendung ein Zugriffstoken für die Web-API anfordert, sollte sie diesen URI als Präfix für jeden Bereich hinzufügen, den Sie für die API definieren.
Wählen Sie unter Durch diese API definierte Bereiche die Option Bereich hinzufügen aus.
So erstellen Sie einen Bereich, der Lesezugriff auf die API festlegt:
- Geben Sie für Bereichsnametasks.read ein.
- Geben Sie für Anzeigename der AdministratoreinwilligungLesezugriff auf Aufgaben-API ein.
- Geben Sie für Beschreibung der AdministratoreinwilligungLässt Lesezugriff auf die Aufgaben-API zu ein.
Wählen Sie Bereich hinzufügen aus.
Wählen Sie Bereich hinzufügen aus, und geben Sie dann einen Bereich ein, der den Schreibzugriff auf die API festlegt:
- Geben Sie für Bereichsnametasks.write ein.
- Geben Sie für Anzeigename der AdministratoreinwilligungSchreibzugriff auf Aufgaben-API ein.
- Geben Sie für Beschreibung der AdministratoreinwilligungLässt Schreibzugriff auf die Aufgaben-API zu ein.
Wählen Sie Bereich hinzufügen aus.
Schritt 2.3: Registrieren der mobilen App
Gehen Sie zum Erstellen der Registrierung für die mobile App folgendermaßen vor:
- Melden Sie sich beim Azure-Portal an.
- Wählen Sie App-Registrierungen aus, und wählen Sie dann Registrierung einer neuen Anwendung aus.
- Geben Sie unter Name einen Namen für die Anwendung ein, (z. B. iOS-app1).
- Wählen Sie unter Unterstützte Kontotypen die Option Konten in einem beliebigen Identitätsanbieter oder Organisationsverzeichnis (zum Authentifizieren von Benutzern mit Benutzerflows) aus.
- Wählen Sie unter Umleitungs-URI die Option Öffentlicher Client/nativ (mobil und Desktop) aus, und geben Sie dann in das URL-Feld
msauth.com.microsoft.identitysample.MSALiOS://auth
ein. - Wählen Sie Registrieren.
- Wählen Sie nach Abschluss der App-Registrierung Übersichtaus.
- Notieren Sie sich die Anwendungs- bzw. Client-ID, die Sie später beim Konfigurieren der mobilen Anwendung verwenden.
Schritt 2.4: Erteilen von Berechtigungen für die mobile App zur Verwendung der Web-API
Führen Sie die folgenden Schritte aus, um Ihrer App (App-ID: 1) Berechtigungen zu erteilen:
Wählen Sie App-Registrierungen und dann die von Ihnen erstellte App (App-ID: 1) aus.
Wählen Sie unter Verwalten die Option API-Berechtigungen.
Wählen Sie unter Konfigurierte Berechtigungen die Option Berechtigung hinzufügen aus.
Wählen Sie die Registerkarte Meine APIs aus.
Wählen Sie die API aus, für die der Webanwendung Zugriff gewährt werden soll (App-ID: 2). Geben Sie z. B. my-api1 ein.
Erweitern Sie unter Berechtigung den Eintrag Aufgaben, und wählen Sie die zuvor definierten Bereiche aus (Beispiel: tasks.read und tasks.write).
Wählen Sie Berechtigungen hinzufügen aus.
Wählen Sie Administratorzustimmung erteilen für<Name Ihres Mandanten> aus.
Wählen Sie Ja.
Wählen Sie Aktualisieren aus, und vergewissern Sie sich, dass für beide Bereiche unter Status der Status Gewährt für... angezeigt wird.
Wählen Sie in der Liste Konfigurierte Berechtigungen Ihren Bereich aus, und kopieren Sie dann den vollständigen Namen des Bereichs.
Schritt 3: Konfigurieren der Beispiel-Web-API
In diesem Beispiel wird ein Zugriffstoken mit den relevanten Bereichen bezogen, die die mobile App für eine Web-API verwenden kann. Gehen Sie wie folgt vor, um eine Web-API aus Code aufzurufen:
- Verwenden Sie eine vorhandene Web-API, oder erstellen Sie eine neue. Weitere Informationen finden Sie unter Authentifizierung in Ihrer eigenen Web-API mithilfe von Azure AD B2C aktivieren.
- Ändern Sie den Beispielcode so, dass eine Web-API aufgerufen wird.
- Nachdem Sie die Web-API konfiguriert haben, kopieren Sie den URI des Web-API-Endpunkts. In den nächsten Schritten verwenden Sie den Web-API-Endpunkt.
Tipp
Wenn Sie keine Web-API haben, können Sie dieses Beispiel trotzdem ausführen. In diesem Fall gibt die App das Token für den Zugriff zurück, kann aber die Web-API nicht aufrufen.
Schritt 4: Abrufen des Beispiels für die mobile iOS-App
Laden Sie eine ZIP-Datei herunter, oder klonen Sie die beispielhafte Webanwendung aus dem GitHub-Repository.
git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal
Installieren Sie die MSAL-Bibliothek mithilfe von CocoaPods. Wechseln Sie in einem Terminalfenster zum Stammordner des Projekts. Dieser Ordner enthält die Pod-Datei. Führen Sie den folgenden Befehl aus:
pod install
Öffnen Sie den Arbeitsbereich
MSALiOS.xcworkspace
mithilfe von Xcode.
Schritt 5: Konfigurieren des Beispiels für die mobile App
Öffnen Sie die Datei ViewController.swift. Die Member der ViewController
-Klasse enthalten Informationen zu Ihrem Azure AD B2C-Identitätsanbieter. Die mobile App nutzt diese Informationen, um eine Vertrauensstellung mit Azure AD B2C herzustellen, Benutzer an- und abzumelden sowie Token zu beziehen und zu überprüfen.
Aktualisieren Sie die folgenden Klassenmember:
Schlüssel | Wert |
---|---|
kTenantName | Der vollständige Name Ihres Azure AD B2C-Mandanten (z. B. contoso.onmicrosoft.com ). |
kAuthorityHostName | Der erste Teil Ihres Azure AD B2C-Mandantennamens (z. B. contoso.b2clogin.com ). |
kClientID | Die ID der mobilen Anwendung aus Schritt 2.3. |
kRedirectUri | Der Umleitungs-URI der mobilen Anwendung aus Schritt 2.3: msauth.com.microsoft.identitysample.MSALiOS://auth . |
kSignupOrSigninPolicy | Der Benutzerflow für Registrierung und Anmeldung oder die benutzerdefinierte Richtlinie, den/die Sie in Schritt 1 erstellt haben. |
kEditProfilePolicy | Der Benutzerflow zur Profilbearbeitung oder die benutzerdefinierte Richtlinie, den/die Sie in Schritt 1 erstellt haben. |
kGraphURI | (Optional) Der Web-API-Endpunkt, den Sie in Schritt 3 erstellt haben (z. B. https://contoso.azurewebsites.net/hello ). |
kScopes | Die Web-API-Bereiche, die Sie in Schritt 2.4 erstellt haben. |
Schritt 6: Ausführen und Testen der mobilen App
Erstellen Sie das Projekt, und führen Sie es mit einem Simulator eines verbundenen iOS-Geräts aus.
Wählen Sie Registrieren, und melden Sie sich mit Ihrem lokalen oder Social Media-Konto für Azure AD B2C an.
Nach erfolgreicher Authentifizierung wird Ihr Anzeigename in der Navigationsleiste angezeigt.
Nächste Schritte
In diesem Artikel werden folgende Themen erläutert: