Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vítejte! Pravděpodobně to není stránka, kterou jste očekávali. Zatímco pracujeme na opravě, měl by vás tento odkaz dostat na správný článek:
Omlouváme se za nepříjemnosti a vážíme si vaší trpělivosti, zatímco pracujeme na vyřešení tohoto problému.
Následující rychlý start používá ukázku kódu webového rozhraní API ASP.NET Core, která ukazuje, jak omezit přístup k prostředkům na autorizované účty. Ukázka podporuje autorizaci osobních účtů Microsoft a účtů v jakékoli organizaci Microsoft Entra.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Tenant Microsoft Entra
- Minimální požadavek sady .NET 6.0 SDK
- Visual Studio 2022 nebo Visual Studio Code
Krok 1: Registrace aplikace
Nejprve zaregistrujte webové rozhraní API v tenantovi Microsoft Entra a přidejte rozsah podle následujících kroků:
- Přihlaste se do Centra pro správu Microsoft Entra jako alespoň správce aplikací.
- Přejděte k Entra ID>registracím aplikací.
- Vyberte Nová registrace.
- Jako Název zadejte název aplikace. Zadejte například AspNetCoreWebApi-Quickstart. Uživatelé aplikace uvidí tento název a můžete ho později změnit.
- Vyberte Zaregistrovat.
- V části Spravovat vyberte Zveřejnit rozhraní API>Přidat obor. U identifikátoru URI ID aplikace přijměte výchozí nastavení výběrem možnosti Uložit a pokračovat a zadejte následující podrobnosti:
-
Název oboru:
access_as_user - Kdo může souhlasit?: Správci a uživatelé
-
Zobrazovaný název souhlasu správce:
Access AspNetCoreWebApi-Quickstart -
Popis souhlasu správce:
Allows the app to access AspNetCoreWebApi-Quickstart as the signed-in user. -
Uživatelské zobrazované jméno pro souhlas:
Access AspNetCoreWebApi-Quickstart -
Popis souhlasu uživatele:
Allow the application to access AspNetCoreWebApi-Quickstart on your behalf. - Stav: Povoleno
- Chcete-li dokončit přidání oboru, vyberte Přidat obor .
Krok 2: Stažení projektu ASP.NET Core
Stáhněte si řešení ASP.NET Core z GitHubu.
Poznámka:
Ukázka kódu aktuálně cílí na ASP.NET Core 3.1. Ukázku je možné aktualizovat tak, aby používala .NET Core 6.0 a je popsána v následujících krocích: Aktualizujte vzorový kód na ASP.NET Core 6.0. Tento rychlý start bude v blízké budoucnosti zastaralý a bude aktualizován tak, aby používal .NET 6.0.
Krok 3: Konfigurace projektu ASP.NET Core
V tomto kroku se vzorový kód nakonfiguruje tak, aby fungoval s registrací aplikace, která byla vytvořena dříve.
Extrahujte soubor .zip do místní složky, která je blízko kořenového adresáře disku, aby nedocházelo k chybám způsobeným omezením délky cesty ve Windows. Extrahujte například do C:\Azure-Samples.
Otevřete řešení ve složce webapi v editoru kódu.
V appsettings.json nahraďte hodnoty
ClientIdaTenantId."ClientId": "Enter_the_Application_Id_here", "TenantId": "Enter_the_Tenant_Info_Here"-
Enter_the_Application_Id_Hereje ID aplikace (klienta) registrované aplikace. - Nahraďte
Enter_the_Tenant_Info_Hereněkterou z následujících možností:- Pokud aplikace podporuje Účty v tomto organizačním adresáři pouze, nahraďte tuto hodnotu identifikátorem adresáře (GUID) nebo názvem tenanta (například
contoso.onmicrosoft.com). ID adresáře (tenanta) najdete na stránce Přehled aplikace. - Pokud aplikace podporuje účty v libovolném organizačním adresáři, nahraďte tuto hodnotu
organizationshodnotou . - Pokud aplikace podporuje všechny uživatele účtu Microsoft, ponechte tuto hodnotu jako
common.
- Pokud aplikace podporuje Účty v tomto organizačním adresáři pouze, nahraďte tuto hodnotu identifikátorem adresáře (GUID) nebo názvem tenanta (například
-
V tomto rychlém startu neměňte žádné jiné hodnoty v souboru appsettings.json .
Krok 4: Aktualizace ukázkového kódu na ASP.NET Core 6.0
Pokud chcete tuto ukázku kódu aktualizovat tak, aby cílila na ASP.NET Core 6.0, postupujte takto:
- Otevřít webapi.csproj
- Odeberte následující řádek:
<TargetFramework>netcoreapp3.1</TargetFramework>
- Na jeho místo přidejte následující řádek:
<TargetFramework>netcoreapp6.0</TargetFramework>
Tento krok zajistí, že ukázka cílí na architekturu .NET Core 6.0.
Krok 5: Spuštění ukázky
Otevřete terminál a přejděte do složky projektu.
cd webapiSpuštěním následujícího příkazu sestavte řešení:
dotnet run
Pokud bylo sestavení úspěšné, zobrazí se následující výstup:
Building...
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:{port}
info: Microsoft.Hosting.Lifetime[0]
Now listening on: http://localhost:{port}
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
...
Jak ukázka funguje
Startup třída
Middleware Microsoft.AspNetCore.Authentication používá Startup třídu, která se spustí při spuštění procesu hostování. V jeho ConfigureServices metodě se AddMicrosoftIdentityWebApi volá metoda rozšíření poskytovaná microsoft.Identity.Web.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApi(Configuration, "AzureAd");
}
Metoda AddAuthentication() nakonfiguruje službu tak, aby přidala ověřování na základě JwtBearer.
Řádek, který obsahuje .AddMicrosoftIdentityWebApi , přidá autorizaci Microsoft Identity Platform do webového rozhraní API. Pak je nakonfigurovaná tak, aby ověřovala přístupové tokeny vydané platformou Microsoft Identity Platform na základě informací v AzureAD části konfiguračního souboru appsettings.json :
| klíč appsettings.json | Popis |
|---|---|
ClientId |
ID aplikace (klienta) zaregistrované aplikace. |
Instance |
Koncový bod služby tokenů zabezpečení (STS) pro ověření uživatele Tato hodnota je obvykle https://login.microsoftonline.com/označující veřejný cloud Azure. |
TenantId |
Název tenanta nebo jeho ID tenanta (GUID), nebo common přihlašování uživatelů pomocí pracovních nebo školních účtů nebo osobních účtů Microsoft. |
Metoda Configure() obsahuje dvě důležité metody, app.UseAuthentication() a app.UseAuthorization(), které umožňují jejich pojmenovanou funkčnost:
// The runtime calls this method. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// more code
app.UseAuthentication();
app.UseAuthorization();
// more code
}
Ochrana kontroléru, metody kontroléru nebo stránky Razor
Řadič nebo jeho metody lze chránit pomocí atributu [Authorize]. Tento atribut omezuje přístup k kontroleru nebo metodám tím, že povoluje pouze ověřené uživatele. Pokud uživatel není ověřený, je možné zahájit ověřovací výzvu pro přístup k kontroleru.
namespace webapi.Controllers
{
[Authorize]
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
Ověření rozsahu v kontroleru
Kód v rozhraní API ověřuje, že požadované obory jsou v tokenu pomocí HttpContext.VerifyUserHasAnyAcceptedScope> (scopeRequiredByApi);:
namespace webapi.Controllers
{
[Authorize]
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
// The web API will only accept tokens 1) for users, and 2) having the "access_as_user" scope for this API
static readonly string[] scopeRequiredByApi = new string[] { "access_as_user" };
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
HttpContext.VerifyUserHasAnyAcceptedScope(scopeRequiredByApi);
// some code here
}
}
}
Nápověda a podpora
Pokud potřebujete pomoc, chcete nahlásit problém nebo se chcete dozvědět o možnostech podpory, přečtěte si nápovědu a podporu pro vývojáře.
Další kroky
Následující úložiště GitHub obsahuje ukázkové pokyny k kódu webového rozhraní API ASP.NET Core a další ukázky, které ukazují, jak dosáhnout následujících kroků:
- Přidejte ověřování do nového webového rozhraní API ASP.NET Core.
- Volání webového rozhraní API z desktopové aplikace
- Volejte podřízená rozhraní API, jako je Microsoft Graph a další rozhraní API Microsoftu.