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:

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:

  1. Navigáljon a Azure AD B2C-bérlőhöz a Azure Portal

  2. A Szabályzatok területen válassza a Felhasználói folyamatok (szabályzatok) lehetőséget.

  3. 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

  4. 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.

    Jól ismert URI-hivatkozás a Azure Portal Futtatás most lapján

  5. 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/

  6. 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.

  1. Navigáljon a Azure AD B2C-bérlőhöz
  2. Válassza az Identity Experience Framework lehetőséget
  3. Válasszon ki egy függő entitásra vonatkozó szabályzatot, például B2C_1A_signup_signin
  4. 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
  5. Válassza ki az OpenID Connect felderítési végpontja alatt megjelenő hivatkozást
  6. issuer Az érték rögzítése
  7. 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.

  1. A B2C-WebAPI-DotNet.sln megoldás megnyitása a Visual Studióban

  2. A TaskService projektben nyissa meg a TaskService\App_Start\Startup.Auth.cs fájlt a szerkesztőben

  3. Adja hozzá a következő using direktívát a fájl elejéhez:

    using System.Collections.Generic;

  4. Adja hozzá a ValidIssuers tulajdonságot a TokenValidationParameters 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:AadInstanceTaskWebApp 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.comhivatkozzon {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.