Migrowanie internetowego interfejsu API OWIN do b2clogin.com lub domeny niestandardowej

W tym artykule opisano technikę włączania obsługi wielu wystawców tokenów w internetowych interfejsach API, które implementują interfejs Open Web Interface for .NET (OWIN). Obsługa wielu punktów końcowych tokenu jest przydatna podczas migrowania interfejsów API usługi Azure Active Directory B2C (Azure AD B2C) i ich aplikacji z jednej domeny do innej. Na przykład z login.microsoftonline.com do b2clogin.com lub do domeny niestandardowej.

Dodając obsługę w interfejsie API do akceptowania tokenów wystawionych przez b2clogin.com, login.microsoftonline.com lub domenę niestandardową, możesz migrować aplikacje internetowe w sposób przygotowany przed usunięciem obsługi tokenów wystawionych przez login.microsoftonline.com z interfejsu API.

W poniższych sekcjach przedstawiono przykład włączania wielu wystawców w internetowym interfejsie API korzystającym ze składników oprogramowania pośredniczącego Microsoft OWIN (Katana). Chociaż przykłady kodu są specyficzne dla oprogramowania pośredniczącego Microsoft OWIN, ogólna technika powinna być stosowana do innych bibliotek OWIN.

Wymagania wstępne

Przed kontynuowaniem kroków opisanych w tym artykule potrzebne są następujące zasoby Azure AD B2C:

Uzyskiwanie punktów końcowych wystawcy tokenu

Najpierw musisz pobrać identyfikatory URI punktu końcowego wystawcy tokenu dla każdego wystawcy, który ma być obsługiwany w interfejsie API. Aby uzyskać punkty końcowe b2clogin.com i login.microsoftonline.com obsługiwane przez dzierżawę usługi Azure AD B2C, wykonaj poniższą procedurę w Azure Portal.

Zacznij od wybrania jednego z istniejących przepływów użytkownika:

  1. Przejdź do dzierżawy usługi Azure AD B2C w Azure Portal

  2. W obszarze Zasady wybierz pozycję Przepływy użytkownika (zasady)

  3. Wybierz istniejące zasady, na przykład B2C_1_signupsignin1, a następnie wybierz pozycję Uruchom przepływ użytkownika

  4. W obszarze nagłówka Uruchom przepływ użytkownika w górnej części strony wybierz hiperlink, aby przejść do punktu końcowego odnajdywania OpenID Connect dla tego przepływu użytkownika.

    Dobrze znane hiperłącze identyfikatora URI na stronie Uruchom teraz Azure Portal

  5. Na stronie, która zostanie otwarta w przeglądarce, zapisz issuer wartość, na przykład:

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

  6. Użyj listy rozwijanej Wybierz domenę , aby wybrać inną domenę, a następnie ponownie wykonaj dwa poprzednie kroki i zapisz jej issuer wartość.

Powinny być teraz zarejestrowane dwa identyfikatory URI, które są podobne do następujących:

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

Zasady niestandardowe

Jeśli masz zasady niestandardowe zamiast przepływów użytkowników, możesz użyć podobnego procesu, aby pobrać identyfikatory URI wystawcy.

  1. Przejdź do dzierżawy usługi Azure AD B2C
  2. Wybierz pozycję Identity Experience Framework
  3. Wybierz jedną z zasad jednostki uzależnionej, na przykład B2C_1A_signup_signin
  4. Użyj listy rozwijanej Wybierz domenę , aby wybrać domenę, na przykład yourtenant.b2clogin.com
  5. Wybierz hiperlink wyświetlany w obszarze Punkt końcowy odnajdywania OpenID Connect
  6. issuer Rejestrowanie wartości
  7. Wykonaj kroki 4–6 dla innej domeny, na przykład login.microsoftonline.com

Pobieranie przykładowego kodu

Teraz, gdy masz oba identyfikatory URI punktu końcowego tokenu, musisz zaktualizować kod, aby określić, że oba punkty końcowe są prawidłowymi wystawcami. Aby zapoznać się z przykładem, pobierz lub sklonuj przykładową aplikację, a następnie zaktualizuj przykład tak, aby obsługiwał oba punkty końcowe jako prawidłowych wystawców.

Pobierz archiwum: active-directory-b2c-dotnet-webapp-and-webapi-master.zip

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

Włączanie wielu wystawców w internetowym interfejsie API

W tej sekcji zaktualizujesz kod, aby określić, że oba punkty końcowe wystawcy tokenu są prawidłowe.

  1. Otwórz rozwiązanie B2C-WebAPI-DotNet.sln w programie Visual Studio

  2. W projekcie TaskService otwórz plik TaskService\App_Start\Startup.Auth.cs w edytorze

  3. Dodaj następującą using dyrektywę na początku pliku:

    using System.Collections.Generic;

  4. ValidIssuers Dodaj właściwość do TokenValidationParameters definicji i określ oba identyfikatory URI zarejestrowane w poprzedniej sekcji:

    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 program jest dostarczany przez MSAL.NET i jest używany przez oprogramowanie pośredniczące OWIN w następnej sekcji kodu w pliku Startup.Auth.cs. Po określeniu wielu prawidłowych wystawców potok aplikacji OWIN jest świadomy, że oba punkty końcowe tokenu są prawidłowymi wystawcami.

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)))
});

Jak wspomniano wcześniej, inne biblioteki OWIN zwykle zapewniają podobną funkcję obsługi wielu wystawców. Chociaż udostępnianie przykładów dla każdej biblioteki wykracza poza zakres tego artykułu, można użyć podobnej techniki dla większości bibliotek.

Przełączanie punktów końcowych w aplikacji internetowej

W przypadku obu identyfikatorów URI obsługiwanych teraz przez internetowy interfejs API należy zaktualizować aplikację internetową, aby pobierała tokeny z punktu końcowego b2clogin.com.

Na przykład można skonfigurować przykładową aplikację internetową do używania nowego punktu końcowego, modyfikując ida:AadInstance wartość w pliku TaskWebApp\Web.config projektu TaskWebApp .

ida:AadInstance Zmień wartość w Web.config taskWebApp, tak aby odwołyj {your-b2c-tenant-name}.b2clogin.com się do niej zamiast login.microsoftonline.com.

Przed:

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

Po (zastąp {your-b2c-tenant} ciąg nazwą dzierżawy B2C):

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

Gdy ciągi punktów końcowych są tworzone podczas wykonywania aplikacji internetowej, punkty końcowe oparte na b2clogin.com są używane podczas żądania tokenów.

W przypadku korzystania z domeny niestandardowej:

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

Następne kroki

W tym artykule przedstawiono metodę konfigurowania internetowego interfejsu API implementowania oprogramowania pośredniczącego Microsoft OWIN (Katana) w celu akceptowania tokenów z wielu punktów końcowych wystawcy. Jak można zauważyć, istnieje kilka innych ciągów w plikachWeb.Config projektów TaskService i TaskWebApp, które należy zmienić, jeśli chcesz skompilować i uruchomić te projekty w ramach własnej dzierżawy. Możesz odpowiednio zmodyfikować projekty, jeśli chcesz je zobaczyć w działaniu, jednak pełny przewodnik po wykonaniu tych czynności wykracza poza zakres tego artykułu.

Aby uzyskać więcej informacji na temat różnych typów tokenów zabezpieczających emitowanych przez Azure AD B2C, zobacz Omówienie tokenów w usłudze Azure Active Directory B2C.