OWIN-alapú webes API migrálása b2clogin.com vagy egyéni tartományba
Ez a cikk a .NET -hez (OWIN) készült Open Web Interface (OWIN) alkalmazást implementáló webes API-k több tokenkibocsátójának támogatásának engedélyezését ismerteti. Több jogkivonatvégpont támogatása akkor hasznos, ha az Azure Active Directory B2C (Azure AD B2C) API-kat és alkalmazásaikat egyik tartományból a másikba migrálja. Például login.microsoftonline.comb2clogin.com vagyegyéni tartományba.
Ha az API-ban támogatást ad a b2clogin.com, login.microsoftonline.com vagy egyéni tartomány által kibocsátott jogkivonatok elfogadásához, szakaszos módon migrálhatja a webalkalmazásokat, mielőtt eltávolítaná a login.microsoftonline.com kiadott jogkivonatok támogatását az API-ból.
Az alábbi szakaszok egy példát mutatnak be arra, hogyan engedélyezhet több kiállítót egy webes API-ban, amely a Microsoft OWIN köztes szoftverösszetevőket (Katana) használja. Bár a példakódok a Microsoft OWIN köztes szoftverre vonatkoznak, az általános technikának más OWIN-kódtárakra is alkalmazhatónak kell lennie.
Előfeltételek
A cikk lépéseinek folytatása előtt a következő Azure AD B2C-erőforrásokra van szüksége:
- A bérlőben létrehozott felhasználói folyamatok vagy egyéni szabályzatok
Tokenkibocsátó végpontok lekérése
Először le kell kérnie a tokenkibocsátó végponti URI-jait minden olyan kiállítóhoz, amelyet támogatni szeretne az API-ban. A Azure AD B2C-bérlő által támogatott b2clogin.com és login.microsoftonline.com végpontok beszerzéséhez kövesse az alábbi eljárást a Azure Portal.
Először válassza ki az egyik meglévő felhasználói folyamatot:
Navigáljon a Azure AD B2C-bérlőhöz a Azure Portal
A Szabályzatok területen válassza a Felhasználói folyamatok (szabályzatok) lehetőséget.
Válasszon ki egy meglévő szabályzatot, például B2C_1_signupsignin1, majd válassza a Felhasználói folyamat futtatása lehetőséget
A lap tetején található Felhasználói folyamat futtatása fejléc alatt válassza ki a hivatkozást az adott felhasználói folyamat OpenID Connect felderítési végpontjára való navigáláshoz.
A böngészőben megnyíló lapon jegyezze fel az
issuer
értéket, például:https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
A Tartomány kiválasztása legördülő menüben jelölje ki a másik tartományt, majd ismételje meg az előző két lépést, és jegyezze fel az
issuer
értékét.
Most két, a következőhöz hasonló URI-t kell rögzítenie:
https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
https://your-b2c-tenant.b2clogin.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/v2.0/
Egyéni szabályzatok
Ha felhasználói folyamatok helyett egyéni szabályzatokkal rendelkezik, egy hasonló folyamat használatával lekérheti a kiállító URI-jait.
- Navigáljon a Azure AD B2C-bérlőhöz
- Válassza az Identity Experience Framework lehetőséget
- Válasszon ki egy függő entitásra vonatkozó szabályzatot, például B2C_1A_signup_signin
- Tartomány kiválasztásához használja a Tartomány kiválasztása legördülő listát, például yourtenant.b2clogin.com
- Válassza ki az OpenID Connect felderítési végpontja alatt megjelenő hivatkozást
-
issuer
Az érték rögzítése - Hajtsa végre a másik tartomány 4–6. lépését, például login.microsoftonline.com
A mintakód letöltése
Most, hogy mindkét jogkivonatvégpont URI-jával rendelkezik, frissítenie kell a kódot, hogy mindkét végpont érvényes kiállító legyen. Egy példa áttekintéséhez töltse le vagy klónozza a mintaalkalmazást, majd frissítse a mintát, hogy mindkét végpontot érvényes kiállítóként támogassa.
Az archívum letöltése: active-directory-b2c-dotnet-webapp-and-webapi-master.zip
git clone https://github.com/Azure-Samples/active-directory-b2c-dotnet-webapp-and-webapi.git
Több kiállító engedélyezése a webes API-ban
Ebben a szakaszban úgy frissíti a kódot, hogy mindkét jogkivonat-kibocsátó végpontja érvényes legyen.
A B2C-WebAPI-DotNet.sln megoldás megnyitása a Visual Studióban
A TaskService projektben nyissa meg a TaskService\App_Start\Startup.Auth.cs fájlt a szerkesztőben
Adja hozzá a következő
using
direktívát a fájl elejéhez:using System.Collections.Generic;
Adja hozzá a
ValidIssuers
tulajdonságot aTokenValidationParameters
definícióhoz, és adja meg az előző szakaszban rögzített mindkét URI-t: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
az MSAL.NET biztosítja, és az OWIN közbenső szoftver használja a Startup.Auth.cs kód következő szakaszában. Ha több érvényes kiállító van megadva, az OWIN alkalmazásfolyamat tudatában van annak, hogy mindkét jogkivonatvégpont érvényes kiállító.
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)))
});
Ahogy korábban említettük, más OWIN-kódtárak általában hasonló lehetőséget biztosítanak több kibocsátó támogatására. Bár a jelen cikk hatókörén kívül esik minden kódtárra vonatkozó példa, a legtöbb kódtárhoz hasonló technikát használhat.
Végpontok váltása a webalkalmazásban
Mivel mindkét URI-t már támogatja a webes API, frissítenie kell a webalkalmazást, hogy lekérje a jogkivonatokat a b2clogin.com végpontról.
Konfigurálhatja például a minta webalkalmazást az új végpont használatára a ida:AadInstance
TaskWebApp projekt TaskWebApp\Web.config fájljának értékének módosításával.
Módosítsa a ida:AadInstance
TaskWebApp Web.config értékét úgy, hogy a helyett login.microsoftonline.com
hivatkozzon {your-b2c-tenant-name}.b2clogin.com
rá.
Előtte:
<!-- Old value -->
<add key="ida:AadInstance" value="https://login.microsoftonline.com/tfp/{0}/{1}" />
After (cserélje le {your-b2c-tenant}
a elemet a B2C-bérlő nevére):
<!-- New value -->
<add key="ida:AadInstance" value="https://{your-b2c-tenant}.b2clogin.com/tfp/{0}/{1}" />
Amikor a végponti sztringek a webalkalmazás végrehajtása során jönnek létre, a rendszer a b2clogin.com-alapú végpontokat használja a jogkivonatok lekérésekor.
Egyéni tartomány használata esetén:
<!-- Custom domain -->
<add key="ida:AadInstance" value="https://custom-domain/{0}/{1}" />
Következő lépések
Ez a cikk egy olyan webes API konfigurálását mutatta be, amely a Microsoft OWIN köztes szoftvert (Katana) implementálja több kiállítói végpont tokenjeinek elfogadására. Amint azt észreveheti, a TaskService- és a TaskWebApp-projektek Web.Config fájljaiban számos egyéb sztring is szerepel, amelyeket módosítani kell, ha ezeket a projekteket a saját bérlőjén szeretné létrehozni és futtatni. A projekteket tetszés szerint módosíthatja, ha működés közben szeretné látni őket, de ennek teljes körű bemutatása kívül esik a jelen cikk hatókörén.
A Azure AD B2C által kibocsátott biztonsági jogkivonatok típusairól további információt az Azure Active Directory B2C-jogkivonatok áttekintése című témakörben talál.