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:
- Przepływy użytkownika lub zasady niestandardowe utworzone w dzierżawie
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:
Przejdź do dzierżawy usługi Azure AD B2C w Azure Portal
W obszarze Zasady wybierz pozycję Przepływy użytkownika (zasady)
Wybierz istniejące zasady, na przykład B2C_1_signupsignin1, a następnie wybierz pozycję Uruchom przepływ użytkownika
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.
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/
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.
- Przejdź do dzierżawy usługi Azure AD B2C
- Wybierz pozycję Identity Experience Framework
- Wybierz jedną z zasad jednostki uzależnionej, na przykład B2C_1A_signup_signin
- Użyj listy rozwijanej Wybierz domenę , aby wybrać domenę, na przykład yourtenant.b2clogin.com
- Wybierz hiperlink wyświetlany w obszarze Punkt końcowy odnajdywania OpenID Connect
issuer
Rejestrowanie wartości- 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.
Otwórz rozwiązanie B2C-WebAPI-DotNet.sln w programie Visual Studio
W projekcie TaskService otwórz plik TaskService\App_Start\Startup.Auth.cs w edytorze
Dodaj następującą
using
dyrektywę na początku pliku:using System.Collections.Generic;
ValidIssuers
Dodaj właściwość doTokenValidationParameters
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.