Megosztás a következőn keresztül:


Engedélyezze a hitelesítést saját webes API-jában az Azure AD B2C használatával.

Fontos

2025. május 1-jére az Azure AD B2C már nem lesz elérhető az új ügyfelek számára. További információ a GYIK-ben.

A web API elérésének engedélyezéséhez csak azokat a kérelmeket szolgálhatja ki, amelyek tartalmaznak egy érvényes hozzáférési tokent, amelyet az Azure Active Directory B2C (Azure AD B2C) bocsát ki. Az alábbi cikk bemutatja, hogyan engedélyezheti Azure AD B2C jogosultságot a webes API-hoz. Miután elvégezte ennek a cikknek a lépéseit, csak azok a felhasználók lesznek jogosultak hívni az Ön webes API végpontjait, akik érvényes hozzáférési tokent szereznek.

Előfeltételek

Mielőtt elkezdi, olvassa el az alábbi cikkek egyikét, amelyek arról szólnak, hogyan lehet beállítani a hitelesítést olyan alkalmazásokhoz, amelyek webes API-kat hívnak meg. Ezután kövesse a cikk lépéseit, hogy a mintául szolgáló webes API-t lecserélje saját webes API-jára.

Áttekintés

A token alapú hitelesítés biztosítja, hogy a webes API-kérelmek tartalmaznak érvényes hozzáférési tokent.

Az alkalmazás a következő lépéseket hajtja végre:

  1. Felhasználók hitelesítése az Azure AD B2C használatával történik.

  2. Megszerzi a web API végpontjához szükséges jogosultságokkal (hatáskörökkel) rendelkező hozzáférési tokent.

  3. Átadja a hozzáférési tokent hordozó tokentként az HTTP kérés hitelesítési fejléce formátumának megfelelően.

    Authorization: Bearer <access token>
    

A web API a következő lépéseket hajtja végre:

  1. Az HTTP-kérésben lévő engedélyezési fejlécelemben található legitimációs token olvasása történik.

  2. Érvényesíti a tokent.

  3. Ellenőrzi az engedélyeket (hatóköröket) a tokenben.

  4. Leolvassa a tokenbe kódolt állításokat (opcionális).

  5. Válaszol az HTTP kérésre.

Az alkalmazás regisztrációjának áttekintése

Az alkalmazás számára az Azure AD B2C használatával történő bejelentkezés és egy webes API hívásának lehetővé tétele érdekében két alkalmazást kell regisztrálnia az Azure AD B2C könyvtárban.

  • A webes, mobil vagy egyoldalas alkalmazás regisztráció lehetővé teszi az alkalmazás számára, hogy bejelentkezzen az Azure AD B2C-be. Az alkalmazás regisztrációs folyamata létrehoz egy alkalmazásazonosítót, más néven ügyfélazonosítót, amely egyedileg azonosítja az alkalmazását (például, alkalmazásazonosító: 1).

  • A webes API-regisztrációval az alkalmazás meghívhat egy védett webes API-t. A regisztráció elérhetővé teszi a webes API-engedélyeket (hatóköröket). Az alkalmazás regisztrációs folyamata létrehoz egy alkalmazásazonosítót, amely egyedülálló módon azonosítja a webes API-ját (például: App ID: 2). Engedélyezze az alkalmazásának (App ID: 1) jogosultságait a webes API-hatókörök számára (App ID: 2).

A következő diagram bemutatja az alkalmazásregisztrációkat és az alkalmazás architektúráját.

Az alkalmazásregisztrációk és az alkalmazásarchitektúra diagramja egy webes API-val rendelkező alkalmazáshoz.

A fejlesztési környezet előkészítése

A következő szakaszokban egy új webes API projektet hoz létre. Válassza ki a programozási nyelvét: ASP.NET Core vagy Node.js. Győződjön meg arról, hogy számítógépe az alábbi szoftverek valamelyikét futtatja:

1. lépés: Védett webes API létrehozása

Hozzon létre egy új webes API projektet. Először válassza ki a használni kívánt programozási nyelvet, ASP.NET Core vagy Node.js.

Használja a dotnet new parancsot. A dotnet new parancs létrehoz egy új mappát TodoList névvel, amely a web API projekt eszközeit tartalmazza. Nyissa meg a könyvtárat, majd nyissa meg a Visual Studio Code-ot.

dotnet new webapi -o TodoList
cd TodoList
code . 

Amikor felszólítják, hogy "adja hozzá a szükséges eszközöket a projekthez," válassza az Igen opciót.

2. lépés: Telepítse a függőségeket

Adja hozzá az azonosítási könyvtárat a webes API projektjéhez. Az autentikációs könyvtár elemzi az HTTP autentikációs fejléceket, ellenőrzi a tokent és kibontja az állításokat. További információkért tekintse át a könyvtár dokumentációját.

Az autentikációs könyvtár hozzáadásához telepítse a csomagot a következő parancs futtatásával:

dotnet add package Microsoft.Identity.Web

3. lépés: Indítsa el a hitelesítési könyvtárat

Adja hozzá a szükséges kódot az azonosítási könyvtár inicializálásához.

Nyissa meg a Startup.cs fájlt, majd az osztály elején adja hozzá a következő using deklarációkat:

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.Identity.Web;

Keresse meg a ConfigureServices(IServiceCollection services) függvényt. Ezután a services.AddControllers(); kódsor előtt adja hozzá a következő kódrészletet:

public void ConfigureServices(IServiceCollection services)
{
    // Adds Microsoft Identity platform (Azure AD B2C) support to protect this Api
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddMicrosoftIdentityWebApi(options =>
    {
        Configuration.Bind("AzureAdB2C", options);

        options.TokenValidationParameters.NameClaimType = "name";
    },
    options => { Configuration.Bind("AzureAdB2C", options); });
    // End of the Microsoft Identity platform block    

    services.AddControllers();
}

Keresse meg a Configure függvényt. Ezután, közvetlenül a app.UseRouting(); kódsor után, adja hozzá a következő kódrészletet:

app.UseAuthentication();

A változtatás után a kódodnak így kell kinéznie:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();
    
    // Add the following line 
    app.UseAuthentication();
    // End of the block you add
    
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

4. lépés: Adja hozzá a végpontokat

Adj hozzá két végpontot a webes API-dhoz.

  • Névtelen /public végpont. Ez a végpont visszaadja a jelenlegi dátumot és időt. Használd ezt a web API-d hibakeresésére anonim hívásokkal.
  • Védett /hello végpont. Ez az végpont visszaadja a hozzáférési jogkivonaton belüli name igény értékét.

Az anonim végpont hozzáadásához:

A /Controllers mappa alatt hozzon létre egy PublicController.cs fájlt, majd adja hozzá az alábbi kódrészlethez:

using System;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;

namespace TodoList.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class PublicController : ControllerBase
    {
        private readonly ILogger<PublicController> _logger;

        public PublicController(ILogger<PublicController> logger)
        {
            _logger = logger;
        }

        [HttpGet]
        public ActionResult Get()
        {
            return Ok( new {date = DateTime.UtcNow.ToString()});
        }
    }
}

A védett végpont hozzáadásához:

A /Controllers mappa alatt, adj hozzá egy HelloController.cs fájlt, majd add hozzá a következő kódhoz:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Microsoft.Identity.Web.Resource;

namespace TodoList.Controllers
{
    [Authorize]
    [RequiredScope("tasks.read")]
    [ApiController]
    [Route("[controller]")]
    public class HelloController : ControllerBase
    {

        private readonly ILogger<HelloController> _logger;
        private readonly IHttpContextAccessor _contextAccessor;

        public HelloController(ILogger<HelloController> logger, IHttpContextAccessor contextAccessor)
        {
            _logger = logger;
            _contextAccessor = contextAccessor;
        }

        [HttpGet]
        public ActionResult Get()
        {
            return Ok( new { name = User.Identity.Name});
        }
    }
}

A HelloController vezérlőre az AuthorizeAttribute került alkalmazásra, amely csak hitelesített felhasználók számára korlátozza a hozzáférést.

A vezérlő is fel van díszítve a [RequiredScope("tasks.read")]-vel. A RequiredScopeAttribute ellenőrzi, hogy a webes API-t a megfelelő tartományokkal hívják meg, tasks.read.

5. lépés: A webszerver konfigurálása

Fejlesztői környezetben állítsa be a webes API-t, hogy figyelje a bejövő HTTP vagy HTTPS kérések portszámát. Ebben a példában használja a 6000-es HTTP portot és a 6001-es HTTPS portot. A webes API alap URI-je http://localhost:6000 lesz HTTP-hez és https://localhost:6001 HTTPS-hez.

Adja hozzá a következő JSON-részletet az appsettings.json fájlhoz.

"Kestrel": {
    "EndPoints": {
      "Http": {
        "Url": "http://localhost:6000"
      },
      "Https": {
         "Url": "https://localhost:6001"   
        }
    }
  }

6. lépés: A webes API konfigurálása

Adjon hozzá konfigurációkat egy konfigurációs fájlhoz. A fájl tartalmazza az Azure AD B2C identitásszolgáltatóval kapcsolatos információkat. A web API alkalmazás ezt az információt használja a webalkalmazás által átadott hozzáférési jogkivonat érvényességének ellenőrzésére, amelyet bearer tokenként továbbítanak.

hu-HU: A projekt gyökérmappájában nyissa meg a appsettings.json fájlt, és adja hozzá a következő beállításokat:

{
  "AzureAdB2C": {
    "Instance": "https://contoso.b2clogin.com",
    "Domain": "contoso.onmicrosoft.com",
    "ClientId": "<web-api-app-application-id>",
    "SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
    "SignUpSignInPolicyId": "<your-sign-up-in-policy>"
  },
  // More settings here
}

A appsettings.json fájlban frissítse a következő tulajdonságokat:

Szakasz Kulcs Érték
AzureAdB2C Példa Azure AD B2C bérlőnevének első része (például, ).
AzureAdB2C Szakterület Az ön Azure AD B2C bérlő teljes bérlőnév (például, contoso.onmicrosoft.com).
AzureAdB2C Ügyfélazonosító A webes API alkalmazásazonosító. A megelőző diagramon ez az az alkalmazás, amelynek Alkalmazásazonosítója: 2. A webes API-alkalmazás regisztrációs azonosítójának megszerzéséről a Előfeltételek című részben olvashat.
AzureAdB2C RegisztrációBejelentkezésIrányelvAzonosító A felhasználói folyamatok vagy az egyéni irányelv. Ha szeretné megtudni, hogyan szerezheti be a felhasználói folyamatát vagy szabályzatát, tekintse meg a Előfeltételek című részt.

7. lépés: A web API futtatása és tesztelése

Végül futtassa a webes API-t az Azure AD B2C környezet beállításaival.

A parancssorban indítsa el a webalkalmazást a következő parancs futtatásával:

 dotnet run

A következő kimenetet kell látnia, ami azt jelenti, hogy az alkalmazása működik és készen áll a kérések fogadására.

Now listening on: http://localhost:6000

A program leállításához a parancshéjban válassza a Ctrl+C-t. Újra futtathatja az alkalmazást a node app.js parancs használatával.

Jótanács

Alternatívaként, a dotnet run parancs futtatásához használhatja a Visual Studio Code hibakeresőt. A Visual Studio Code beépített hibakeresője segít felgyorsítani a szerkesztési, fordítási és hibakeresési ciklusát.

Nyisson meg egy böngészőt, és ugorjon a http://localhost:6000/public címre. A böngészőablakban meg kell jelennie a következő szövegnek, a jelenlegi dátummal és idővel együtt.

8. lépés: A webes API meghívása az alkalmazásból

Próbálja meg elérni a védett webes API végpontot hozzáférési token nélkül. Nyisson meg egy böngészőt, és ugorjon a http://localhost:6000/hello címre. ** Az API egy jogosulatlan HTTP hibajelzést ad vissza, megerősítve, hogy a webes API védett egy hordozó tokennel.

Folytassa az alkalmazás beállítását, hogy felhívja a web API-t. Útmutatásért lásd a Előfeltételek részt.

Nézze meg ezt a videót, hogy megismerje a legjobb gyakorlatokat az Azure AD B2C és egy API integrálása során.

Szerezze be a teljes példát a GitHub-on.