Azure AD B2C: Anmelden mit einer iOS-AnwendungAzure AD B2C: Sign-in using an iOS application

Die Microsoft Identity-Plattform nutzt offene Standards, z.B. OAuth2 und OpenID Connect.The Microsoft identity platform uses open standards such as OAuth2 and OpenID Connect. Mit einem offenen Protokoll profitieren Entwickler von einer größeren Auswahl an Bibliotheken für die Integration unserer Dienste.Using an open standard protocol offers more developer choice when selecting a library to integrate with our services. Wir haben diese und weitere exemplarische Vorgehensweisen bereitgestellt, um Entwickler beim Schreiben von Anwendungen zu unterstützen, die mit der Microsoft-Identitätsplattform verbunden sind.We've provided this walkthrough and others like it to aid developers with writing applications that connect to the Microsoft Identity platform. Die meisten Bibliotheken, die die RFC6749 OAuth2-Spezifikation implementieren, können eine Verbindung mit der Microsoft Identity-Plattform herstellen.Most libraries that implement the RFC6749 OAuth2 spec are able to connect to the Microsoft Identity platform.

Warnung

Microsoft stellt keine Fehlerbehebungen für diese Drittanbieterbibliotheken bereit und hat diese Bibliotheken keinerlei Prüfungen unterzogen.Microsoft does not provide fixes for third-party libraries and has not done a review of those libraries. In diesem Beispiel wird eine Drittanbieterbibliothek namens AppAuth verwendet, deren Kompatibilität in grundlegenden Szenarien mit Azure AD B2C getestet wurde.This sample is using a third-party library called AppAuth that has been tested for compatibility in basic scenarios with the Azure AD B2C. Probleme und Funktionsanforderungen müssen direkt an das Open Source-Projekt der Bibliothek weitergeleitet werden.Issues and feature requests should be directed to the library's open-source project. hier finden Sie weitere InformationenFor more information, see this article.

Wenn OAuth2 oder OpenID Connect neu für Sie ist, ergibt diese Beispielkonfiguration für Sie vielleicht noch nicht viel Sinn.If you're new to OAuth2 or OpenID Connect, much of this sample configuration may not make much sense to you. Wir empfehlen Ihnen, sich eine kurze Übersicht über das Protokollanzusehen.We recommend you look at a brief overview of the protocol we've documented here.

Erstellen eines Azure AD B2C-VerzeichnissesGet an Azure AD B2C directory

Bevor Sie Azure AD B2C verwenden können, müssen Sie ein Verzeichnis oder einen Mandanten erstellen.Before you can use Azure AD B2C, you must create a directory, or tenant. Ein Verzeichnis ist ein Container für alle Benutzer, Apps, Gruppen usw.A directory is a container for all your users, apps, groups, and more. Erstellen Sie zunächst ein B2C-Verzeichnis , sofern noch keines vorhanden ist.If you don't have one already, create a B2C directory before you continue.

Erstellen einer AnwendungCreate an application

Registrieren Sie als Nächstes eine Anwendung in Ihrem Azure AD B2C-Mandanten.Next, register an application in your Azure AD B2C tenant. Dadurch werden Azure AD die Informationen bereitgestellt, die für die sichere Kommunikation mit Ihrer App erforderlich sind.This gives Azure AD the information it needs to communicate securely with your app.

Zum Registrieren einer Anwendung in Ihrem Azure AD B2C-Mandanten können Sie die aktuelle Benutzeroberfläche für Anwendungen oder unsere neue einheitliche Benutzeroberfläche App-Registrierungen (Vorschau) verwenden.To register an application in your Azure AD B2C tenant, you can use the current Applications experience, or our new unified App registrations (Preview) experience. Weitere Informationen zur neuen OberflächeLearn more about the new experience.

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.
  2. Wählen Sie im oberen Menü den Filter Verzeichnis und Abonnement aus, und wählen Sie dann das Verzeichnis aus, das Ihren Azure AD B2C-Mandanten enthält.Select the Directory + subscription filter in the top menu, and then select the directory that contains your Azure AD B2C tenant.
  3. Wählen Sie im linken Menü die Option Azure AD B2C aus.In the left menu, select Azure AD B2C. Oder wählen Sie Alle Dienste aus, suchen Sie nach dem Eintrag Azure AD B2C, und wählen Sie ihn aus.Or, select All services and search for and select Azure AD B2C.
  4. Wählen Sie Anwendungen und dann Hinzufügen aus.Select Applications, and then select Add.
  5. Geben Sie einen Namen für die Anwendung ein.Enter a name for the application. Beispiel: nativeapp1.For example, nativeapp1.
  6. Wählen Sie unter Nativer Client die Option Ja aus.For Native client, select Yes.
  7. Geben Sie einen Benutzerdefinierte Umleitungs-URI mit einem eindeutigen Schema ein.Enter a Custom Redirect URI with a unique scheme. Beispiel: com.onmicrosoft.contosob2c.exampleapp://oauth/redirect.For example, com.onmicrosoft.contosob2c.exampleapp://oauth/redirect. Bei der Auswahl eines Umleitungs-URIs sind zwei Aspekte zu berücksichtigen:There are two important considerations when choosing a redirect URI:
    • Eindeutig: Das Schema für den Umleitungs-URI muss für jede Anwendung eindeutig sein.Unique: The scheme of the redirect URI must be unique for every application. Im Beispiel com.onmicrosoft.contosob2c.exampleapp://oauth/redirect ist com.onmicrosoft.contosob2c.exampleapp das Schema.In the example com.onmicrosoft.contosob2c.exampleapp://oauth/redirect, com.onmicrosoft.contosob2c.exampleapp is the scheme. Dieses Muster sollte befolgt werden.This pattern should be followed. Wenn zwei Anwendungen dasselbe Schema verwenden, erhält der Benutzer die Möglichkeit, eine Anwendung auszuwählen.If two applications share the same scheme, the user is given a choice to choose an application. Wenn der Benutzer einen falschen Eintrag auswählt, tritt bei der Anmeldung ein Fehler auf.If the user chooses incorrectly, the sign-in fails.
    • Vollständigkeit: Der Umleitungs-URI muss ein Schema und einen Pfad aufweisen.Complete: The redirect URI must have a both a scheme and a path. Der Pfad muss mindestens einen Schrägstrich nach der Domäne enthalten.The path must contain at least one forward slash after the domain. Beispielsweise funktioniert //oauth/, während bei //oauth ein Fehler auftritt.For example, //oauth/ works while //oauth fails. Verwenden Sie keine Sonderzeichen im URI, z. B. Unterstriche.Don't include special characters in the URI, for example, underscores.
  8. Klicken Sie auf Erstellen.Select Create.

Notieren Sie sich die Anwendungs-ID (Client) zur Verwendung in einem späteren Schritt.Record the Application (client) ID for use in a later step.

Notieren Sie außerdem Ihren benutzerdefinierten Umleitungs-URI für die Verwendung in einem späteren Schritt.Also record your custom redirect URI for use in a later step. Beispiel: com.onmicrosoft.contosob2c.exampleapp://oauth/redirect.For example, com.onmicrosoft.contosob2c.exampleapp://oauth/redirect.

Erstellen Ihrer BenutzerflowsCreate your user flows

In Azure AD B2C wird jede Benutzeroberfläche durch einen Benutzerflow definiert.In Azure AD B2C, every user experience is defined by a user flow. Diese Anwendung enthält eine kombinierte Identitätsoberfläche für die Anmeldung und Registrierung.This application contains one identity experience: a combined sign-in and sign-up. Achten Sie beim Erstellen Ihres Benutzerflows auf Folgendes:When you create the user flow, be sure to:

  • Wählen Sie unter Registrierungsattribute das Attribut Anzeigename aus.Under Sign-up attributes, select the attribute Display name. Sie können auch andere Attribute auswählen.You can select other attributes as well.
  • Wählen Sie unter Anwendungsansprüche die Ansprüche Anzeigename und Objekt-ID des Benutzers aus.Under Application claims, select the claims Display name and User's Object ID. Sie können auch andere Ansprüche auswählen.You can select other claims as well.
  • Notieren Sie sich nach der Erstellung den Namen jedes Benutzerflows.Copy the Name of each user flow after you create it. Dem Namen Ihres Benutzerflows wird beim Speichern das Präfix b2c_1_ vorangestellt.Your user flow name is prefixed with b2c_1_ when you save the user flow. Der Name des Benutzerflows wird später noch benötigt.You need the user flow name later.

Nachdem Sie Ihre Benutzerflows erstellt haben, können Sie Ihre App erstellen.After you have created your user flows, you're ready to build your app.

Herunterladen des BeispielcodesDownload the sample code

Wir haben ein funktionsfähiges Beispiel bereitgestellt, das AppAuth mit Azure AD B2C auf GitHub verwendet.We have provided a working sample that uses AppAuth with Azure AD B2C on GitHub. Sie können den Code herunterladen und ausführen.You can download the code and run it. Folgen Sie den Anweisungen in der Datei README.md, um Ihren eigenen Azure AD B2C-Mandanten zu verwenden.To use your own Azure AD B2C tenant, follow the instructions in the README.md.

Dieses Beispiel wurde anhand der README-Anweisungen vom iOS AppAuth Projekt auf GitHub erstellt.This sample was created by following the README instructions by the iOS AppAuth project on GitHub. Weitere Informationen zur Funktionsweise des Beispiels und der Bibliothek finden Sie in der AppAuth-README auf GitHub.For more details on how the sample and the library work, reference the AppAuth README on GitHub.

Ändern Ihrer Anwendung zur Verwendung von Azure AD B2C mit AppAuthModifying your app to use Azure AD B2C with AppAuth

Hinweis

AppAuth unterstützt iOS 7 und höher.AppAuth supports iOS 7 and above. Um Anmeldeinformationen für soziale Netzwerke auf Google zu unterstützen, benötigt SFSafariViewController jedoch iOS 9 oder höher.However, to support social logins on Google, SFSafariViewController is needed which requires iOS 9 or higher.

KonfigurationConfiguration

Sie können die Kommunikation mit Azure AD B2C konfigurieren, indem Sie die Autorisierungsendpunkt- und die Token-Endpunkt-URIs angeben.You can configure communication with Azure AD B2C by specifying both the authorization endpoint and token endpoint URIs. Zum Generieren dieser URIs benötigen Sie die folgenden Informationen:To generate these URIs, you need the following information:

  • Mandanten-ID (z.B. contoso.onmicrosoft.com)Tenant ID (for example, contoso.onmicrosoft.com)
  • Name des Benutzerflows (z.B. B2C_1_SignUpIn)User flow name (for example, B2C_1_SignUpIn)

Sie können die Token-Endpunkt-URI generieren, indem Sie Tenant_ID (Mandanten-ID) und Policy_Name (Richtlinienname) in der folgenden URL ersetzen:The token endpoint URI can be generated by replacing the Tenant_ID and the Policy_Name in the following URL:

static NSString *const tokenEndpoint = @"https://<Tenant_name>.b2clogin.com/te/<Tenant_ID>/<Policy_Name>/oauth2/v2.0/token";

Sie können die Autorisierungsendpunkt-URI generieren, indem Sie Tenant_ID (Mandanten-ID) und Policy_Name (Richtlinienname) in der folgenden URL ersetzen:The authorization endpoint URI can be generated by replacing the Tenant_ID and the Policy_Name in the following URL:

static NSString *const authorizationEndpoint = @"https://<Tenant_name>.b2clogin.com/te/<Tenant_ID>/<Policy_Name>/oauth2/v2.0/authorize";

Führen Sie den folgenden Code aus, um Ihr AuthorizationServiceConfiguration-Objekt zu erstellen:Run the following code to create your AuthorizationServiceConfiguration object:

OIDServiceConfiguration *configuration =
    [[OIDServiceConfiguration alloc] initWithAuthorizationEndpoint:authorizationEndpoint tokenEndpoint:tokenEndpoint];
// now we are ready to perform the auth request...

AutorisierenAuthorizing

Nach dem Konfigurieren oder Abrufen einer Autorisierungsdienstkonfiguration kann eine Autorisierungsanforderung erstellt werden.After configuring or retrieving an authorization service configuration, an authorization request can be constructed. Zum Erstellen dieser Anforderung benötigen Sie die folgenden Informationen:To create the request, you need the following information:

  • Die Client-ID (ANWENDUNGS-ID), die Sie sich zuvor notiert haben.Client ID (APPLICATION ID) that you recorded earlier. Beispiel: 00000000-0000-0000-0000-000000000000.For example, 00000000-0000-0000-0000-000000000000.
  • Den benutzerdefinierten Umleitungs-URI, den Sie sich zuvor notiert haben.Custom Redirect URI that you recorded earlier. Beispiel: com.onmicrosoft.contosob2c.exampleapp://oauth/redirect.For example, com.onmicrosoft.contosob2c.exampleapp://oauth/redirect.

Sie sollten beide Elemente beim Registrieren Ihrer App gespeichert haben.Both items should have been saved when you were registering your app.

OIDAuthorizationRequest *request =
    [[OIDAuthorizationRequest alloc] initWithConfiguration:configuration
                                                  clientId:kClientId
                                                    scopes:@[OIDScopeOpenID, OIDScopeProfile]
                                               redirectURL:[NSURL URLWithString:kRedirectUri]
                                              responseType:OIDResponseTypeCode
                                      additionalParameters:nil];

AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appDelegate.currentAuthorizationFlow =
    [OIDAuthState authStateByPresentingAuthorizationRequest:request
                                   presentingViewController:self
                                                   callback:^(OIDAuthState *_Nullable authState, NSError *_Nullable error) {
        if (authState) {
            NSLog(@"Got authorization tokens. Access token: %@", authState.lastTokenResponse.accessToken);
            [self setAuthState:authState];
        } else {
            NSLog(@"Authorization error: %@", [error localizedDescription]);
            [self setAuthState:nil];
        }
    }];

Um Ihre Anwendung zum Verarbeiten der Umleitung an den URI mit dem benutzerdefinierten Schema einzurichten, müssen Sie die Liste der URL-Schemas in der Datei „Info.plist“ aktualisieren:To set up your application to handle the redirect to the URI with the custom scheme, you need to update the list of 'URL Schemes' in your Info.pList:

  • Öffnen Sie die Datei „Info.plist“.Open Info.pList.
  • Zeigen Sie mit dem Mauszeiger auf eine Zeile wie „Bundle OS Type Code“, und klicken Sie auf das Symbol +.Hover over a row like 'Bundle OS Type Code' and click the + symbol.
  • Nennen Sie die neue Zeile „URL types“.Rename the new row 'URL types'.
  • Klicken Sie auf den Pfeil links neben „URL types“, um die Struktur zu öffnen.Click the arrow to the left of 'URL types' to open the tree.
  • Klicken Sie auf den Pfeil links neben „Item 0“, um die Struktur zu öffnen.Click the arrow to the left of 'Item 0' to open the tree.
  • Benennen Sie das erste Element unterhalb von „Item 0“ in „URL Schemes“ um.Rename first item underneath Item 0 to 'URL Schemes'.
  • Klicken Sie auf den Pfeil links neben „URL Schemes“, um die Struktur zu öffnen.Click the arrow to the left of 'URL Schemes' to open the tree.
  • In der Spalte „Value“ befindet sich links neben „Item 0“ unterhalb von „URL Schemes“ ein leeres Feld.In the 'Value' column, there is a blank field to the left of 'Item 0' underneath 'URL Schemes'. Legen Sie den Wert auf das eindeutige Schema Ihrer Anwendung fest.Set the value to your application's unique scheme. Der Wert muss mit dem in der Umleitungs-URL beim Erstellen des OIDAuthorizationRequest-Objekts verwendeten Schema übereinstimmen.The value must match the scheme used in redirectURL when creating the OIDAuthorizationRequest object. Im Beispiel wird das Schema „com.onmicrosoft.fabrikamb2c.exampleapp“ verwendet.In the sample, the scheme 'com.onmicrosoft.fabrikamb2c.exampleapp' is used.

Informationen zum restlichen Prozess finden Sie im AppAuth Handbuch.Refer to the AppAuth guide on how to complete the rest of the process. Sehen Sie sich das Beispiel für die ersten Schritte mit einer funktionsfähigen App an.If you need to quickly get started with a working app, check out the sample. Folgen Sie den Anweisungen in der Datei README.md aus, um Ihre eigene Azure AD B2C-Konfiguration einzugeben.Follow the steps in the README.md to enter your own Azure AD B2C configuration.

Wir sind stets offen für Feedback und Vorschläge.We are always open to feedback and suggestions! Wenn Sie Probleme mit diesem Artikel oder Vorschläge zur Verbesserung dieses Inhalts haben, würden wir uns über Ihr Feedback unten auf der Seite freuen.If you have any difficulties with this article, or have recommendations for improving this content, we would appreciate your feedback at the bottom of the page. Anforderungen neuer Features geben Sie bitte unter UserVoice ein.For feature requests, add them to UserVoice.