Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
- Hitelesítés konfigurálása egy mintaként szolgáló ASP.NET Core alkalmazásban
- Hitelesítés konfigurálása egy minta egyoldalas alkalmazásban (SPA)
Á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:
Felhasználók hitelesítése az Azure AD B2C használatával történik.
Megszerzi a web API végpontjához szükséges jogosultságokkal (hatáskörökkel) rendelkező hozzáférési tokent.
Á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:
Az HTTP-kérésben lévő engedélyezési fejlécelemben található legitimációs token olvasása történik.
Érvényesíti a tokent.
Ellenőrzi az engedélyeket (hatóköröket) a tokenben.
Leolvassa a tokenbe kódolt állításokat (opcionális).
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.
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:
- Visual Studio Code
- C# for Visual Studio Code (legújabb verzió)
- .NET 5.0 SDK
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üliname
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.
Kapcsolódó tartalom
Szerezze be a teljes példát a GitHub-on.
- Szerezze meg a webes API-t a Microsoft identitás könyvtár használatával.