Felhasználókat bejelentkező webalkalmazás: Kódkonfiguráció
Ez a cikk bemutatja, hogyan konfigurálhat kódot egy olyan webalkalmazáshoz, amely bejelentkezik a felhasználókba.
Webalkalmazásokat támogató Microsoft-kódtárak
A webalkalmazások (és webes API-k) védelmére az alábbi Microsoft-kódtárak szolgálnak:
Nyelv/ keretrendszer | Projekt bekapcsolva GitHub |
Csomag | Megszerzés közül |
Felhasználók bejelentkezése | Webes API-k elérése | Általánosan elérhető (GA) vagy 1. nyilvános előzetes verzió |
---|---|---|---|---|---|---|
.NET | MSAL.NET | Microsoft.Identity.Client | — | FE | ||
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — | 2 | 2 | FE |
ASP.NET Core | ASP.NET Core | Microsoft.AspNetCore.Authentication | Gyors útmutató | FE | ||
ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Gyors útmutató | FE | ||
Java | MSAL4J | msal4j | Gyors útmutató | FE | ||
Spring | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Oktatóanyag | FE | ||
Node.js | MSAL-csomópont | msal-node | Gyors útmutató | FE | ||
Python | MSAL Python | msal | FE | |||
Python | azonosság | azonosság | Gyors útmutató | -- |
(1) Az online szolgáltatásokra vonatkozó univerzális licencfeltételek a nyilvános előzetes verzióban lévő kódtárakra vonatkoznak.
(2) A Microsoft.IdentityModel-kódtár csak a jogkivonatokat érvényesíti – nem tud azonosítókat vagy hozzáférési jogkivonatokat kérni.
Válassza ki a kívánt platformnak megfelelő lapot:
A cikkben szereplő kódrészleteket és az alábbiakat a ASP.NET Core webalkalmazás növekményes oktatóanyagából nyerjük ki, 1. fejezet.
A megvalósítás részleteiért tekintse meg ezt az oktatóanyagot.
Konfigurációs fájlok
A felhasználókat a Microsoft Identitásplatform használó webalkalmazások konfigurációs fájlokon keresztül vannak konfigurálva. Ezeknek a fájloknak a következő értékeket kell megadniuk:
- A felhőpéldány, ha például azt szeretné, hogy az alkalmazás nemzeti felhőkben fusson. A különböző lehetőségek közé tartoznak a következők:
https://login.microsoftonline.com/
nyilvános Azure-felhőhözhttps://login.microsoftonline.us/
az Azure US Government esetébenhttps://login.microsoftonline.de/
Microsoft Entra Germany eseténhttps://login.partner.microsoftonline.cn/common
a 21Vianet által üzemeltetett Microsoft Entra China esetében
- A bérlőazonosító célközönsége. A lehetőségek attól függően változnak, hogy az alkalmazás egy bérlős vagy több-bérlős.
- Az Azure Portalról beszerzett bérlői GUID a felhasználók szervezetbe való bejelentkezéséhez. Tartománynevet is használhat.
organizations
felhasználók bejelentkezése bármely munkahelyi vagy iskolai fiókbacommon
a felhasználók munkahelyi vagy iskolai fiókjával vagy Microsoft személyes fiókjával való bejelentkezéshezconsumers
a felhasználók csak Microsoft-személyes fiókkal való bejelentkezéséhez
- Az alkalmazás ügyfélazonosítója az Azure Portalról másolt módon
A szolgáltatóra mutató hivatkozások, a példány és a bérlőazonosító értékeinek összefűzése is megjelenhet.
A ASP.NET Core-ban ezek a beállítások a appsettings.json fájlban, a "Microsoft Entra ID" szakaszban találhatók.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter the tenantId here]",
// Client ID (application ID) obtained from the Azure portal
"ClientId": "[Enter the Client Id here]",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-oidc"
}
}
A ASP.NET Core-ban egy másik fájl (properties\launchSettings.json) tartalmazza az alkalmazás URL-címét (applicationUrl
) és a TLS/SSL-portot (sslPort
) és a különböző profilokat.
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:3110/",
"sslPort": 44321
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"webApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:3110/"
}
}
}
Az Azure Portalon az alkalmazás hitelesítési oldalán regisztrált átirányítási URI-knak meg kell egyezniük ezekkel az URL-címekkel. Az előző két konfigurációs fájl esetében a következő lenne https://localhost:44321/signin-oidc
: . Ennek oka az, hogy applicationUrl
az , de sslPort
meg van adva (44321
http://localhost:3110
). CallbackPath
a /signin-oidc
.appsettings.json
Ugyanígy a kijelentkezés URI-ja is a következőre van állítva https://localhost:44321/signout-oidc
: .
Feljegyzés
A SignedOutCallbackPath-nak a portálra vagy az alkalmazásra kell állítania, hogy elkerülje az ütközést az esemény kezelése során.
Inicializálási kód
Az inicializálási kód különbségei platformfüggőek. A ASP.NET Core és ASP.NET esetén a felhasználók bejelentkezése az OpenID Connect köztes szoftverbe delegálva történik. A ASP.NET vagy ASP.NET Core-sablon webalkalmazásokat hoz létre az Azure AD 1.0-s végponthoz. A Microsoft Identitásplatform való alkalmazkodáshoz bizonyos konfigurációra van szükség.
A ASP.NET Core-webalkalmazásokban (és webes API-kban) az alkalmazás védett, mert rendelkezik egy Authorize
attribútummal a vezérlők vagy a vezérlőműveletek esetében. Ez az attribútum ellenőrzi, hogy a felhasználó hitelesítése megtörtént-e. A .NET 6 kiadása előtt a kód inicializálása a Startup.cs fájlban történt. A .NET 6-ot tartalmazó új ASP.NET Core-projektek már nem tartalmaznak Startup.cs fájlt. A helyét a Program.cs fájl veszi át. Az oktatóanyag többi része a .NET 5-ös vagy újabb verziójára vonatkozik.
Feljegyzés
Ha közvetlenül a Microsoft.Identity.Webet használó Microsoft Identitásplatform új ASP.NET Core-sablonjaival szeretne kezdeni, letöltheti a .NET 5.0-hoz készült projektsablonokat tartalmazó előzetes NuGet-csomagot. Ezután a telepítés után közvetlenül példányosíthatja ASP.NET Core-webalkalmazásokat (MVC vagy Blazor). Részletekért tekintse meg a Microsoft.Identity.Web webalkalmazás projektsablonjait . Ez a legegyszerűbb megközelítés, mivel a következő lépéseket fogja elvégezni Önnek.
Ha inkább az aktuális alapértelmezett ASP.NET Core webes projekttel szeretné elindítani a projektet a Visual Studióban, vagy használja vagy dotnet new webapp --auth SingleOrg
használjadotnet new mvc --auth SingleOrg
, a következőhöz hasonló kód jelenik meg:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Ez a kód az örökölt Microsoft.AspNetCore.Authentication.AzureAD.UI NuGet-csomagot használja, amely egy Azure Active Directory v1.0-s alkalmazás létrehozásához használatos. Ez a cikk bemutatja, hogyan hozhat létre Microsoft Identitásplatform 2.0-s verziós alkalmazást, amely lecseréli a kódot.
Adja hozzá a Microsoft.Identity.Web és a Microsoft.Identity.Web.UI NuGet-csomagokat a projekthez. Távolítsa el a
Microsoft.AspNetCore.Authentication.AzureAD.UI
NuGet-csomagot, ha az jelen van.Frissítse a kódot
ConfigureServices
úgy, hogy a metódusokat ésAddMicrosoftIdentityUI
aAddMicrosoftIdentityWebApp
metódusokat használja.public class Startup { ... // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(Configuration, "AzureAd"); services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
A Startup.cs metódusában engedélyezze a
Configure
hitelesítést a következő hívássalapp.UseAuthentication();
: ésapp.MapControllers();
.// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // more code here app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); // more code here }
Ebben a kódban:
A
AddMicrosoftIdentityWebApp
bővítménymetódus a Microsoft.Identity.Web-ben van definiálva, amely;- Konfigurálja a konfigurációs fájl olvasási beállításait (itt a "Microsoft Entra ID" szakaszból)
- Úgy konfigurálja az OpenID Connect beállításait, hogy a szolgáltató legyen a Microsoft Identitásplatform.
- Ellenőrzi a jogkivonat kiállítóját.
- Biztosítja, hogy a névnek megfelelő jogcímek le vannak képezve az
preferred_username
azonosító jogkivonatában szereplő jogcímből.
A konfigurációs objektum mellett megadhatja a konfigurációs szakasz nevét híváskor
AddMicrosoftIdentityWebApp
. Alapértelmezés szerint azAzureAd
.AddMicrosoftIdentityWebApp
speciális forgatókönyvekhez más paraméterekkel is rendelkezik. Az OpenID Connect köztes szoftveresemények nyomon követése például segíthet a webalkalmazás hibaelhárításában, ha a hitelesítés nem működik. Az opcionális paramétersubscribeToOpenIdConnectMiddlewareDiagnosticsEvents
true
beállítása megmutatja, hogy a ASP.NET Core köztes szoftverkészlet hogyan dolgozza fel az adatokat, miközben az a HTTP-válaszból a felhasználóHttpContext.User
identitására mutat.A
AddMicrosoftIdentityUI
bővítménymetódus a Microsoft.Identity.Web.UI-ban van definiálva. Ez egy alapértelmezett vezérlőt biztosít a bejelentkezés és a kijelentkezés kezeléséhez.
Ha többet szeretne tudni arról, hogy a Microsoft.Identity.Web hogyan teszi lehetővé a webalkalmazások létrehozását, tekintse meg a Web Apps alkalmazást a Microsoft-Identity-Web webhelyen.