Sdílet prostřednictvím


Migrace webového rozhraní API založeného na OWIN do b2clogin.com nebo vlastní domény

Důležité

Od 1. května 2025 už nebude Azure AD B2C k dispozici k nákupu pro nové zákazníky. Další informace najdete v našich nejčastějších dotazech.

Tento článek popisuje techniku povolení podpory více vystavitelů tokenů ve webových rozhraních API, která implementují otevřené webové rozhraní pro .NET (OWIN). Podpora více koncových bodů tokenu je užitečná při migraci rozhraní API Azure Active Directory B2C (Azure AD B2C) a jejich aplikací z jedné domény do druhé. Například z login.microsoftonline.com do b2clogin.com nebo do vlastní domény.

Přidáním podpory pro přijímání tokenů vydaných b2clogin.com, login.microsoftonline.com nebo vlastní doménou do rozhraní API můžete své webové aplikace migrovat postupně, než z rozhraní API odeberete podporu tokenů vydaných login.microsoftonline.com.

Následující části představují příklad, jak povolit více vydavatelů ve webovém rozhraní API, které používá komponenty middlewaru Microsoft OWIN (Katana). I když jsou příklady kódu specifické pro middleware Microsoft OWIN, obecná technika by měla být použitelná i pro jiné knihovny OWIN.

Požadavky

Než budete pokračovat v krocích v tomto článku, budete potřebovat následující prostředky Azure AD B2C:

Získání koncových bodů vystavitele tokenu

Nejprve musíte získat identifikátory URI koncového bodu vystavitele tokenu pro každého vystavitele, kterého chcete ve svém rozhraní API podporovat. Pokud chcete získat koncové body b2clogin.com a login.microsoftonline.com podporované vaším tenantem Azure AD B2C, použijte následující postup v Azure Portal.

Začněte výběrem jednoho ze stávajících toků uživatelů:

  1. V Azure Portal přejděte do svého tenanta Azure AD B2C.

  2. V části Zásady vyberte Toky uživatelů (zásady)

  3. Vyberte existující zásadu, například B2C_1_signupsignin1, a pak vyberte Spustit tok uživatele

  4. Pod nadpisem Spustit tok uživatele v horní části stránky vyberte hypertextový odkaz, kterým chcete přejít na koncový bod zjišťování OpenID Connect pro daný tok uživatele.

    Známý hypertextový odkaz identifikátoru URI na stránce Spustit v Azure Portal

  5. Na stránce, která se otevře ve vašem prohlížeči, si poznamenejte issuer hodnotu, například:

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

  6. Pomocí rozevíracího seznamu Vybrat doménu vyberte druhou doménu, poté znovu proveďte předchozí dva kroky a zaznamenejte její issuer hodnotu.

Nyní byste měli mít zaznamenané dva identifikátory URI, které jsou podobné:

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

Vlastní zásady

Pokud máte místo toků uživatelů vlastní zásady, můžete k získání identifikátorů URI vystavitele použít podobný proces.

  1. Přejděte ke svému tenantovi Azure AD B2C.
  2. Výběr architektury prostředí identit
  3. Vyberte jednu ze zásad předávající strany, například B2C_1A_signup_signin
  4. Pomocí rozevíracího seznamu Vybrat doménu vyberte doménu, například yourtenant.b2clogin.com
  5. Vyberte hypertextový odkaz zobrazený v části Koncový bod zjišťování OpenID Connect
  6. Poznamenejte si issuer hodnotu
  7. Proveďte kroky 4 až 6 pro druhou doménu, například login.microsoftonline.com

Získání ukázkového kódu

Teď, když máte oba identifikátory URI koncového bodu tokenu, musíte aktualizovat kód tak, aby bylo určeno, že oba koncové body jsou platnými vystaviteli. Pokud si chcete projít příklad, stáhněte si nebo naklonujte ukázkovou aplikaci a pak ji aktualizujte tak, aby podporovala oba koncové body jako platné vystavitele.

Stáhnout archiv: active-directory-b2c-dotnet-webapp-and-webapi-master.zip

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

Povolení více vydavatelů ve webovém rozhraní API

V této části aktualizujete kód a určíte, že oba koncové body vystavitele tokenu jsou platné.

  1. Otevření řešení B2C-WebAPI-DotNet.sln v aplikaci Visual Studio

  2. V projektu TaskService otevřete v editoru soubor TaskService\App_Start\Startup.Auth.cs

  3. Na začátek souboru přidejte následující using direktivu:

    using System.Collections.Generic;

  4. ValidIssuers Přidejte vlastnost do TokenValidationParameters definice a zadejte oba identifikátory URI, které jste si poznamenali v předchozí části:

    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 je poskytován společností MSAL.NET a je využíván middlewarem OWIN v další části kódu v Startup.Auth.cs. Pokud je zadáno více platných vystavitelů, kanál aplikace OWIN je upozorněn, že oba koncové body tokenu jsou platnými vystaviteli.

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 již bylo zmíněno dříve, jiné knihovny OWIN obvykle poskytují podobné zařízení pro podporu více vydavatelů. I když je poskytování příkladů pro každou knihovnu mimo rozsah tohoto článku, můžete použít podobnou techniku pro většinu knihoven.

Přepnutí koncových bodů ve webové aplikaci

Vzhledem k tomu, že vaše webové rozhraní API nyní podporuje oba identifikátory URI, musíte nyní aktualizovat webovou aplikaci tak, aby načítala tokeny z koncového bodu b2clogin.com.

Ukázkovou webovou aplikaci můžete například nakonfigurovat tak, aby používala nový koncový bod, a to úpravou ida:AadInstance hodnoty v souboru TaskWebApp\Web.config projektu TaskWebApp .

ida:AadInstance Změňte hodnotu v Web.config TaskWebApp tak, aby odkazovala {your-b2c-tenant-name}.b2clogin.com místo login.microsoftonline.com.

Před:

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

Po (nahraďte {your-b2c-tenant} názvem vašeho tenanta B2C):

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

Když jsou řetězce koncových bodů vytvořeny během provádění webové aplikace, použijí se při žádosti o tokeny koncové body založené na b2clogin.com.

Při použití vlastní domény:

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

Další kroky

Tento článek představil metodu konfigurace webového rozhraní API implementující middleware Microsoft OWIN (Katana) pro přijímání tokenů z více koncových bodů vystavitele. Jak si můžete všimnout, v souborech Web.Config projektů TaskService i TaskWebApp je několik dalších řetězců, které by bylo potřeba změnit, pokud chcete tyto projekty sestavit a spustit proti vlastnímu tenantovi. Pokud je chcete vidět v akci, můžete projekty vhodně upravit, ale úplný návod k tomu je mimo rozsah tohoto článku.

Další informace o různých typech tokenů zabezpečení generovaných Azure AD B2C najdete v tématu Přehled tokenů v Azure Active Directory B2C.