Kurz: Příprava webové aplikace ASP.NET Core na ověřování v externím tenantovi
Tento kurz je druhou částí série, která ukazuje, jak vytvořit webovou aplikaci ASP.NET Core a připravit ji na ověřování pomocí Centra pro správu Microsoft Entra. V první části této série jste zaregistrovali aplikaci a nakonfigurovali toky uživatelů ve vašem externím tenantovi. Tento kurz ukazuje, jak vytvořit webovou aplikaci ASP.NET Core a nakonfigurovat ji pro ověřování.
V tomto kurzu budete;
- Vytvoření projektu ASP.NET Core v editoru Visual Studio Code
- Přidání požadovaných balíčků NuGet
- Konfigurace nastavení pro aplikaci
- Přidání kódu pro implementaci ověřování
Požadavky
- Kurz: Příprava externího tenanta na vytvoření webové aplikace ASP.NET Core
- I když je možné použít jakékoli integrované vývojové prostředí (IDE), které podporuje aplikace ASP.NET Core, tento kurz používá Visual Studio Code. Můžete si ho stáhnout zde.
- .NET 7.0 SDK.
Vytvoření projektu ASP.NET Core
Otevřete Visual Studio Code a vyberte >Soubor otevřít složku.... Přejděte a vyberte umístění, ve kterém chcete projekt vytvořit.
Výběrem možnosti Terminál>nový terminál otevřete nový terminál.
Zadáním následujícího příkazu vytvořte modelový kontroler zobrazení (MVC) ASP.NET core projektu.
dotnet new mvc -n dotnetcore_webapp
Instalace balíčků identit
Aby bylo možné ověřovat uživatele, musí být v projektu nainstalované balíčky NuGet související s identitami.
Zadáním následujících příkazů přejděte do složky dotnetcore_webapp a nainstalujte příslušný balíček NuGet:
cd dotnetcore_webapp dotnet add package Microsoft.Identity.Web.UI
Konfigurace aplikace pro ověřování
Otevřete soubor appsettings.json a nahraďte stávající kód následujícím fragmentem kódu.
{ "AzureAd": { "Authority": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/", "ClientId": "Enter_the_Application_Id_Here", "ClientCredentials": [ { "SourceType": "ClientSecret", "ClientSecret": "Enter_the_Client_Secret_Here" } ], "CallbackPath": "/signin-oidc", "SignedOutCallbackPath": "/signout-callback-oidc" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }
Authority
– Instance zprostředkovatele identity a cílová skupina přihlašování pro aplikaci. NahraďteEnter_the_Tenant_Subdomain_Here
subdoménou vašeho externího tenanta. To najdete tak, že v nabídce bočního panelu vyberete Přehled a pak přejdete na kartu Přehled. Najděte primární doménu ve formuláři caseyjensen.onmicrosoft.com. Subdoména je caseyjensen.ClientId
– Identifikátor aplikace, označovaný také jako klient. Text v uvozovkách nahraďte hodnotou ID aplikace (klienta), která byla zaznamenána dříve na stránce přehledu registrované aplikace.ClientSecret
– Hodnota tajného klíče klienta, který jste vytvořili v rámci přípravy tenanta. Nahraďte text v uvozovkách hodnotou tajného klíče klienta v Centru pro správu Microsoft Entra.CallbackPath
– Je identifikátor, který serveru pomůže přesměrovat odpověď na příslušnou aplikaci.
Uložte změny souboru.
Otevřete soubor Vlastnosti/launchSettings.json.
V oddílu
https
profiles
změňtehttps
adresu URLapplicationUrl
tak, aby se četlahttps://localhost:7274
. Tuto adresu URL jste použili k definování identifikátoru URI přesměrování.Uložte změny do souboru.
Použití vlastní domény URL (volitelné)
Pomocí vlastní domény plně označte adresu URL ověřování. Z pohledu uživatele zůstanou uživatelé ve vaší doméně během procesu ověřování místo přesměrování na ciamlogin.com název domény.
Pokud chcete použít vlastní doménu, postupujte takto:
Pomocí kroků v části Povolit vlastní domény URL pro aplikace v externích tenantech povolte pro externího tenanta vlastní doménu URL.
Otevřete soubor appsettings.json :
- Aktualizujte hodnotu
Authority
vlastnosti na https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Herehodnotu . NahraďteEnter_the_Custom_Domain_Here
vlastní doménou URL aEnter_the_Tenant_ID_Here
ID tenanta. Pokud nemáte ID tenanta, přečtěte si, jak si přečíst podrobnosti o tenantovi. - Přidejte
knownAuthorities
vlastnost s hodnotou [Enter_the_Custom_Domain_Here].
- Aktualizujte hodnotu
Po provedení změn souboru appsettings.json , pokud je vaše vlastní doména URL login.contoso.com a ID vašeho tenanta je aaaabbbb-0000-cccc-1111-dddd2222eeeee, měl by váš soubor vypadat podobně jako následující fragment kódu:
{
"AzureAd": {
"Authority": "https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee",
"ClientId": "Enter_the_Application_Id_Here",
"ClientCredentials": [
{
"SourceType": "ClientSecret",
"ClientSecret": "Enter_the_Client_Secret_Here"
}
],
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-callback-oidc",
"KnownAuthorities": ["login.contoso.com"]
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
Přidání autorizace do HomeController.cs
Soubor HomeController.cs obsahuje kód domovské stránky aplikace a musí mít možnost autorizovat uživatele. Microsoft.AspNetCore.Authorization
Obor názvů poskytuje třídy a rozhraní pro implementaci autorizace webové aplikace a [Authorize]
atribut se používá k určení, že webovou aplikaci můžou používat jenom ověření uživatelé.
V editoru kódu otevřete soubor Controllers\HomeController.cs .
Autorizaci je potřeba přidat do kontroleru, přidat
Microsoft.AspNetCore.Authorization
tak, aby horní část souboru byla shodná s následujícím fragmentem kódu:using System.Diagnostics; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using dotnetcore_webapp.Models;
Navíc přidejte
[Authorize]
atribut přímo nadHomeController
definici třídy.[Authorize]
Přidání ověřování a autorizace do Program.cs
Program.cs je potřeba upravit, aby se do webové aplikace přidalo ověřování a autorizace. To zahrnuje přidání oborů názvů pro ověřování a autorizaci a možnost přihlašování uživatelů pomocí platformy Microsoft Identity Platform.
Pokud chcete přidat požadované obory názvů, otevřete Program.cs a do horní části souboru přidejte následující fragment kódu:
using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; using System.IdentityModel.Tokens.Jwt;
Dále přidejte ověřovací služby do aplikace, která umožní webové aplikaci přihlásit uživatele pomocí platformy Microsoft Identity Platform. Zbytek kódu v Program.cs můžete nahradit následujícím fragmentem kódu:
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); // This is required to be instantiated before the OpenIdConnectOptions starts getting configured. // By default, the claims mapping will map claim names in the old format to accommodate older SAML applications. // For instance, 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' instead of 'roles' claim. // This flag ensures that the ClaimsIdentity claims collection will be built from the claims in the token JwtSecurityTokenHandler.DefaultMapInboundClaims = false; // Sign-in users with the Microsoft identity platform builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration) .EnableTokenAcquisitionToCallDownstreamApi() .AddInMemoryTokenCaches(); builder.Services.AddControllersWithViews(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI(); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();