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


Védett web API: Kódkonfiguráció

A következőkre vonatkozik: Zöld kör fehér pipa szimbólummal, amely a következő tartalmat jelzi a munkaerő-bérlőkre. Munkaerő-bérlők (további információ)

A védett webes API kódjának konfigurálásához tekintse meg a következőket:

  • Mi határozza meg az API-kat védettként.
  • Meghatalmazási token konfigurálása.
  • Hogyan érvényesítsük a jogkivonatot.

Elfogadott jogkivonat-verzió

A Microsoft Identitásplatform 1.0-s és 2.0-s verziós jogkivonatokat bocsáthat ki. További információ ezekről a tokenekről: Hozzáférési jogkivonatok.

Az API által elfogadható jogkivonat-verzió a támogatott fióktípusok kiválasztásától függ, amikor webes API-alkalmazásregisztrációt hoz létre az Azure Portalon.

  • Ha a támogatott fióktípusok értéke bármely szervezeti címtárban és személyes Microsoft-fiókban (például Skype, Xbox, Outlook.com) található fiókok, az elfogadott jogkivonat-verziónak 2.0-s verziónak kell lennie.
  • Ellenkező esetben az elfogadott jogkivonat verziója lehet 1.0-s verzió.

Az alkalmazás létrehozása után az alábbi lépések végrehajtásával határozhatja meg vagy módosíthatja az elfogadott jogkivonat verzióját:

  1. A Microsoft Entra Felügyeleti központban válassza ki az alkalmazást, majd válassza a Jegyzék elemet.
  2. Keresse meg az accessTokenAcceptedVersion tulajdonságot a jegyzékben.
  3. Az érték megadja a Microsoft Entra számára, hogy a webes API melyik jogkivonat-verziót fogadja el.
    • Ha az érték 2, a webes API 2.0-s jogkivonatokat fogad el.
    • Ha az érték null, a web API 1.0-s jogkivonatokat fogad el.
  4. Ha módosította a jogkivonat verzióját, válassza a Mentés lehetőséget.

A webes API megadja, hogy melyik jogkivonat-verziót fogadja el. Amikor egy ügyfél jogkivonatot kér a webes API-hoz a Microsoft Identitásplatform, az ügyfél egy jogkivonatot kap, amely jelzi, hogy a webes API melyik jogkivonat-verziót fogadja el.

Mi határozza meg a ASP.NET és ASP.NET Core API-kat védettként?

A webalkalmazásokhoz hasonlóan a ASP.NET és ASP.NET Core webes API-k is védettek, mert a vezérlőműveleteik előtagja az [Engedélyezés] attribútum. A vezérlőműveletek csak akkor hívhatók meg, ha az API-t hitelesített identitással hívják meg.

A következő kérdéseket kell figyelembe venni:

  • Csak egy alkalmazás hívhat meg webes API-t. Honnan tudja az API a meghívó alkalmazás identitását?
  • Ha az alkalmazás egy felhasználó nevében hívja meg az API-t, mi a felhasználó identitása?

Tulajdonosi jogkivonat

Az alkalmazás meghívásnál a fejlécbe állított hordozó token az alkalmazás identitásával kapcsolatos információkat tárolja. Emellett információkat is tárol a felhasználóról, kivéve, ha a webalkalmazás nem fogad szolgáltatásközi hívásokat egy démonalkalmazásból.

Íme egy C#-kód példa, amely azt mutatja be, hogy egy ügyfél meghívja az API-t, miután jogkivonatot szerez be a Microsoft Authentication Library for .NET -hez (MSAL.NET):

var scopes = new[] {$"api://.../access_as_user"};
var result = await app.AcquireToken(scopes)
                      .ExecuteAsync();

httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

// Call the web API.
HttpResponseMessage response = await _httpClient.GetAsync(apiUri);

Fontos

Az ügyfélalkalmazás hozzáférési tokent kér a Microsoft Identitásplatformtól a webes API számára. Az API az egyetlen alkalmazás, amely ellenőriznie kell a jogkivonatot, és meg kell tekintenie a benne található jogcímeket. Az ügyfélalkalmazások soha ne próbáljanak jogkivonatokban megvizsgálni a jogcímeket.

A jövőben a webes API-nak szüksége lehet a jogkivonat titkosítására. Ez a követelmény megakadályozza a hozzáférési jogkivonatokat megtekintő ügyfélalkalmazások hozzáférését.

JwtBearer-konfiguráció

Ez a szakasz ismerteti, hogyan lehet konfigurálni egy hordozó tokent.

Konfigurációs fájl

Csak akkor kell megadnia a TenantId hozzáférési jogkivonatokat, ha egyetlen bérlőből (üzletági alkalmazásból) szeretné elfogadni a hozzáférési jogkivonatokat. Ellenkező esetben a fájl a következőképpen maradhat: common. A különböző értékek lehetnek:

  • GUID (bérlőazonosító = címtárazonosító)
  • common lehet bármilyen szervezeti és személyes fiók
  • organizations bármely szervezet lehet
  • consumers Személyes Microsoft-fiókok
{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "ClientId": "Enter_the_Application_(client)_ID_here",
    "TenantId": "common"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*"
}

Egyéni alkalmazásazonosító URI használata webes API-hoz

Ha elfogadta az Azure Portal által javasolt alapértelmezett alkalmazásazonosító URI-t, nem kell megadnia a célközönséget. Ellenkező esetben adjon hozzá egy Audience tulajdonságot, amelynek értéke a webes API alkalmazásazonosítójának URI-ja. Ez általában a következővel api://kezdődik: .

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "ClientId": "Enter_the_Application_(client)_ID_here",
    "TenantId": "common",
    "Audience": "Enter_the_Application_ID_URI_here"
  },
}

Kód inicializálása

Amikor egy alkalmazás meghív egy olyan vezérlőműveletet, amely az [Authorize] attribútumot tartalmazza, az ASP.NET és ASP.NET Core kinyeri a hozzáférési jogkivonatot az Engedélyezési fejléc bearer tokenjéből. A hozzáférési jogkivonat ezután a JwtBearer köztes szoftverbe kerül, amely a Microsoft IdentityModel Extensions for .NET-et hívja meg.

Microsoft.Identity.Web

A Microsoft azt javasolja, hogy használja a Microsoft.Identity.Web NuGet-csomagot, amikor webes API-t fejleszt ASP.NET Core-nal.

A Microsoft.Identity.Web biztosítja a kapcsolatot a ASP.NET Core, a hitelesítési köztes szoftver és a .NET-hez készült Microsoft Authentication Library (MSAL) között. Egyértelműbb, robusztusabb fejlesztői élményt tesz lehetővé, és kihasználja a Microsoft Identitásplatform és az Azure AD B2C előnyeit.

ASP.NET a .NET 6.0-hoz

A Microsoft.Identity.Web alkalmazást használó új webes API-projekt létrehozásához használjon egy projektsablont a .NET 6.0 CLI-ben vagy a Visual Studióban.

Dotnet core CLI

# Create new web API that uses Microsoft.Identity.Web
dotnet new webapi --auth SingleOrg

Visual Studio – Ha webes API-projektet szeretne létrehozni a Visual Studióban, válassza a > lehetőséget.

A .NET CLI és a Visual Studio projektsablonjai is létrehoznak egy Program.cs fájlt, amely a kódrészlethez hasonlóan néz ki. Vegye észre a Microsoft.Identity.Web "using" direktívát, valamint a hitelesítést és engedélyezést tartalmazó sorokat.

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

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApi(builder.Configuration.GetSection("AzureAd"));

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

app.Run();