Migrieren von Benutzern zu Azure AD B2CMigrate users to Azure AD B2C

Bei der Migration von einem anderen Identitätsanbieter zu Azure Active Directory B2C (Azure AD B2C) müssen unter Umständen auch bereits vorhandene Benutzerkonten migriert werden.Migrating from another identity provider to Azure Active Directory B2C (Azure AD B2C) might also require migrating existing user accounts. Hier werden zwei Migrationsmethoden behandelt: Prämigration und nahtlose Migration.Two migration methods are discussed here, pre migration and seamless migration. Bei beiden Methoden muss eine Anwendung oder ein Skript geschrieben werden, um Benutzerkonten unter Verwendung der Microsoft Graph-API in Azure AD B2C zu erstellen.With either approach, you're required to write an application or script that uses the Microsoft Graph API to create user accounts in Azure AD B2C.

PrämigrationPre migration

Bei der Prämigration werden von Ihrer Migrationsanwendung für jedes Benutzerkonto folgende Schritte ausgeführt:In the pre migration flow, your migration application performs these steps for each user account:

  1. Lesen des Benutzerkontos und der aktuellen Anmeldeinformationen (Benutzername und Kennwort) des alten IdentitätsanbietersRead the user account from the old identity provider, including its current credentials (username and password).
  2. Erstellen eines entsprechenden Kontos mit den aktuellen Anmeldeinformationen in Ihrem Azure AD B2C-VerzeichnisCreate a corresponding account in your Azure AD B2C directory with the current credentials.

Die Prämigration kann in folgenden Situationen verwendet werden:Use the pre migration flow in either of these two situations:

  • Sie haben Zugriff auf die Klartextanmeldeinformationen (Benutzername und Kennwort) eines Benutzers.You have access to a user's plaintext credentials (their username and password).
  • Die Anmeldeinformationen sind verschlüsselt, können aber von Ihnen entschlüsselt werden.The credentials are encrypted, but you can decrypt them.

Informationen zum programmgesteuerten Erstellen von Benutzerkonten finden Sie unter Verwalten von Azure AD B2C-Benutzerkonten mit Microsoft Graph.For information about programmatically creating user accounts, see Manage Azure AD B2C user accounts with Microsoft Graph.

Nahtlose MigrationSeamless migration

Verwenden Sie die nahtlose Migration, wenn im alten Identitätsanbieter nicht auf Klartextkennwörter zugegriffen werden kann.Use the seamless migration flow if plaintext passwords in the old identity provider are not accessible. Dies kann beispielsweise in folgenden Situationen der Fall sein:For example, when:

  • Das Kennwort ist in einem unidirektionalen verschlüsselten Format gespeichert (etwa mit einer Hashfunktion).The password is stored in a one-way encrypted format, such as with a hash function.
  • Das Kennwort wurde vom alten Identitätsanbieter so gespeichert, dass Sie keinen Zugriff darauf haben.The password is stored by the legacy identity provider in a way that you can't access. Dies kann beispielsweise der Fall sein, wenn der Identitätsanbieter Anmeldeinformationen per Webdienstaufruf überprüft.For example, when the identity provider validates credentials by calling a web service.

Bei der nahtlose Migration ist zwar ebenfalls eine Prämigration von Benutzerkonten erforderlich, anschließend wird jedoch eine benutzerdefinierte Richtlinie verwendet, um eine (von Ihnen erstellte) REST-API abzufragen und das Kennwort der einzelnen Benutzer jeweils bei der ersten Anmeldung festzulegen.The seamless migration flow still requires pre migration of user accounts, but then uses a custom policy to query a REST API (which you create) to set each users' password at first sign-in.

Die nahtlose Migration umfasst somit zwei Phasen: Prämigration und Festlegen der Anmeldeinformationen.The seamless migration flow thus has two phases: pre migration and set credentials.

Phase 1: PrämigrationPhase 1: Pre migration

  1. Ihre Migrationsanwendung liest die Benutzerkonten des alten Identitätsanbieters.Your migration application reads the user accounts from the old identity provider.
  2. Die Migrationsanwendung erstellt entsprechende Benutzerkonten in Ihrem Azure AD B2C-Verzeichnis, legt aber keine Kennwörter fest.The migration application creates corresponding user accounts in your Azure AD B2C directory, but does not set passwords.

Phase 2: Festlegen von AnmeldeinformationenPhase 2: Set credentials

Nach Abschluss der Prämigration der Konten werden durch Ihre benutzerdefinierte Richtlinie und durch Ihre REST-API die folgenden Schritte ausgeführt, wenn sich ein Benutzer anmeldet:After pre migration of the accounts is complete, your custom policy and REST API then perform the following when a user signs in:

  1. Lesen des entsprechenden Azure AD B2C-Benutzerkontos für die eingegebene E-Mail-AdresseRead the Azure AD B2C user account corresponding to the email address entered.
  2. Auswerten eines booleschen Erweiterungsattributs, um zu überprüfen, ob das Konto für die Migration gekennzeichnet istCheck whether the account is flagged for migration by evaluating a boolean extension attribute.
    • Gibt das Erweiterungsattribut True zurück, wird Ihre REST-API aufgerufen, um das Kennwort anhand der Angabe des alten Identitätsanbieters zu überprüfen.If the extension attribute returns True, call your REST API to validate the password against the legacy identity provider.
      • Ist das Kennwort nicht korrekt, wird eine benutzerfreundliche Fehlermeldung zurückgegeben.If the REST API determines the password is incorrect, return a friendly error to the user.
      • Ist das Kennwort korrekt, wird es in das Azure AD B2C-Konto geschrieben, und das boolesche Erweiterungsattribut wird in False geändert.If the REST API determines the password is correct, write the password to the Azure AD B2C account and change the boolean extension attribute to False.
    • Gibt das boolesche Erweiterungsattribut Falsezurück, wird der Anmeldevorgang normal fortgesetzt.If the boolean extension attribute returns False, continue the sign-in process as normal.

Ein Beispiel für eine benutzerdefinierte Richtlinie und eine REST-API finden Sie im Beispiel für die nahtlose Benutzermigration auf GitHub.To see an example custom policy and REST API, see the seamless user migration sample on GitHub.

Flussdiagramm: Nahtlose BenutzermigrationFlowchart diagram of the seamless migration approach to user migration
Diagramm: Ablauf der dynamischen MigrationDiagram: Seamless migration flow

Bewährte MethodenBest practices

SicherheitSecurity

Bei der nahtlosen Migration wird Ihre eigene benutzerdefinierte REST-API verwendet, um die Anmeldeinformationen eines Benutzers anhand der Angaben des alten Identitätsanbieters zu überprüfen.The seamless migration approach uses your own custom REST API to validate a user's credentials against the legacy identity provider.

Die REST-API muss vor Brute-Force-Angriffen geschützt sein.You must protect your REST API against brute-force attacks. Ein Angreifer kann mehrere Kennwörter übermitteln und so unter Umständen die Anmeldeinformationen eines Benutzers erraten.An attacker can submit several passwords in the hope of eventually guessing a user's credentials. Beenden Sie zum Schutz vor derartigen Angriffen die Verarbeitung von Anforderungen für Ihre REST-API, wenn die Anzahl von Anmeldeversuchen einen bestimmten Schwellenwert übersteigt.To help defeat such attacks, stop serving requests to your REST API when the number of sign-in attempts passes a certain threshold. Schützen Sie außerdem die Kommunikation zwischen Azure AD B2C und Ihrer REST-API.Also, secure the communication between Azure AD B2C and your REST API. Informationen zum Schützen Ihrer RESTful-APIs für die Produktionsumgebung finden Sie unter Schützen von RESTful-APIs.To learn how to secure your RESTful APIs for production, see Secure RESTful API.

BenutzerattributeUser attributes

Nicht alle Informationen des alten Identitätsanbieter sollten zu Ihrem Azure AD B2C-Verzeichnis migriert werden.Not all information in the legacy identity provider should be migrated to your Azure AD B2C directory. Ermitteln Sie vor der Migration, welche Benutzerattribute in Azure AD B2C gespeichert werden sollen.Identify the appropriate set of user attributes to store in Azure AD B2C before migrating.

  • Folgendes sollte in Azure AD B2C gespeichert werden:DO store in Azure AD B2C
    • Benutzername, Kennwort, E-Mail-Adressen, Telefonnummern, Mitgliedschaftsnummern/-IDsUsername, password, email addresses, phone numbers, membership numbers/identifiers.
    • Einwilligungsmarker für Datenschutzrichtlinie und LizenzbedingungenConsent markers for privacy policy and end-user license agreements.
  • Folgendes sollte nicht in Azure AD B2C gespeichert werden:DO NOT store in Azure AD B2C
    • Vertrauliche Daten wie Kreditkartennummern, Sozialversicherungsnummern, Krankenakten oder andere Daten, die behördlichen oder branchenspezifischen Complianceregeln unterliegenSensitive data like credit card numbers, social security numbers (SSN), medical records, or other data regulated by government or industry compliance bodies.
    • Marketing- oder Kommunikationspräferenzen, Benutzerverhalten und ErkenntnisseMarketing or communication preferences, user behaviors, and insights.

VerzeichnisbereinigungDirectory clean-up

Es empfiehlt sich, vor Beginn der Migration Ihr Verzeichnis zu bereinigen.Before you start the migration process, take the opportunity to clean up your directory.

  • Identifizieren Sie die Benutzerattribute, die in Azure AD B2C gespeichert werden sollen, und migrieren Sie nur das, was Sie benötigen.Identify the set of user attributes to be stored in Azure AD B2C, and migrate only what you need. Bei Bedarf können Sie benutzerdefinierte Attribute erstellen, um weitere Benutzerdaten zu speichern.If necessary, you can create custom attributes to store more data about a user.
  • Wenn Sie aus einer Umgebung mit mehreren Authentifizierungsquellen migrieren, in der beispielsweise jede Anwendung über ein eigenes Benutzerverzeichnis verfügt, verwenden Sie als Migrationsziel ein einheitliches Konto in Azure AD B2C.If you're migrating from an environment with multiple authentication sources (for example, each application has its own user directory), migrate to a unified account in Azure AD B2C.
  • Wenn mehrere Anwendungen über unterschiedliche Benutzernamen verfügen, können diese mithilfe der Identitätensammlung in einem Azure AD B2C-Benutzerkonto gespeichert werden.If multiple applications have different usernames, you can store all of them in an Azure AD B2C user account by using the identities collection. Lassen Sie den Benutzer ein Kennwort wählen, und legen Sie dieses im Verzeichnis fest.With regard to the password, let the user choose one and set it in the directory. Bei der nahtlosen Migration sollte beispielsweise nur das gewählte Kennwort im Azure AD B2C-Konto gespeichert werden.For example, with the seamless migration, only the chosen password should be stored in the Azure AD B2C account.
  • Entfernen Sie nicht verwendete Benutzerkonten vor der Migration, oder migrieren Sie keine veralteten Konten.Remove unused user accounts before migration, or do not migrate stale accounts.

KennwortrichtliniePassword policy

Wenn die Konten, die Sie migrieren möchten, nicht über die hohe Kennwortsicherheit verfügen, die von Azure AD B2C erzwungen wird, können Sie die Erzwingung sicherer Kennwörter deaktivieren.If the accounts you're migrating have weaker password strength than the strong password strength enforced by Azure AD B2C, you can disable the strong password requirement. Weitere Informationen finden Sie unter Eigenschaft „passwordPolicies“ (Kennwortrichtlinien).For more information, see Password policy property.

Nächste SchritteNext steps

Das Repository azure-ad-b2c/user-migration auf GitHub enthält eine benutzerdefinierte Beispielrichtlinie für die nahtlose Migration sowie ein REST-API-Codebeispiel:The azure-ad-b2c/user-migration repository on GitHub contains a seamless migration custom policy example and REST API code sample:

Benutzerdefinierte Richtlinie für die nahtlose Benutzermigration und REST-API-CodebeispielSeamless user migration custom policy & REST API code sample