Delen via


Een web-API op basis van OWIN migreren naar b2clogin.com of een aangepast domein

Belangrijk

Vanaf 1 mei 2025 is Azure AD B2C niet meer beschikbaar voor nieuwe klanten. Meer informatie vindt u in onze veelgestelde vragen.

In dit artikel wordt een techniek beschreven voor het inschakelen van ondersteuning voor meerdere tokenverleners in web-API's die de Open Web Interface voor .NET (OWIN) implementeren. Het ondersteunen van meerdere tokeneindpunten is handig wanneer u Azure Active Directory B2C-API's (Azure AD B2C) en hun toepassingen van het ene naar het andere domein migreert. Bijvoorbeeld van login.microsoftonline.com tot b2clogin.com of een aangepast domein.

Door ondersteuning toe te voegen aan uw API voor het accepteren van tokens die zijn uitgegeven door b2clogin.com, login.microsoftonline.com of een aangepast domein, kunt u uw webtoepassingen op een gefaseerde manier migreren voordat u ondersteuning voor door login.microsoftonline.com uitgegeven tokens uit de API verwijdert.

In de volgende secties ziet u een voorbeeld van het inschakelen van meerdere verleners in een web-API die gebruikmaakt van de Microsoft OWIN middlewareonderdelen (Katana). Hoewel de codevoorbeelden specifiek zijn voor de Microsoft OWIN-middleware, moet de algemene techniek van toepassing zijn op andere OWIN-bibliotheken.

Vereiste voorwaarden

U hebt de volgende Azure AD B2C-resources nodig voordat u verdergaat met de stappen in dit artikel:

Eindpunten van tokenverlener ophalen

U moet eerst de eindpunt-URI's van de tokenverlener ophalen voor elke verlener die u wilt ondersteunen in uw API. Gebruik de volgende procedure in Azure Portal om de b2clogin.com en login.microsoftonline.com eindpunten op te halen die worden ondersteund door uw Azure AD B2C-tenant.

Selecteer eerst een van uw bestaande gebruikersstromen:

  1. Navigeer naar uw Azure AD B2C-tenant in Azure Portal

  2. Selecteer onder Beleidgebruikersstromen (beleid)

  3. Selecteer een bestaand beleid, bijvoorbeeld B2C_1_signupsignin1 en selecteer vervolgens Gebruikersstroom uitvoeren

  4. Selecteer onder de kop Gebruikersstroom uitvoeren boven aan de pagina de hyperlink om naar het OpenID Connect-detectie-eindpunt voor deze gebruikersstroom te navigeren.

    Bekende URI-hyperlink op de pagina Nu uitvoeren van Azure Portal

  5. Noteer de waarde van issuer op de pagina die in uw browser wordt geopend, bijvoorbeeld:

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

  6. Gebruik de vervolgkeuzelijst Domein selecteren om het andere domein te selecteren en voer vervolgens de vorige twee stappen opnieuw uit en noteer issuer de waarde ervan.

U moet nu twee URI's hebben geregistreerd die vergelijkbaar zijn met:

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

Aangepast beleid

Als u aangepast beleid hebt in plaats van gebruikersstromen, kunt u een vergelijkbaar proces gebruiken om de uri's van de verlener op te halen.

  1. Navigeer naar uw Azure AD B2C-tenant
  2. Identity Experience Framework selecteren
  3. Selecteer een van uw relying party-beleid, bijvoorbeeld B2C_1A_signup_signin
  4. Gebruik de vervolgkeuzelijst Domein selecteren om een domein te selecteren, bijvoorbeeld yourtenant.b2clogin.com
  5. Selecteer de hyperlink die wordt weergegeven onder OpenID Connect-detectie-eindpunt
  6. Leg de issuer waarde vast
  7. Voer de stappen 4-6 uit voor het andere domein, bijvoorbeeld login.microsoftonline.com

De voorbeeldcode halen

Nu u beide tokeneindpunt-URI's hebt, moet u uw code bijwerken om op te geven dat beide eindpunten geldige verleners zijn. Als u een voorbeeld wilt doorlopen, downloadt of kloont u de voorbeeldtoepassing en werkt u het voorbeeld bij om beide eindpunten als geldige verleners te ondersteunen.

Download het archief: active-directory-b2c-dotnet-webapp-and-webapi-master.zip

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

Meerdere verleners inschakelen in web-API

In deze sectie werkt u de code bij om op te geven dat beide eindpunten voor tokenverleners geldig zijn.

  1. De B2C-WebAPI-DotNet.sln-oplossing openen in Visual Studio

  2. Open in het Project TaskService het bestand TaskService\App_Start\Startup.Auth.cs in uw editor

  3. Voeg de volgende using instructie toe aan het begin van het bestand:

    using System.Collections.Generic;

  4. Voeg de ValidIssuers eigenschap toe aan de TokenValidationParameters definitie en geef beide URI's op die u in de vorige sectie hebt vastgelegd:

    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 wordt geleverd door MSAL.NET en wordt gebruikt door de OWIN-middleware in de volgende sectie van de code in Startup.Auth.cs. Wanneer er meerdere geldige verleners zijn opgegeven, wordt de OWIN-toepassingspijplijn op de hoogte gesteld dat beide tokeneindpunten geldige verleners zijn.

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

Zoals eerder vermeld, bieden andere OWIN-bibliotheken doorgaans een vergelijkbare faciliteit voor het ondersteunen van meerdere verleners. Hoewel het bieden van voorbeelden voor elke bibliotheek buiten het bereik van dit artikel valt, kunt u een vergelijkbare techniek gebruiken voor de meeste bibliotheken.

Schakelen tussen eindpunten in web-app

Nu beide URI's worden ondersteund door uw web-API, moet u uw webtoepassing bijwerken zodat tokens worden opgehaald uit het b2clogin.com-eindpunt.

U kunt bijvoorbeeld de voorbeeldwebtoepassing zo configureren dat het nieuwe eindpunt wordt gebruikt door de ida:AadInstance waarde in het bestand TaskWebApp\Web.config van het Project TaskWebApp te wijzigen.

Wijzig de ida:AadInstance waarde in Web.config van TaskWebApp zodat deze naar {your-b2c-tenant-name}.b2clogin.com verwijst in plaats van naar login.microsoftonline.com.

Voordat:

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

Na (vervang door {your-b2c-tenant} de naam van uw B2C-tenant):

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

Wanneer de eindpunttekenreeksen worden samengesteld tijdens de uitvoering van de web-app, worden de op b2clogin.com gebaseerde eindpunten gebruikt wanneer tokens worden aangevraagd.

Wanneer u aangepast domein gebruikt:

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

Volgende stappen

In dit artikel wordt een methode beschreven voor het configureren van een web-API die de Microsoft OWIN-middleware (Katana) implementeert om tokens van meerdere eindpunten voor verleners te accepteren. Zoals u misschien ziet, zijn er verschillende andere tekenreeksen in de Web.Config-bestanden van zowel de TaskService- als TaskWebApp-projecten die moeten worden gewijzigd als u deze projecten wilt bouwen en uitvoeren op uw eigen tenant. U kunt de projecten op de juiste manier wijzigen als u ze in actie wilt zien, maar een volledig overzicht hiervan valt buiten het bereik van dit artikel.

Zie Overzicht van tokens in Azure Active Directory B2C voor meer informatie over de verschillende typen beveiligingstokens die door Azure AD B2C worden verzonden.