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.
A Windows-hitelesítés (más néven Egyeztetés, Kerberos vagy NTLM-hitelesítés) konfigurálható az IIS-velKestrel vagy HTTP.sysüzemeltetett ASP.NET Core-alkalmazásokhoz.
A Windows-hitelesítés az operációs rendszerre támaszkodik ASP.NET Core-alkalmazások felhasználóinak hitelesítéséhez. A Windows-hitelesítést olyan kiszolgálókhoz használják, amelyek vállalati hálózaton futnak Active Directory tartományi identitásokkal vagy Windows-fiókokkal a felhasználók azonosításához. A Windows-hitelesítés olyan intranetes környezetekhez ideális, ahol a felhasználók, az ügyfélalkalmazások és a webkiszolgálók ugyanahhoz a Windows-tartományhoz tartoznak.
Mikor érdemes Windows-hitelesítést használni?
A Windows-hitelesítés olyan webalkalmazásokhoz használható, amelyek a szervezet belső magánhálózatán belül működnek, és csak az alkalmazottak (és más jogosult felhasználók) számára érhetők el ugyanazon a hálózaton belül. A felhasználókezelés az Active Directoryban (AD) történik, és a felhasználók a meglévő Windows-tartományfiókjukkal hitelesítik magukat.
A Windows-hitelesítés számos előnnyel jár az intranetes alkalmazások számára:
- Zökkenőmentes felhasználói élmény – A rendszer automatikusan hitelesíti a felhasználókat az aktív Windows-munkamenet alapján, vagy egy szabványos böngésző párbeszédpanelen kérik a Windows-hitelesítő adataik megadását.
- Integráció az Active Directoryval – Meglévő Windows-infrastruktúrát és biztonsági szabályzatokat használ, beleértve a felhasználói csoportokat, a fiókzárolásokat és a többtényezős hitelesítést (MFA).
- Biztonságos hitelesítő adatok kezelése – A hitelesítés olyan biztonságos protokollokkal történik, mint a Kerberos, és nincs szükség külön felhasználói hitelesítő adatok kezelésére.
- Szerepköralapú engedélyezés – Az alkalmazások hozzáférhetnek a felhasználói és csoportadatokhoz az Active Directoryból, lehetővé téve a szerepköralapú hozzáférés-vezérlést (RBAC) az alkalmazásban.
- Csökkentett adminisztrációs többletterhelés – Nincs szükség külön felhasználói adatbázis vagy hitelesítőadat-kezelési rendszer fenntartására.
Ez ideálissá teszi a Windows-hitelesítést azoknak a szervezeteknek, amelyek használni szeretnék meglévő Windows-infrastruktúrájukat, például az intranetes portálokat.
Note
A Http/2 nem támogatja a Windows-hitelesítést. Bár a hitelesítési kihívások HTTP/2-válaszokon keresztül küldhetők el, az ügyfélnek HTTP/1.1-re kell visszaminősítenie a hitelesítési folyamatot. Ez egy protokollkorlátozás, nem pedig a Windows-hitelesítés elavulása. A hitelesítés után a normál HTTP/2 kommunikáció folytatódhat a későbbi kérések esetében.
A nyilvános alkalmazások esetében biztonsági és használhatósági megfontolások miatt a Windows-hitelesítés nem ajánlott. Ezek az okok a következők:
- A Windows-hitelesítés az Active Directory védelme érdekében a legjobb belső védelemmel rendelkezik, mivel a belső hálózaton kívül történő felfedése biztonsági kockázatokat jelent.
- A külső felhasználók nem rendelkeznek Windows-tartományi fiókkal.
- Bonyolult a szükséges hálózati infrastruktúra biztonságos konfigurálása, és a tűzfalak vagy proxyk zavarhatják a hitelesítési folyamatot.
- Nem platformfüggetlen, és nem nyújt testreszabási lehetőségeket a tervezéshez és a felhasználói élményhez.
A különböző forgatókönyvek alternatívái
Az alkalmazás követelményeinek megfelelően fontolja meg az alábbi alternatívákat:
Nyilvános alkalmazások esetén:
- OpenID Connect külső identitásszolgáltatókkal
- ASP.NET Core Identity helyi felhasználói fiókokkal (bevezetés a ASP.NET Core használatábaIdentity)
- Azure Active Directory (AAD) Microsoft 365-környezetekhez
Intranetes és külső felhasználókkal rendelkező vegyes környezetek esetén:
- Active Directory összevonási szolgáltatások (ADFS) OpenID Connecttel
- Azure Active Directory hibrid konfigurációval
Modern hitelesítést használó vállalati környezetek esetén:
- Azure Active Directory egyszeri bejelentkezéssel
- SAML-alapú megoldások külső identitásszolgáltatókkal
Proxy- és terheléselosztó forgatókönyvek
A Windows-hitelesítés olyan állapotalapú forgatókönyv, amelyet elsősorban intraneten használnak, ahol a proxy vagy a terheléselosztó általában nem kezeli az ügyfelek és a kiszolgálók közötti forgalmat. Proxy vagy terheléselosztó használata esetén a Windows-hitelesítés csak akkor működik, ha a proxy vagy a terheléselosztó:
- Kezeli a hitelesítést.
- Átadja a felhasználói hitelesítési adatokat az alkalmazásnak (például egy kérelemfejlécben), amely a hitelesítési adatokra hat.
A Windows-hitelesítés alternatíva olyan környezetekben, ahol proxykat és terheléselosztókat használnak, az Active Directory Összevont szolgáltatások (ADFS) és az OpenID Connect (OIDC) használata.
IIS/IIS Express
Adja hozzá a Microsoft.AspNetCore.Authentication.Negotiate NuGet csomagot és a hitelesítési szolgáltatásokat a következő hívással AddAuthenticationProgram.cs:
using Microsoft.AspNetCore.Authentication.Negotiate;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();
builder.Services.AddAuthorization(options =>
{
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Az előző kódot az ASP.NET Core Razor Pages-sablon hozta létre , amelyen a Windows-hitelesítés meg van adva.
Indítási beállítások (hibakereső)
Az indítási beállítások konfigurálása csak az Properties/launchSettings.json IIS Express fájljára van hatással, és nem konfigurálja az IIS-t a Windows-hitelesítéshez. A kiszolgálókonfigurációt az IIS szakasz ismerteti.
A Visual Studióban vagy a .NET CLI-ben elérhető webalkalmazás-sablonok konfigurálhatók a Windows-hitelesítés támogatásához, amely automatikusan frissíti a Properties/launchSettings.json fájlt.
Új projekt
Hozzon létre egy új Razor oldalakat vagy MVC-alkalmazást. A További információ párbeszédpanelen állítsa a hitelesítés típusátWindowsra.
Nyisd meg az alkalmazást. A felhasználónév megjelenik a renderelt alkalmazás felhasználói felületén.
Meglévő projekt
A projekt tulajdonságai engedélyezik a Windows-hitelesítést, és letiltják a névtelen hitelesítést. Nyissa meg az indítási profilok párbeszédpanelt:
- A Megoldáskezelőben kattintson a jobb gombbal a projektre, és válassza a Tulajdonságok lehetőséget.
- Válassza az Általános hibakeresés > lapot, és válassza a Hibakeresési indítási profilok felhasználói felületének megnyitása lehetőséget.
- Törölje a jelet a Névtelen hitelesítés engedélyezése jelölőnégyzetből.
- Jelölje be a Windows-hitelesítés engedélyezésének jelölőnégyzetét.
Másik lehetőségként a tulajdonságok konfigurálhatók a iisSettingslaunchSettings.json fájl csomópontjában:
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:52171/",
"sslPort": 44308
}
}
IIS
Az IIS a ASP.NET Core-modullal üzemelteti ASP.NET Core-alkalmazásokat. A Windows-hitelesítés az IIS-hez van konfigurálva a web.config fájlon keresztül. A következő szakaszok a következőket mutatják be:
- Adjon meg egy helyi web.config fájlt, amely aktiválja a Windows-hitelesítést a kiszolgálón az alkalmazás üzembe helyezésekor.
- Az IIS-kezelővel konfigurálhatja a kiszolgálón már üzembe helyezett ASP.NET Core-alkalmazás web.config fájlját.
Ha még nem tette meg, engedélyezze az IIS számára ASP.NET Core-alkalmazások üzemeltetését. További információ: Host ASP.NET Core on Windows with IIS.
Engedélyezze az IIS szerepkör-szolgáltatást a Windows-hitelesítéshez. További információ: Windows-hitelesítés engedélyezése az IIS szerepkör-szolgáltatásokban (lásd: 2. lépés).
Az IIS Integration Middleware alapértelmezés szerint úgy van konfigurálva, hogy automatikusan hitelesítse a kéréseket. Továbbiakért lásd: ASP.NET Core alkalmazás üzemeltetése Windowsos IIS használatával: IIS-beállítások (AutomaticAuthentication).
A ASP.NET core modul úgy van konfigurálva, hogy alapértelmezés szerint továbbítsa a Windows-hitelesítési jogkivonatot az alkalmazásnak. További információ: ASP.NET Alapvető modul konfigurációs referencia: Az aspNetCore elem attribútumai.
Használja az alábbi módszerek egyikét :
A projekt közzététele és üzembe helyezése előtt adja hozzá a következő web.config fájlt a projekt gyökeréhez:
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="false" /> <windowsAuthentication enabled="true" /> </authentication> </security> </system.webServer> </location> </configuration>Amikor a .NET SDK közzéteszi a projektet (a
<IsTransformWebConfigDisabled>projektfájlban beállítotttruetulajdonság nélkül), a közzétett web.config fájl tartalmazza a szakaszt<location><system.webServer><security><authentication>. További információért a<IsTransformWebConfigDisabled>tulajdonságról lásd a web.config fájlt.A projekt közzététele és üzembe helyezése után hajtsa végre a kiszolgálóoldali konfigurációt az IIS Managerrel:
- Az IIS-kezelőben válassza ki az IIS-webhelyet a Kapcsolatok oldalsáv Helyek csomópontja alatt.
- Kattintson duplán a Hitelesítés elemre az IIS-területen .
- Válassza a Névtelen hitelesítés lehetőséget. Válassza a Letiltás lehetőséget a Műveletek oldalsávon.
- Válassza a Windows-hitelesítés lehetőséget. Válassza az Engedélyezés lehetőséget a Műveletek oldalsávon.
A műveletek végrehajtásakor az IIS Manager módosítja az alkalmazás web.config fájlját. A
<system.webServer><security><authentication>csomópont frissített beállításokkal van hozzáadvaanonymousAuthenticationéswindowsAuthenticationszámára:<system.webServer> <security> <authentication> <anonymousAuthentication enabled="false" /> <windowsAuthentication enabled="true" /> </authentication> </security> </system.webServer>Az IIS Manager által a
<system.webServer>fájlhoz hozzáadott szakasz nincs összhangban a .NET SDK által az alkalmazás közzétételekor hozzáadott<location>szakaszával. Mivel a szakasz a<location>csomóponton kívül van hozzáadva, ezért az aktuális alkalmazás bármely alalkalmazása örökli a beállításokat. Az öröklés megakadályozása érdekében helyezze át a hozzáadott<security>szakaszt a<location><system.webServer>.NET SDK által megadott szakaszba.Ha az IIS Managert használja az IIS-konfiguráció hozzáadásához, az csak az alkalmazás web.config fájlját érinti a kiszolgálón. Az alkalmazás későbbi üzembe helyezése felülírhatja a kiszolgáló beállításait, ha a kiszolgáló web.config másolatát lecseréli a projekt web.config fájlja. A beállítások kezeléséhez használja az alábbi módszerek egyikét :
- Az IIS Managerrel alaphelyzetbe állíthatja a beállításokat aweb.config fájlban, miután a fájl felülíródott az üzembe helyezéskor.
- Adjon hozzá egyweb.config fájlt az alkalmazáshoz helyileg a beállításokkal.
Kestrel
A Microsoft.AspNetCore.Authentication.Negotiate NuGet-csomag a Kestrel Windows-hitelesítés engedélyezéséhez használható a Negotiate és a Kerberos használatával Windows, Linux és macOS rendszeren.
Warning
A hitelesítő adatok a kapcsolaton belüli kérések között is megőrizhetők. A "Negotiate" hitelesítés nem használható proxykkal, kivéve ha a proxy 1:1 kapcsolati affinitást (állandó kapcsolatot) tart fenn Kestrel-vel.
Note
Az Egyeztetés kezelője észleli, hogy a mögöttes kiszolgáló natív módon támogatja-e a Windows-hitelesítést, és hogy engedélyezve van-e. Ha a kiszolgáló támogatja a Windows-hitelesítést, de le van tiltva, hibaüzenet jelenik meg, amely arra kéri, hogy engedélyezze a kiszolgáló implementálását. Ha a Windows-hitelesítés engedélyezve van a kiszolgálón, az Egyeztetés kezelő transzparens módon továbbítja a hitelesítési kéréseket.
A hitelesítést és a tartalék engedélyezési szabályzatot a következő kiemelt kód Program.csengedélyezi:
using Microsoft.AspNetCore.Authentication.Negotiate;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();
builder.Services.AddAuthorization(options =>
{
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapRazorPages();
app.Run();
Az előző kódot az ASP.NET Core Razor Pages-sablon hozta létre , amelyen a Windows-hitelesítés meg van adva.
Kiemelt sorok:
- 5–6: AddAuthentication és AddNegotiate regisztrálja és konfigurálja a Hitelesítés egyeztetése kezelőt.
- 8–11: AddAuthorization a visszaesési politika alapértelmezés szerint hitelesített felhasználókat kényszerít.
- 26: UseAuthentication minden kéréshez végrehajtja a hitelesítési kezelőket, és feltölti HttpContext.User.
- 27: UseAuthorization kiértékeli az engedélyezési szabályzatokat, beleértve a tartalék szabályzatot is.
Note
A AddAuthentication és a AddNegotiate meghívása regisztrálja és konfigurálja a Negotiate kezelőt; nem futtat hitelesítést minden kérésnél. A hitelesítési köztes szoftver (UseAuthentication) meghívja a kezelőt és feltölti a HttpContext.User, és meg kell jelennie a UseAuthorization előtt, hogy a szabályzat kiértékelése működjön.
Kerberos-hitelesítés és szerepköralapú hozzáférés-vezérlés (RBAC)
A Kerberos-hitelesítés Linuxon vagy macOS rendszeren nem biztosít szerepkör-információkat a hitelesített felhasználók számára. Ha szerepkör- és csoportadatokat szeretne hozzáadni egy Kerberos-felhasználóhoz, a hitelesítési kezelőt úgy kell konfigurálni, hogy lekérje a szerepköröket egy LDAP-tartományból. A legalapvetőbb konfiguráció csak egy LDAP-tartományt határoz meg a lekérdezéshez, és a hitelesített felhasználó környezetét használja az LDAP-tartomány lekérdezéséhez:
using Microsoft.AspNetCore.Authentication.Negotiate;
using System.Runtime.InteropServices;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate(options =>
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
options.EnableLdap("contoso.com");
}
});
Egyes konfigurációkhoz adott hitelesítő adatokra lehet szükség az LDAP-tartomány lekérdezéséhez. A hitelesítő adatok a következő kiemelt beállításokban adhatók meg:
using Microsoft.AspNetCore.Authentication.Negotiate;
using System.Runtime.InteropServices;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate(options =>
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
options.EnableLdap(settings =>
{
settings.Domain = "contoso.com";
settings.MachineAccountName = "machineName";
settings.MachineAccountPassword =
builder.Configuration["Password"];
});
}
});
builder.Services.AddRazorPages();
Alapértelmezés szerint az egyeztetési hitelesítési kezelő feloldja a beágyazott tartományokat. Nagy vagy bonyolult LDAP-környezetben a beágyazott tartományok feloldása lassú keresést vagy sok memóriát eredményezhet az egyes felhasználók számára. A beágyazott tartományfeloldás letiltható a IgnoreNestedGroups beállítással.
Névtelen kérések engedélyezettek. Az ASP.NET core authorization használatával kérje le a névtelen hitelesítési kérelmeket.
Windows-környezet konfigurálása
Az Microsoft.AspNetCore.Authentication.Negotiate APIfelhasználói módú hitelesítést hajt végre. A szolgáltatásnévneveket (SPN-eket) a szolgáltatást futtató felhasználói fiókhoz kell hozzáadni, nem a számítógépfiókhoz. Futtassa a setspn -S HTTP/myservername.mydomain.com myuser-t egy rendszergazdai parancshéjban.
Kerberos és NTLM
ASP.NET Core-on a Kestrel csomag megkísérli a Kerberos használatát, amely biztonságosabb és performánsabb hitelesítési módszer, mint az NTLM.
using Microsoft.AspNetCore.Authentication.Negotiate;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();
builder.Services.AddAuthorization(options =>
{
options.FallbackPolicy = options.DefaultPolicy;
});
builder.Services.AddRazorPages();
var app = builder.Build();
NegotiateDefaults.AuthenticationScheme a Kerberost adja meg, mert ez az alapértelmezett érték.
Az IIS, az IISExpress és a Kestrel egyaránt támogatják a Kerberos és az NTLM protokollokat.
A WWW-Authenticate: fejléc vizsgálata az IIS vagy az IISExpress használatával egy olyan eszközzel, mint a Fiddler, megmutatja, hogy vagy Negotiate vagy NTLM van jelen.
Kestrel csak a WWW-Authenticate: Negotiate mutatja
A WWW-Authenticate: Negotiate fejléc azt jelenti, hogy a kiszolgáló használhatja az NTLM-et vagy a Kerberost.
Kestrel megköveteli a Negotiate fejléc előtagot, és nem támogatja a NTLM közvetlen megadását a kérelem- vagy válasz-hitelesítési fejlécekben. Az NTLM támogatott Kestrel, de Negotiate formájában kell elküldeni.
A Kestrel dátumon, annak megállapításához, hogy az NTLM vagy a Kerberos van-e használatban, dekódolja a Base64 kódolással a fejlécet, amely vagy NTLM vagy HTTP értékeket mutat.
HTTP Azt jelzi, hogy a Kerberost használták.
Linux- és macOS-környezetkonfiguráció
A Linux vagy macOS rendszerű gépek Windows-tartományhoz való csatlakoztatására vonatkozó utasításokat az Azure Data Studio csatlakoztatása az SQL Serverhez Windows-hitelesítéssel – Kerberos-cikk tartalmazza. Az utasítások létrehoznak egy számítógépfiókot a tartomány Linux-gépéhez. Az SPN-eket hozzá kell adni a számítógépfiókhoz.
Note
Ha követi az Azure Data Studio csatlakoztatása az SQL Serverhez Windows-hitelesítéssel – Kerberos cikk útmutatását, cserélje le a python-software-properties elemet a python3-software-properties elemre, ha szükséges.
Miután a Linux- vagy macOS-gépet csatlakoztatta a tartományhoz, további lépések szükségesek az SPN-eket tartalmazó keytab-fájl biztosításához.
- A tartományvezérlőn adjon hozzá új webszolgáltatás szolgáltatási főneveket (SPN-eket) a számítógépfiókhoz.
setspn -S HTTP/mywebservice.mydomain.com mymachinesetspn -S HTTP/mywebservice@MYDOMAIN.COM mymachine
- Keytab-fájl létrehozása a ktpass használatával:
ktpass -princ HTTP/mywebservice.mydomain.com@MYDOMAIN.COM -pass myKeyTabFilePassword -mapuser MYDOMAIN\mymachine$ -pType KRB5_NT_PRINCIPAL -out c:\temp\mymachine.HTTP.keytab -crypto AES256-SHA1- Egyes mezőket nagybetűvel kell megadni a megadott módon.
- Másolja a keytab fájlt a Linux vagy macOS gépre.
- Válassza ki a keytab-fájlt egy környezeti változón keresztül:
export KRB5_KTNAME=/tmp/mymachine.HTTP.keytab - Hívja meg a
klist-t, hogy megjelenítse a jelenleg használatra elérhető egyszerű szolgáltatásneveket.
Note
A keytab-fájlok tartományi hozzáférési hitelesítő adatokat tartalmaznak, és ennek megfelelően kell védeni.
HTTP.sys
HTTP.sys támogatja a Kernel módú Windows-hitelesítést egyeztetés, NTLM vagy alapszintű hitelesítés használatával.
A következő kód hozzáadja a hitelesítést, és konfigurálja az alkalmazás webes gazdagépét a Windows-hitelesítés HTTP.sys használatára:
using Microsoft.AspNetCore.Server.HttpSys;
using System.Runtime.InteropServices;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(HttpSysDefaults.AuthenticationScheme);
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
builder.WebHost.UseHttpSys(options =>
{
options.Authentication.Schemes =
AuthenticationSchemes.NTLM |
AuthenticationSchemes.Negotiate;
options.Authentication.AllowAnonymous = false;
});
}
Note
HTTP.sys a Kernel Mode hitelesítéshez delegál a Kerberos hitelesítési protokollal. A Kerberos és a HTTP.sysnem támogatja a felhasználói módú hitelesítést. A számítógépfiókot kell használni az Active Directoryból beszerzett Kerberos-jogkivonat/jegy visszafejtéséhez, amelyet az ügyfél továbbít a kiszolgálónak a felhasználó hitelesítéséhez. Regisztrálja a gazdagép szolgáltatási főnevét (SPN), nem pedig az alkalmazás felhasználóját.
Note
HTTP.sys nem támogatott a Nano Server 1709-es verziótól kezdődően vagy annál újabb verziókban. Ha Windows-hitelesítést és HTTP.sys szeretne használni a Nano Serverrel, használjon egy Server Core-tárolót (microsoft/windowsservercore) (lásd https://hub.docker.com/_/microsoft-windows-servercore). További információ a Server Core-ról: Mi a Server Core telepítési lehetőség a Windows Serverben?
Felhasználók engedélyezése
A névtelen hozzáférés konfigurációs állapota határozza meg az alkalmazás és az [Authorize][AllowAnonymous] attribútumok használatát. Az alábbi két szakasz ismerteti, hogyan kezelhetők a névtelen hozzáférés nem engedélyezett és engedélyezett konfigurációs állapotai.
Névtelen hozzáférés letiltása
Ha a Windows-hitelesítés engedélyezve van, és a névtelen hozzáférés le van tiltva, az [Authorize] és [AllowAnonymous] attribútumok nem lesznek hatással. Ha egy IIS-webhely úgy van konfigurálva, hogy letiltsa a névtelen hozzáférést, a kérés soha nem éri el az alkalmazást. Ezért az [AllowAnonymous] attribútum nem alkalmazható.
Névtelen hozzáférés engedélyezése
Ha a Windows-hitelesítés és a névtelen hozzáférés is engedélyezve van, használja a [Authorize] és [AllowAnonymous] attribútumokat. Az [Authorize] attribútum lehetővé teszi az alkalmazás hitelesítést igénylő végpontjainak védelmét. Az [AllowAnonymous] attribútum felülírja az attribútumot a [Authorize] névtelen hozzáférést lehetővé tevő alkalmazásokban. Az attribútumhasználat részleteiért lásd: Egyszerű engedélyezés a ASP.NET Core-ban.
Note
Alapértelmezés szerint azok a felhasználók, akik nem rendelkeznek engedéllyel egy lap elérésére, üres HTTP 403-válasz jelenik meg. A StatusCodePages Middleware konfigurálható úgy, hogy jobb "Hozzáférés megtagadva" élményt biztosítson a felhasználóknak.
Impersonation
ASP.NET Core nem valósít megszemélyesítést. Az alkalmazások az alkalmazás identitásával futnak minden kérésnél, az alkalmazáskészlet vagy a folyamat identitásának használatával. Ha az alkalmazásnak egy felhasználó nevében kell végrehajtania egy műveletet, használja a WindowsIdentity.RunImpersonated vagy RunImpersonatedAsync elemet egy terminál inline köztes rétegben a következő módon: Program.cs. Futtasson egyetlen műveletet ebben a környezetben, majd zárja be a környezetet.
app.Run(async (context) =>
{
try
{
var user = (WindowsIdentity)context.User.Identity!;
await context.Response
.WriteAsync($"User: {user.Name}\tState: {user.ImpersonationLevel}\n");
await WindowsIdentity.RunImpersonatedAsync(user.AccessToken, async () =>
{
var impersonatedUser = WindowsIdentity.GetCurrent();
var message =
$"User: {impersonatedUser.Name}\t" +
$"State: {impersonatedUser.ImpersonationLevel}";
var bytes = Encoding.UTF8.GetBytes(message);
await context.Response.Body.WriteAsync(bytes, 0, bytes.Length);
});
}
catch (Exception e)
{
await context.Response.WriteAsync(e.ToString());
}
});
Bár a csomag engedélyezi a Microsoft.AspNetCore.Authentication.Negotiate hitelesítést Windows, Linux és macOS rendszeren, a megszemélyesítés csak Windows rendszeren támogatott.
Jogcímátalakítások
Az IIS-sel AuthenticateAsync való üzemeltetéskor nem kerül belsőleg meghívásra a felhasználó inicializálásához. Ezért egy IClaimsTransformation implementáció, amelyet a jogcímek minden hitelesítés utáni átalakítására használnak, alapértelmezés szerint nincs aktiválva. További információ és a jogcímátalakításokat aktiváló kód példája: Különbségek a folyamatban lévő és a folyamaton kívüli üzemeltetés között.
További erőforrások
A Windows-hitelesítés (más néven Egyeztetés, Kerberos vagy NTLM-hitelesítés) konfigurálható az IIS-velKestrel vagy HTTP.sysüzemeltetett ASP.NET Core-alkalmazásokhoz.
A Windows-hitelesítés az operációs rendszerre támaszkodik ASP.NET Core-alkalmazások felhasználóinak hitelesítéséhez. Windows-hitelesítést akkor használhat, ha a kiszolgáló egy vállalati hálózaton fut Active Directory-tartományadentitások vagy Windows-fiókok használatával a felhasználók azonosításához. A Windows-hitelesítés olyan intranetes környezetekhez ideális, ahol a felhasználók, az ügyfélalkalmazások és a webkiszolgálók ugyanahhoz a Windows-tartományhoz tartoznak.
Mikor érdemes Windows-hitelesítést használni?
A Windows-hitelesítés olyan webalkalmazásokhoz használható, amelyek a szervezet belső magánhálózatán belül működnek, és csak az alkalmazottak (és más jogosult felhasználók) számára érhetők el ugyanazon a hálózaton belül. A felhasználókezelés az Active Directoryban (AD) történik, és a felhasználók a meglévő Windows-tartományfiókjukkal hitelesítik magukat.
A Windows-hitelesítés számos előnnyel jár az intranetes alkalmazások számára:
- Zökkenőmentes felhasználói élmény – A rendszer automatikusan hitelesíti a felhasználókat az aktív Windows-munkamenet alapján, vagy egy szabványos böngésző párbeszédpanelen kérik a Windows-hitelesítő adataik megadását.
- Integráció az Active Directoryval – Meglévő Windows-infrastruktúrát és biztonsági szabályzatokat használ, beleértve a felhasználói csoportokat, a fiókzárolásokat és a többtényezős hitelesítést (MFA).
- Biztonságos hitelesítő adatok kezelése – A hitelesítés olyan biztonságos protokollokkal történik, mint a Kerberos, és nincs szükség külön felhasználói hitelesítő adatok kezelésére.
- Szerepköralapú engedélyezés – Az alkalmazások hozzáférhetnek a felhasználói és csoportadatokhoz az Active Directoryból, lehetővé téve a szerepköralapú hozzáférés-vezérlést (RBAC) az alkalmazásban.
- Csökkentett adminisztrációs többletterhelés – Nincs szükség külön felhasználói adatbázis vagy hitelesítőadat-kezelési rendszer fenntartására.
Ez ideálissá teszi a Windows-hitelesítést azoknak a szervezeteknek, amelyek használni szeretnék meglévő Windows-infrastruktúrájukat, például az intranetes portálokat.
Note
A Http/2 nem támogatja a Windows-hitelesítést. Bár a hitelesítési kihívások HTTP/2-válaszokon keresztül küldhetők el, az ügyfélnek HTTP/1.1-re kell visszaminősítenie a hitelesítési folyamatot. Ez egy protokollkorlátozás, nem pedig a Windows-hitelesítés elavulása. A hitelesítés után a normál HTTP/2 kommunikáció folytatódhat a későbbi kérések esetében.
A nyilvános alkalmazások esetében biztonsági és használhatósági megfontolások miatt a Windows-hitelesítés nem ajánlott. Ezek az okok a következők:
- A Windows-hitelesítés az Active Directory védelme érdekében a legjobb belső védelemmel rendelkezik, mivel a belső hálózaton kívül történő felfedése biztonsági kockázatokat jelent.
- A külső felhasználók nem rendelkeznek Windows-tartományi fiókkal.
- Bonyolult a szükséges hálózati infrastruktúra biztonságos konfigurálása, és a tűzfalak vagy proxyk zavarhatják a hitelesítési folyamatot.
- Nem platformfüggetlen, és nem nyújt testreszabási lehetőségeket a tervezéshez és a felhasználói élményhez.
A különböző forgatókönyvek alternatívái
Az alkalmazás követelményeinek megfelelően fontolja meg az alábbi alternatívákat:
Nyilvános alkalmazások esetén:
- OpenID Connect külső identitásszolgáltatókkal
- ASP.NET Core Identity helyi felhasználói fiókokkal (bevezetés a ASP.NET Core használatábaIdentity)
- Azure Active Directory (AAD) Microsoft 365-környezetekhez
Intranetes és külső felhasználókkal rendelkező vegyes környezetek esetén:
- Active Directory összevonási szolgáltatások (ADFS) OpenID Connecttel
- Azure Active Directory hibrid konfigurációval
Modern hitelesítést használó vállalati környezetek esetén:
- Azure Active Directory egyszeri bejelentkezéssel
- SAML-alapú megoldások külső identitásszolgáltatókkal
Proxy- és terheléselosztó forgatókönyvek
A Windows-hitelesítés olyan állapotalapú forgatókönyv, amelyet elsősorban intraneten használnak, ahol a proxy vagy a terheléselosztó általában nem kezeli az ügyfelek és a kiszolgálók közötti forgalmat. Proxy vagy terheléselosztó használata esetén a Windows-hitelesítés csak akkor működik, ha a proxy vagy a terheléselosztó:
- Kezeli a hitelesítést.
- Átadja a felhasználói hitelesítési adatokat az alkalmazásnak (például egy kérelemfejlécben), amely a hitelesítési adatokra hat.
A Windows-hitelesítés alternatíva olyan környezetekben, ahol proxykat és terheléselosztókat használnak, az Active Directory Összevont szolgáltatások (ADFS) és az OpenID Connect (OIDC) használata.
IIS/IIS Express
Hitelesítési szolgáltatások hozzáadása a AddAuthentication (Microsoft.AspNetCore.Server.IISIntegration névtér) meghívásávalStartup.ConfigureServices:
services.AddAuthentication(IISDefaults.AuthenticationScheme);
Indítási beállítások (hibakereső)
Az indítási beállítások konfigurálása csak az Properties/launchSettings.json IIS Express fájljára van hatással, és nem konfigurálja az IIS-t a Windows-hitelesítéshez. A kiszolgálókonfigurációt az IIS szakasz ismerteti.
A Visual Studióban vagy a .NET CLI-ben elérhető webalkalmazás-sablon konfigurálható a Windows-hitelesítés támogatására, amely automatikusan frissíti a Properties/launchSettings.json fájlt.
Új projekt
- Új projekt létrehozása.
- Válassza ASP.NET Core Web Application lehetőséget. Válassza a Következőlehetőséget.
- Adjon meg egy nevet a Projektnév mezőben. Győződjön meg arról, hogy a Hely bejegyzés helyes, vagy adjon meg egy helyet a projektnek. Válassza a Create gombot.
- Válassza a Módosítás lehetőséget a Hitelesítés területen.
- A Hitelesítés módosítása ablakban válassza a Windows-hitelesítés lehetőséget. Kattintson az OK gombra.
- Válassza ki a webalkalmazást.
- Válassza a Create gombot.
Nyisd meg az alkalmazást. A felhasználónév megjelenik a renderelt alkalmazás felhasználói felületén.
Meglévő projekt
A projekt tulajdonságai engedélyezik a Windows-hitelesítést, és letiltják a névtelen hitelesítést:
- Kattintson a jobb gombbal a projektre a Megoldáskezelőben , és válassza a Tulajdonságok lehetőséget.
- Válassza a Hibakeresés lapot.
- Törölje a jelet a Névtelen hitelesítés engedélyezése jelölőnégyzetből.
- Jelölje be a Windows-hitelesítés engedélyezésének jelölőnégyzetét.
- Mentse és zárja be a tulajdonságok oldalát.
Másik lehetőségként a tulajdonságok konfigurálhatók a iisSettingslaunchSettings.json fájl csomópontjában:
"iisSettings": {
"windowsAuthentication": true,
"anonymousAuthentication": false,
"iisExpress": {
"applicationUrl": "http://localhost:52171/",
"sslPort": 44308
}
}
Meglévő projekt módosításakor ellenőrizze, hogy a projektfájl tartalmaz-e csomaghivatkozást a Microsoft.AspNetCore.App metacsomaghozvagy a Microsoft.AspNetCore.Authentication NuGet-csomaghoz.
IIS
Az IIS a ASP.NET Core-modullal üzemelteti ASP.NET Core-alkalmazásokat. A Windows-hitelesítés az IIS-hez van konfigurálva a web.config fájlon keresztül. A következő szakaszok a következőket mutatják be:
- Adjon meg egy helyi web.config fájlt, amely aktiválja a Windows-hitelesítést a kiszolgálón az alkalmazás üzembe helyezésekor.
- Az IIS-kezelővel konfigurálhatja a kiszolgálón már üzembe helyezett ASP.NET Core-alkalmazás web.config fájlját.
Ha még nem tette meg, engedélyezze az IIS számára ASP.NET Core-alkalmazások üzemeltetését. További információ: Host ASP.NET Core on Windows with IIS.
Engedélyezze az IIS szerepkör-szolgáltatást a Windows-hitelesítéshez. További információ: Windows-hitelesítés engedélyezése az IIS szerepkör-szolgáltatásokban (lásd: 2. lépés).
Az IIS Integration Middleware alapértelmezés szerint úgy van konfigurálva, hogy automatikusan hitelesítse a kéréseket. Továbbiakért lásd: ASP.NET Core alkalmazás üzemeltetése Windowsos IIS használatával: IIS-beállítások (AutomaticAuthentication).
A ASP.NET core modul úgy van konfigurálva, hogy alapértelmezés szerint továbbítsa a Windows-hitelesítési jogkivonatot az alkalmazásnak. További információ: ASP.NET Alapvető modul konfigurációs referencia: Az aspNetCore elem attribútumai.
Használja az alábbi módszerek egyikét :
A projekt közzététele és üzembe helyezése előtt adja hozzá a következő web.config fájlt a projekt gyökeréhez:
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <security> <authentication> <anonymousAuthentication enabled="false" /> <windowsAuthentication enabled="true" /> </authentication> </security> </system.webServer> </location> </configuration>Amikor a .NET SDK közzéteszi a projektet (a
<IsTransformWebConfigDisabled>projektfájlban beállítotttruetulajdonság nélkül), a közzétett web.config fájl tartalmazza a szakaszt<location><system.webServer><security><authentication>. A<IsTransformWebConfigDisabled>tulajdonsággal kapcsolatos további információkért lásd: ASP.NET Core üzemeltetése Windows-on IIS használatával.A projekt közzététele és üzembe helyezése után hajtsa végre a kiszolgálóoldali konfigurációt az IIS Managerrel:
- Az IIS-kezelőben válassza ki az IIS-webhelyet a Kapcsolatok oldalsáv Helyek csomópontja alatt.
- Kattintson duplán a Hitelesítés elemre az IIS-területen .
- Válassza a Névtelen hitelesítés lehetőséget. Válassza a Letiltás lehetőséget a Műveletek oldalsávon.
- Válassza a Windows-hitelesítés lehetőséget. Válassza az Engedélyezés lehetőséget a Műveletek oldalsávon.
A műveletek végrehajtásakor az IIS Manager módosítja az alkalmazás web.config fájlját. A
<system.webServer><security><authentication>csomópont frissített beállításokkal van hozzáadvaanonymousAuthenticationéswindowsAuthenticationszámára:<system.webServer> <security> <authentication> <anonymousAuthentication enabled="false" /> <windowsAuthentication enabled="true" /> </authentication> </security> </system.webServer>Az IIS Manager által a
<system.webServer>fájlhoz hozzáadott szakasz nincs összhangban a .NET SDK által az alkalmazás közzétételekor hozzáadott<location>szakaszával. Mivel a szakasz a<location>csomóponton kívül van hozzáadva, ezért az aktuális alkalmazás bármely alalkalmazása örökli a beállításokat. Az öröklés megakadályozása érdekében helyezze át a hozzáadott<security>szakaszt a<location><system.webServer>.NET SDK által megadott szakaszba.Ha az IIS Managert használja az IIS-konfiguráció hozzáadásához, az csak az alkalmazás web.config fájlját érinti a kiszolgálón. Az alkalmazás későbbi üzembe helyezése felülírhatja a kiszolgáló beállításait, ha a kiszolgáló web.config másolatát lecseréli a projekt web.config fájlja. A beállítások kezeléséhez használja az alábbi módszerek egyikét :
- Az IIS Managerrel alaphelyzetbe állíthatja a beállításokat aweb.config fájlban, miután a fájl felülíródott az üzembe helyezéskor.
- Adjon hozzá egyweb.config fájlt az alkalmazáshoz helyileg a beállításokkal.
Kestrel
A Microsoft.AspNetCore.Authentication.Negotiate NuGet-csomag a Windows-hitelesítés támogatásához Kestrel használható a Negotiate és a Kerberos használatával Windows, Linux és macOS rendszeren.
Warning
A hitelesítő adatok a kapcsolaton belüli kérések között is megőrizhetők. A "Negotiate" hitelesítés nem használható proxykkal, kivéve ha a proxy 1:1 kapcsolati affinitást (állandó kapcsolatot) tart fenn Kestrel-vel.
Note
Az Egyeztetés kezelője észleli, hogy a mögöttes kiszolgáló natív módon támogatja-e a Windows-hitelesítést, és hogy engedélyezve van-e. Ha a kiszolgáló támogatja a Windows-hitelesítést, de le van tiltva, hibaüzenet jelenik meg, amely arra kéri, hogy engedélyezze a kiszolgáló implementálását. Ha a Windows-hitelesítés engedélyezve van a kiszolgálón, az Egyeztetés kezelő transzparens módon továbbítja a hitelesítési kéréseket.
Hitelesítési szolgáltatások hozzáadása AddAuthentication és AddNegotiate invokálásával a(z) Startup.ConfigureServices-ben.
// using Microsoft.AspNetCore.Authentication.Negotiate;
// using Microsoft.Extensions.DependencyInjection;
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate();
Hitelesítés middleware hozzáadása a UseAuthentication meghívásával a Startup.Configure-ben.
app.UseAuthentication();
További információ a köztes szoftverről: ASP.NET Core Middleware.
Kerberos-hitelesítés és szerepköralapú hozzáférés-vezérlés (RBAC)
A Kerberos-hitelesítés Linuxon vagy macOS rendszeren nem biztosít szerepkör-információkat a hitelesített felhasználók számára. Ha szerepkör- és csoportadatokat szeretne hozzáadni egy Kerberos-felhasználóhoz, a hitelesítési kezelőt úgy kell konfigurálni, hogy lekérje a szerepköröket egy LDAP-tartományból. A legalapvetőbb konfiguráció csak egy LDAP-tartományt határoz meg, amely alapján lekérdezhetők, és a hitelesített felhasználó környezetét fogja használni az LDAP-tartomány lekérdezéséhez:
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate(options =>
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
options.EnableLdap("contoso.com");
}
});
Egyes konfigurációkhoz adott hitelesítő adatokra lehet szükség az LDAP-tartomány lekérdezéséhez. A hitelesítő adatok a következő kiemelt beállításokban adhatók meg:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDatabaseDeveloperPageExceptionFilter();
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme)
.AddNegotiate(options =>
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
options.EnableLdap(settings =>
{
settings.Domain = "contoso.com";
settings.MachineAccountName = "machineName";
settings.MachineAccountPassword = Configuration["Password"]
});
}
});
services.AddRazorPages();
}
Alapértelmezés szerint az egyeztetési hitelesítési kezelő feloldja a beágyazott tartományokat. Nagy vagy bonyolult LDAP-környezetben a beágyazott tartományok feloldása lassú keresést vagy sok memóriát eredményezhet az egyes felhasználók számára. A beágyazott tartományfeloldás letiltható a IgnoreNestedGroups beállítással.
Névtelen kérések engedélyezettek. Az ASP.NET core authorization használatával kérje le a névtelen hitelesítési kérelmeket.
AuthenticationScheme
Microsoft.AspNetCore.Authentication.Negotiate a NuGet-csomagra van szükség.
Windows-környezet konfigurálása
Az Microsoft.AspNetCore.Authentication.Negotiate APIfelhasználói módú hitelesítést hajt végre. A szolgáltatásnévneveket (SPN-eket) a szolgáltatást futtató felhasználói fiókhoz kell hozzáadni, nem a számítógépfiókhoz. Futtassa a setspn -S HTTP/myservername.mydomain.com myuser-t egy rendszergazdai parancshéjban.
Linux- és macOS-környezetkonfiguráció
A Linux vagy macOS rendszerű gépek Windows-tartományhoz való csatlakoztatására vonatkozó utasításokat az Azure Data Studio csatlakoztatása az SQL Serverhez Windows-hitelesítéssel – Kerberos-cikk tartalmazza. Az utasítások létrehoznak egy számítógépfiókot a tartomány Linux-gépéhez. Az SPN-eket hozzá kell adni a számítógépfiókhoz.
Note
Ha követi az Azure Data Studio csatlakoztatása az SQL Serverhez Windows-hitelesítéssel – Kerberos cikk útmutatását, cserélje le a python-software-properties elemet a python3-software-properties elemre, ha szükséges.
Miután a Linux- vagy macOS-gépet csatlakoztatta a tartományhoz, további lépések szükségesek az SPN-eket tartalmazó keytab-fájl biztosításához.
- A tartományvezérlőn adjon hozzá új webszolgáltatás szolgáltatási főneveket (SPN-eket) a számítógépfiókhoz.
setspn -S HTTP/mywebservice.mydomain.com mymachinesetspn -S HTTP/mywebservice@MYDOMAIN.COM mymachine
- Keytab-fájl létrehozása a ktpass használatával:
ktpass -princ HTTP/mywebservice.mydomain.com@MYDOMAIN.COM -pass myKeyTabFilePassword -mapuser MYDOMAIN\mymachine$ -pType KRB5_NT_PRINCIPAL -out c:\temp\mymachine.HTTP.keytab -crypto AES256-SHA1- Egyes mezőket nagybetűvel kell megadni a megadott módon.
- Másolja a keytab fájlt a Linux vagy macOS gépre.
- Válassza ki a keytab-fájlt egy környezeti változón keresztül:
export KRB5_KTNAME=/tmp/mymachine.HTTP.keytab - Hívja meg a
klist-t, hogy megjelenítse a jelenleg használatra elérhető egyszerű szolgáltatásneveket.
Note
A keytab-fájlok tartományi hozzáférési hitelesítő adatokat tartalmaznak, és ennek megfelelően kell védeni.
HTTP.sys
HTTP.sys támogatja a Kernel módú Windows-hitelesítést egyeztetés, NTLM vagy alapszintű hitelesítés használatával.
Hitelesítési szolgáltatások hozzáadása a AddAuthentication (Microsoft.AspNetCore.Server.HttpSys névtér) meghívásávalStartup.ConfigureServices:
services.AddAuthentication(HttpSysDefaults.AuthenticationScheme);
Állítsa be az alkalmazás webes gazdagépét úgy, hogy a HTTP.sys Windows-hitelesítéssel használja (Program.cs).
UseHttpSys a névtérben Microsoft.AspNetCore.Server.HttpSys van.
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>()
.UseHttpSys(options =>
{
options.Authentication.Schemes =
AuthenticationSchemes.NTLM |
AuthenticationSchemes.Negotiate;
options.Authentication.AllowAnonymous = false;
});
});
}
Note
HTTP.sys a Kernel Mode hitelesítéshez delegál a Kerberos hitelesítési protokollal. A Kerberos és a HTTP.sysnem támogatja a felhasználói módú hitelesítést. A számítógépfiókot kell használni az Active Directoryból beszerzett Kerberos-jogkivonat/jegy visszafejtéséhez, amelyet az ügyfél továbbít a kiszolgálónak a felhasználó hitelesítéséhez. Regisztrálja a gazdagép szolgáltatási főnevét (SPN), nem pedig az alkalmazás felhasználóját.
Note
HTTP.sys nem támogatott a Nano Server 1709-es verziótól kezdődően vagy annál újabb verziókban. Ha Windows-hitelesítést és HTTP.sys szeretne használni a Nano Serverrel, használjon egy Server Core-tárolót (microsoft/windowsservercore) (lásd https://hub.docker.com/_/microsoft-windows-servercore). További információ a Server Core-ról: Mi a Server Core telepítési lehetőség a Windows Serverben?
Felhasználók engedélyezése
A névtelen hozzáférés konfigurációs állapota határozza meg az alkalmazás és az [Authorize][AllowAnonymous] attribútumok használatát. Az alábbi két szakasz ismerteti, hogyan kezelhetők a névtelen hozzáférés nem engedélyezett és engedélyezett konfigurációs állapotai.
Névtelen hozzáférés letiltása
Ha a Windows-hitelesítés engedélyezve van, és a névtelen hozzáférés le van tiltva, az [Authorize] és [AllowAnonymous] attribútumok nem lesznek hatással. Ha egy IIS-webhely úgy van konfigurálva, hogy letiltsa a névtelen hozzáférést, a kérés soha nem éri el az alkalmazást. Ezért az [AllowAnonymous] attribútum nem alkalmazható.
Névtelen hozzáférés engedélyezése
Ha a Windows-hitelesítés és a névtelen hozzáférés is engedélyezve van, használja a [Authorize] és [AllowAnonymous] attribútumokat. Az [Authorize] attribútum lehetővé teszi az alkalmazás hitelesítést igénylő végpontjainak védelmét. Az [AllowAnonymous] attribútum felülírja az attribútumot a [Authorize] névtelen hozzáférést lehetővé tevő alkalmazásokban. Az attribútumhasználat részleteiért lásd: Egyszerű engedélyezés a ASP.NET Core-ban.
Note
Alapértelmezés szerint azok a felhasználók, akik nem rendelkeznek engedéllyel egy lap elérésére, üres HTTP 403-válasz jelenik meg. A StatusCodePages Middleware konfigurálható úgy, hogy jobb "Hozzáférés megtagadva" élményt biztosítson a felhasználóknak.
Impersonation
ASP.NET Core nem valósít megszemélyesítést. Az alkalmazások az alkalmazás identitásával futnak minden kérésnél, az alkalmazáskészlet vagy a folyamat identitásának használatával. Ha az alkalmazásnak egy felhasználó nevében kell végrehajtania egy műveletet, használja a WindowsIdentity.RunImpersonated vagy RunImpersonatedAsync a végső közvetítő réteget a Startup.Configure helyen. Futtasson egyetlen műveletet ebben a környezetben, majd zárja be a környezetet.
app.Run(async (context) =>
{
try
{
var user = (WindowsIdentity)context.User.Identity;
await context.Response
.WriteAsync($"User: {user.Name}\tState: {user.ImpersonationLevel}\n");
WindowsIdentity.RunImpersonated(user.AccessToken, () =>
{
var impersonatedUser = WindowsIdentity.GetCurrent();
var message =
$"User: {impersonatedUser.Name}\t" +
$"State: {impersonatedUser.ImpersonationLevel}";
var bytes = Encoding.UTF8.GetBytes(message);
context.Response.Body.Write(bytes, 0, bytes.Length);
});
}
catch (Exception e)
{
await context.Response.WriteAsync(e.ToString());
}
});
Bár a csomag engedélyezi a Microsoft.AspNetCore.Authentication.Negotiate hitelesítést Windows, Linux és macOS rendszeren, a megszemélyesítés csak Windows rendszeren támogatott.
Jogcímátalakítások
Az IIS-sel AuthenticateAsync való üzemeltetéskor nem kerül belsőleg meghívásra a felhasználó inicializálásához. Ezért egy IClaimsTransformation implementáció, amelyet a jogcímek minden hitelesítés utáni átalakítására használnak, alapértelmezés szerint nincs aktiválva. További információ és a jogcímátalakításokat aktiváló kód példája: Különbségek a folyamatban lévő és a folyamaton kívüli üzemeltetés között.