Freigeben über


Migrieren einer OWIN-basierten Web-API zu b2clogin.com oder einer benutzerdefinierten Domäne

Von Bedeutung

Ab dem 1. Mai 2025 steht Azure AD B2C nicht mehr für neue Kunden zur Verfügung. Weitere Informationen finden Sie in unseren HÄUFIG gestellten Fragen.

In diesem Artikel wird eine Technik zum Aktivieren der Unterstützung mehrerer Tokenherausgeber in Web-APIs beschrieben, die die Open Web Interface for .NET (OWIN) implementieren. Die Unterstützung mehrerer Tokenendpunkte ist nützlich, wenn Sie Azure Active Directory B2C (Azure AD B2C)-APIs und deren Anwendungen von einer Domäne in eine andere migrieren. Beispiel: von login.microsoftonline.com zu b2clogin.com oder zu einer benutzerdefinierten Domäne.

Durch Hinzufügen von Unterstützung in Ihrer API zum Akzeptieren von Token, die von b2clogin.com, login.microsoftonline.com oder einer benutzerdefinierten Domäne ausgestellt wurden, können Sie Ihre Webanwendungen schrittweise migrieren, bevor Sie die Unterstützung für login.microsoftonline.com ausgestellte Token aus der API entfernen.

In den folgenden Abschnitten wird gezeigt, wie Sie mehrere Aussteller in einer Web-API aktivieren, die die Microsoft OWIN Middleware-Komponenten (Katana) verwendet. Obwohl die Codebeispiele für die Microsoft OWIN-Middleware spezifisch sind, sollte die allgemeine Technik auf andere OWIN-Bibliotheken angewendet werden.

Voraussetzungen

Sie benötigen die folgenden Azure AD B2C-Ressourcen, bevor Sie mit den Schritten in diesem Artikel fortfahren:

Abrufen von Endpunkten des Tokenausstellers

Sie müssen zuerst die URIs der Endpunkte der Tokenherausgeber für jeden Aussteller erhalten, den Sie in Ihrer API unterstützen möchten. Um die b2clogin.com und login.microsoftonline.com Endpunkte abzurufen, die von Ihrem Azure AD B2C-Mandanten unterstützt werden, verwenden Sie das folgende Verfahren im Azure-Portal.

Wählen Sie zunächst einen Ihrer vorhandenen Benutzerflüsse aus:

  1. Navigieren Sie im Azure-Portal zu Ihrem Azure AD B2C-Mandanten.

  2. Wählen Sie unter "Richtlinien" die Option "Benutzerflüsse" (Richtlinien) aus.

  3. Wählen Sie eine vorhandene Richtlinie aus, z. B. B2C_1_signupsignin1, und wählen Sie dann "Benutzerablauf ausführen" aus.

  4. Wählen Sie unter der Überschrift "Benutzerablauf ausführen " am oberen Rand der Seite den Link aus, um zum OpenID Connect-Ermittlungsendpunkt für diesen Benutzerablauf zu navigieren.

    Bekannter URI-Link auf der Seite

  5. Notieren Sie auf der Seite, die in Ihrem Browser geöffnet wird, den issuer Wert, z. B.:

    https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

  6. Verwenden Sie die Dropdownliste " Domäne auswählen", um die andere Domäne auszuwählen, und führen Sie dann die beiden vorherigen Schritte erneut aus, und notieren Sie ihren issuer Wert.

Sie sollten jetzt zwei URIs aufgezeichnet haben, die ähnlich sind wie:

https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/

Benutzerdefinierte Richtlinien

Wenn Sie über benutzerdefinierte Richtlinien anstelle von Benutzerflüssen verfügen, können Sie einen ähnlichen Prozess verwenden, um die Aussteller-URIs abzurufen.

  1. Navigieren Sie zu Ihrem Azure AD B2C-Mandanten
  2. Identitätserfahrungsframework auswählen
  3. Wählen Sie eine Ihrer Richtlinien der vertrauenden Seite aus, etwa B2C_1A_signup_signin
  4. Verwenden Sie die Dropdownliste " Domäne auswählen", um eine Domäne auszuwählen, z. B. yourtenant.b2clogin.com
  5. Wählen Sie den Link aus, der unter dem OpenID Connect-Ermittlungsendpunkt angezeigt wird.
  6. Aufzeichnen des Werts issuer
  7. Führen Sie die Schritte 4-6 für die andere Domäne aus, z. B. login.microsoftonline.com

Holen Sie sich den Beispielcode

Nachdem Sie nun über beide Tokenendpunkt-URIs verfügen, müssen Sie Ihren Code aktualisieren, um anzugeben, dass beide Endpunkte gültige Aussteller sind. Um ein Beispiel zu durchlaufen, laden Sie die Beispielanwendung herunter, oder klonen Sie es, und aktualisieren Sie das Beispiel, um beide Endpunkte als gültige Aussteller zu unterstützen.

Archiv herunterladen: active-directory-b2c-dotnet-webapp-and-webapi-master.zip

git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git

Aktivierung mehrerer Herausgeber in der Web-API

In diesem Abschnitt aktualisieren Sie den Code, um anzugeben, dass beide Tokenherausgeberendpunkte gültig sind.

  1. Öffnen der B2C-WebAPI-DotNet.sln Projektmappe in Visual Studio

  2. Öffnen Sie im TaskService-Projekt die Datei "TaskService\App_Start\Startup.Auth.cs" im Editor.

  3. Fügen Sie die folgende using Direktive am Anfang der Datei hinzu:

    using System.Collections.Generic;

  4. Fügen Sie die ValidIssuers Eigenschaft zur TokenValidationParameters Definition hinzu und geben Sie beide URIs an, die Sie im vorherigen Abschnitt aufgezeichnet haben.

    TokenValidationParameters tvps = new TokenValidationParameters
    {
        // Accept only those tokens where the audience of the token is equal to the client ID of this app
        ValidAudience = ClientId,
        AuthenticationType = Startup.DefaultPolicy,
        ValidIssuers = new List<string> {
            "https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/",
            "https://{your-b2c-tenant}.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"//,
            //"https://your-custom-domain/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/"
        }
    };
    

TokenValidationParameters wird von MSAL.NET bereitgestellt und von der OWIN-Middleware im nächsten Codeabschnitt in Startup.Auth.cs genutzt. Bei mehreren gültigen Ausstellern wird die OWIN-Anwendungspipeline darauf hingewiesen, dass beide Tokenendpunkte gültige Aussteller sind.

app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
{
    // This SecurityTokenProvider fetches the Azure AD B2C metadata &  from the OpenID Connect metadata endpoint
    AccessTokenFormat = new JwtFormat(tvps, new tCachingSecurityTokenProvider(String.Format(AadInstance, ultPolicy)))
});

Wie bereits erwähnt, bieten andere OWIN-Bibliotheken in der Regel eine ähnliche Einrichtung für die Unterstützung mehrerer Aussteller. Obwohl die Bereitstellung von Beispielen für jede Bibliothek außerhalb des Umfangs dieses Artikels liegt, können Sie für die meisten Bibliotheken eine ähnliche Technik verwenden.

Wechseln von Endpunkten in Web App

Mit beiden URIs, die jetzt von Ihrer Web-API unterstützt werden, müssen Sie ihre Webanwendung jetzt aktualisieren, damit sie Token vom b2clogin.com-Endpunkt abruft.

Sie können beispielsweise die Beispielwebanwendung so konfigurieren, dass der neue Endpunkt verwendet wird, indem Sie den ida:AadInstance Wert in der TaskWebApp\ -Web.config-Datei des TaskWebApp-Projekts ändern.

Ändern Sie den ida:AadInstance Wert im Web.config von TaskWebApp so, dass er auf {your-b2c-tenant-name}.b2clogin.com statt auf login.microsoftonline.com verweist.

Vorher:

<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />

Nachher (Ersetzen Sie {your-b2c-tenant} durch den Namen Ihres B2C-Mandanten.):

<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />

Wenn die Endpunktzeichenfolgen während der Ausführung der Web-App erstellt werden, werden die b2clogin.com-basierten Endpunkte verwendet, wenn sie Token anfordert.

Bei Verwendung einer benutzerdefinierten Domäne:

<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />

Nächste Schritte

In diesem Artikel wurde eine Methode zum Konfigurieren einer Web-API vorgestellt, die die Microsoft OWIN Middleware (Katana) implementiert, um Token von mehreren Ausstellerendpunkten zu akzeptieren. Wie Sie vielleicht bemerken, gibt es mehrere andere Zeichenfolgen in den Web.Config-Dateien der Projekte TaskService und TaskWebApp, die geändert werden müssen, wenn Sie diese Projekte für Ihren eigenen Mandanten erstellen und ausführen möchten. Sie sind willkommen, die Projekte entsprechend zu ändern, wenn Sie sie in Aktion sehen möchten, aber eine vollständige exemplarische Vorgehensweise liegt außerhalb des Umfangs dieses Artikels.

Weitere Informationen zu den verschiedenen Arten von Sicherheitstoken, die von Azure AD B2C ausgegeben werden, finden Sie unter Übersicht über Token in Azure Active Directory B2C.