Een web-API op basis van OWIN migreren naar b2clogin.com of een aangepast domein
In dit artikel wordt een techniek beschreven voor het inschakelen van ondersteuning voor meerdere tokenverleners in web-API's die de Open Web Interface for .NET (OWIN) implementeren. Het ondersteunen van meerdere tokeneindpunten is handig wanneer u Azure Active Directory B2C-API's (Azure AD B2C) en de bijbehorende toepassingen van het ene domein naar het andere migreert. Bijvoorbeeld van login.microsoftonline.com naar b2clogin.com of naar een aangepast domein.
Door ondersteuning toe te voegen in 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 login.microsoftonline.com uitgegeven tokens uit de API verwijdert.
In de volgende secties wordt een voorbeeld weergegeven 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.
Vereisten
U hebt de volgende Azure AD B2C-resources nodig voordat u doorgaat met de stappen in dit artikel:
- Gebruikersstromen of aangepaste beleidsregels die zijn gemaakt in uw tenant
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 de Azure Portal om de b2clogin.com en login.microsoftonline.com eindpunten op te halen die door uw Azure AD B2C-tenant worden ondersteund.
Selecteer eerst een van uw bestaande gebruikersstromen:
Navigeer naar uw Azure AD B2C-tenant in de Azure Portal
Selecteer onder Beleidde optie Gebruikersstromen (beleid)
Selecteer een bestaand beleid, bijvoorbeeld B2C_1_signupsignin1 en selecteer vervolgens Gebruikersstroom uitvoeren
Selecteer onder de kop Gebruikersstroom uitvoeren boven aan de pagina de hyperlink om naar het OpenID Connect-detectie-eindpunt voor die gebruikersstroom te navigeren.
Noteer de
issuer
waarde op de pagina die in uw browser wordt geopend, bijvoorbeeld:https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Gebruik de vervolgkeuzelijst Domein selecteren om het andere domein te selecteren, voer de vorige twee stappen opnieuw uit en noteer de waarde ervan
issuer
.
Er moeten nu twee URI's zijn 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.
- Navigeer naar uw Azure AD B2C-tenant
- Identity Experience Framework selecteren
- Selecteer een van uw relying party-beleidsregels, bijvoorbeeld B2C_1A_signup_signin
- Gebruik de vervolgkeuzelijst Domein selecteren om een domein te selecteren, bijvoorbeeld yourtenant.b2clogin.com
- Selecteer de hyperlink die wordt weergegeven onder OpenID Connect-detectie-eindpunt
- De waarde vastleggen
issuer
- 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.
Het archief downloaden: 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 van de tokenverlener geldig zijn.
Open de oplossing B2C-WebAPI-DotNet.sln in Visual Studio
Open in het project TaskService het bestand TaskService\App_Start\Startup.Auth.cs in de editor
Voeg de volgende
using
instructie toe aan het begin van het bestand:using System.Collections.Generic;
Voeg de
ValidIssuers
eigenschap toe aan deTokenValidationParameters
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 codesectie in Startup.Auth.cs. Als er meerdere geldige verleners zijn opgegeven, wordt de OWIN-toepassingspijplijn er bewust van gemaakt 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 geven 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 door uw web-API worden ondersteund, moet u uw webtoepassing bijwerken zodat deze tokens ophaalt van het b2clogin.com-eindpunt.
U kunt bijvoorbeeld de voorbeeldwebtoepassing configureren voor het gebruik van het nieuwe eindpunt door de waarde in het ida:AadInstance
TaskWebApp\ -Web.config-bestand van het Project TaskWebApp te wijzigen.
Wijzig de ida:AadInstance
waarde in de Web.config van TaskWebApp zodat deze verwijst naar {your-b2c-tenant-name}.b2clogin.com
in plaats van login.microsoftonline.com
.
Voor:
<!-- 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 een aangepast domein gebruikt:
<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />
Volgende stappen
In dit artikel werd een methode beschreven voor het configureren van een web-API die de Microsoft OWIN-middleware (Katana) implementeert om tokens van meerdere eindpunten van 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 basis van uw eigen tenant. U kunt de projecten op de juiste manier aanpassen 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.