Windows-verificatie en JWT beperken tot bepaalde routes in ASP.NET Core

Temp mail SuperHeros
Windows-verificatie en JWT beperken tot bepaalde routes in ASP.NET Core
Windows-verificatie en JWT beperken tot bepaalde routes in ASP.NET Core

Evenwichtige authenticatieschema's voor veilige routering

Naarmate moderne webapplicaties evolueren, worden ontwikkelaars vaak geconfronteerd met de uitdaging om robuuste authenticatiemechanismen te implementeren die zowel veilig als flexibel zijn. In jouw geval gebruik je JWT Bearer Authentication voor sommige routes en Windows Authentication (Negotiate) voor andere. Er doet zich echter een lastig probleem voor wanneer beide authenticatieschema’s wereldwijd worden toegepast, wat leidt tot verwarring in de antwoordheaders. Concreet zie je ongewenste 'WWW-Authenticate'-headers voor JWT-routes die zowel 'Bearer' als 'Negotiate' bevatten, terwijl alleen 'Bearer' aanwezig zou moeten zijn.

Voor ontwikkelaars zoals jij is het belangrijkste doel ervoor te zorgen dat elke route reageert met het juiste authenticatieschema. Dit betekent dat JWT-beveiligde routes alleen 'WWW-Authenticate: Bearer' mogen verzenden, en dat Windows-authenticatieroutes alleen 'WWW-Authenticate: Negotiate' mogen verzenden. Stel u voor dat u een webtoepassing bouwt met gemengde gebruikersrollen: sommige gebruikers verifiëren zich via hun Windows-inloggegevens, terwijl anderen zich verifiëren met JWT-tokens. De headers moeten aansluiten bij deze verschillende authenticatiestrategieën om verwarring en onnodige beveiligingsvragen te voorkomen.

Maar wat gebeurt er als beide authenticatieschema’s over de hele linie worden toegepast, waardoor beide headers tegelijkertijd worden geadverteerd? Dit kan frustrerend zijn, vooral als u precieze controle wilt hebben over hoe en wanneer elke authenticatiemethode wordt toegepast. Gelukkig biedt ASP.NET Core manieren om dit probleem op te lossen, waardoor ontwikkelaars zoals jij de tools krijgen om deze fijnmazige controle af te dwingen.

In de volgende secties onderzoeken we hoe u authenticatieschema's configureert voor specifieke routes, waarbij u globale toepassing van beide schema's vermijdt en voorkomt dat ongewenste `WWW-Authenticate` headers worden verzonden. We doorlopen concrete voorbeelden en verkennen de best practices voor deze configuratie. Aan het eind heeft u duidelijk inzicht in de manier waarop u dit probleem kunt oplossen en kunt u ervoor zorgen dat uw toepassing zich precies gedraagt ​​zoals bedoeld: veilig en nauwkeurig. 🔒

Commando Voorbeeld van gebruik
HandleResponse() Deze methode wordt gebruikt om de standaardafhandeling van de authenticatie-uitdaging te voorkomen, zodat u de reactie volledig kunt controleren. Dit is handig als u de manier wilt aanpassen waarop op ongeautoriseerde verzoeken wordt gereageerd, zoals het verzenden van een specifiek bericht of een statuscode.
AddAuthenticationSchemes() Deze methode specificeert welke authenticatieschema's op een specifiek beleid moeten worden toegepast. In het voorbeeld wordt het gebruikt om JWT Bearer-verificatie of Windows-verificatie (onderhandelen) te koppelen aan verschillende routes of beleid.
MapControllerRoute() Wijst routes toe aan controlleracties in ASP.NET Core. Het wordt gebruikt om het routeringspatroon voor verschillende authenticatiebeleidsregels in te stellen, zodat specifieke routes worden afgehandeld via de juiste authenticatiemethode.
OnChallenge Dit is een gebeurtenishandler in de klasse JwtBearerEvents waarmee u het gedrag kunt aanpassen wanneer er een authenticatie-uitdaging optreedt, zoals het aanpassen van het 401 Unauthorized-antwoord.
UseMiddleware() Wordt gebruikt om aangepaste middleware te registreren in de aanvraagpijplijn van de toepassing. Hiermee kunt u HTTP-verzoeken en -reacties onderscheppen, zoals het aanpassen van de WWW-Authenticate header op basis van de aangevraagde route.
SetRequiredService() In het middleware-voorbeeld wordt deze methode gebruikt om de IAuthenticationService op te halen uit de container voor afhankelijkheidsinjectie. Deze service is verantwoordelijk voor het afhandelen van authenticatietaken, zoals het valideren van tokens en het beheren van authenticatieschema's.
UseEndpoints() Met deze methode worden de eindpunten geconfigureerd voor routering in ASP.NET Core. Het wordt gebruikt om te specificeren hoe specifieke routes door verkeersleiders moeten worden afgehandeld en welk beleid moet worden toegepast.
RequireAuthenticatedUser() Deze methode zorgt ervoor dat een gebruiker moet worden geverifieerd om toegang te krijgen tot een route die wordt beschermd door het autorisatiebeleid. Het wordt gebruikt in de beleidsdefinitie om authenticatie af te dwingen op routes waarvoor dit vereist is.
SymmetricSecurityKey() Met deze methode wordt een symmetrische sleutel gemaakt die wordt gebruikt voor het ondertekenen en valideren van JWT-tokens. Het is essentieel voor het garanderen van de integriteit en authenticiteit van de tokens.

Oplossingsoverzicht: verificatieschema's configureren voor specifieke routes

In de context van ASP.NET Core kan het beheren van authenticatieschema's lastig zijn, vooral als er meerdere schema's zoals JWT Bearer Authentication en Windows Authentication (Negotiate) parallel lopen. Om het probleem van conflicterende WWW-Authenticate-headers op te lossen, gebruiken we een combinatie van middleware-configuratie, op beleid gebaseerde autorisatie en aangepaste responsafhandeling. Deze oplossing omvat het opzetten van twee verschillende authenticatieschema's die selectief op verschillende routes worden toegepast. Het idee is om ervoor te zorgen dat elke route alleen reageert met de noodzakelijke authenticatieheader: JWT voor met JWT beveiligde routes en Negotiate voor met Windows-authenticatie beveiligde routes. 🚀

Het eerste cruciale onderdeel van de oplossing is het opzetten van de authenticatieschema's. In het bestand `Program.cs` configureren we JWT Bearer-authenticatie en Windows-authenticatie. Voor de JWT hebben we de methode `AddJwtBearer` ingesteld met de nodige configuraties zoals `Issuer`, `Audience` en `IssuerSigningKey`. Het belangrijkste hier is de gebeurtenishandler die is gedefinieerd in `OnChallenge`, waarmee we de standaard WWW-Authenticate-header kunnen onderdrukken. Dit geeft ons controle over hoe de 401 ongeautoriseerde reacties worden afgehandeld. Ook zorgen wij ervoor dat de respons op maat wordt gemaakt met een JSON-bericht, waarin wordt aangegeven dat de gebruiker onbevoegd is.

Vervolgens voegen we een Windows Authenticatie-schema toe met `AddNegotiate()`. Hiermee wordt het HTTP Negotiate-protocol ingesteld dat wordt gebruikt voor het verifiëren van Windows-gebruikers. We koppelen beide authenticatieschema’s aan een afzonderlijk autorisatiebeleid. Dit beleid wordt gedefinieerd in de `AddAuthorization()`-methode, waarbij we voor elk authenticatieschema een aangepast beleid toevoegen. De `JwtAuthPolicy` voegt bijvoorbeeld expliciet `JwtBearerDefaults.AuthenticationScheme` toe, en op dezelfde manier voegt de `WinAuthPolicy` `NegotiateDefaults.AuthenticationScheme` toe. Dit is essentieel voor het correct routeren van de authenticatie op basis van het routebeveiligingsmechanisme. 💡

Na de installatie gebruiken we de kenmerken `[Authorize(Policy = "JwtAuthPolicy")]` en `[Authorize(Policy = "WinAuthPolicy")]` om de routes te versieren. Dit zorgt ervoor dat elke route het aangewezen authenticatiemechanisme volgt. We worden echter nog steeds geconfronteerd met een probleem waarbij beide authenticatieschema’s wereldwijd kunnen worden toegepast. Om dit aan te pakken, moeten we de middleware-stroom aanpassen en selectief de WWW-Authenticate-headers verwerken met behulp van de `HandleResponse()`-methode binnen de `OnChallenge`-gebeurtenis. Dit zorgt ervoor dat wanneer een route wordt beveiligd met JWT, de header WWW-Authenticate: Bearer wordt gebruikt en voor Windows-verificatieroutes alleen de header Negotiate wordt verzonden.

De algehele stroom is efficiënt en veilig omdat we gebruik maken van best practices zoals tokenvalidatie en foutafhandeling. Door beleid en authenticatieschema's in te stellen en de uitdagingsreacties aan te passen, zorgen we ervoor dat de authenticatieheaders strikt gekoppeld zijn aan de relevante routes. Met deze instellingen kunnen ontwikkelaars met vertrouwen verschillende authenticatieschema's beheren in één enkele ASP.NET Core-applicatie zonder onnodige conflicten te veroorzaken. Deze aanpak verbetert de gebruikerservaring door alleen de relevante WWW-Authenticate header voor elke beschermde route aan te bieden. 🛠️

Benadering 1: Authenticatie aanpassen met aangepaste middleware

Deze oplossing maakt gebruik van aangepaste middleware om de JWT Bearer Authentication en Windows Authentication (Negotiate) te beperken tot specifieke routes in een ASP.NET Core backend. De middleware zorgt ervoor dat alleen de juiste WWW-Authenticate header wordt opgenomen op basis van de authenticatievereisten van de route.

public class AuthenticationSchemeMiddleware
{
    private readonly RequestDelegate _next;
    public AuthenticationSchemeMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        var path = context.Request.Path;
        var authentication = context.RequestServices.GetRequiredService<IAuthenticationService>();
        if (path.StartsWithSegments("/api/jwt"))
        {
            context.Request.Headers["Authorization"] = "Bearer <your-token>";
        }
        else if (path.StartsWithSegments("/api/windows"))
        {
            context.Request.Headers["Authorization"] = "Negotiate";
        }
        await _next(context);
    }
}

public static class AuthenticationSchemeMiddlewareExtensions
{
    public static IApplicationBuilder UseAuthenticationSchemeMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<AuthenticationSchemeMiddleware>();
    }
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthenticationSchemeMiddleware();
    app.UseAuthentication();
    app.UseAuthorization();
}

Benadering 2: Beleidsmatige autorisatie met fijnmazige controle

Deze oplossing maakt gebruik van autorisatiebeleid om de authenticatieschema's afzonderlijk te configureren voor verschillende routes in ASP.NET Core. Met het beleid kunt u JWT Bearer Authentication of Windows Authentication selectief toepassen op basis van de route.

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(options =>
    {
        options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer(options =>
    {
        options.RequireHttpsMetadata = false;
        options.SaveToken = true;
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = builder.Configuration["Jwt:Issuer"],
            ValidAudience = builder.Configuration["Jwt:Issuer"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(builder.Configuration["Jwt:Key"]))
        };
    })
    .AddNegotiate();

    services.AddAuthorization(options =>
    {
        options.AddPolicy("JwtAuthPolicy", policy =>
        {
            policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme);
            policy.RequireAuthenticatedUser();
        });
        options.AddPolicy("WinAuthPolicy", policy =>
        {
            policy.AddAuthenticationSchemes(NegotiateDefaults.AuthenticationScheme);
            policy.RequireAuthenticatedUser();
        });
    });
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthentication();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapControllerRoute(
            name: "jwt",
            pattern: "api/jwt/{action}",
            defaults: new { controller = "Jwt" });
        endpoints.MapControllerRoute(
            name: "windows",
            pattern: "api/windows/{action}",
            defaults: new { controller = "Windows" });
    });
}

Benadering 3: Voorwaardelijke WWW-authenticatieheader op basis van route

Bij deze aanpak wordt ASP.NET Core geconfigureerd om alleen de juiste `WWW-Authenticate` header op te nemen op basis van de route, door het antwoord te onderscheppen en de header voorwaardelijk aan te passen. Deze methode maakt gebruik van middleware voor meer flexibiliteit bij het beheren van de headers.

public class AuthenticationHeaderMiddleware
{
    private readonly RequestDelegate _next;
    public AuthenticationHeaderMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        var path = context.Request.Path;
        await _next(context);
        if (path.StartsWithSegments("/api/jwt"))
        {
            context.Response.Headers["WWW-Authenticate"] = "Bearer";
        }
        else if (path.StartsWithSegments("/api/windows"))
        {
            context.Response.Headers["WWW-Authenticate"] = "Negotiate";
        }
    }
}

public static class AuthenticationHeaderMiddlewareExtensions
{
    public static IApplicationBuilder UseAuthenticationHeaderMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<AuthenticationHeaderMiddleware>();
    }
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthenticationHeaderMiddleware();
    app.UseAuthentication();
    app.UseAuthorization();
}

Authenticatie optimaliseren met JWT en Windows Authenticatie in ASP.NET Core

In ASP.NET Core vereist het beheren van meerdere authenticatieschema's, zoals JWT Bearer en Windows Authentication (Negotiate), een zorgvuldige configuratie om ervoor te zorgen dat het juiste schema wordt toegepast op specifieke routes. Een veelvoorkomend probleem waarmee ontwikkelaars worden geconfronteerd, is de standaardtoepassing van alle geconfigureerde authenticatieschema's wereldwijd, wat kan resulteren in het opnemen van ongewenste WWW-Authenticate-headers in HTTP-reacties. Dit is vooral problematisch als u wilt dat JWT-routes alleen de Bearer-header bevatten en Windows Authentication-routes alleen de Negotiate-header willen bevatten. Door de authenticatieconfiguratie aan te passen en beleid te gebruiken, kunt u bepalen welk authenticatieschema op elke route wordt toegepast en conflicten in antwoordheaders voorkomen. 🔐

Een van de krachtigste tools die u tot uw beschikking heeft, is het op beleid gebaseerde autorisatiesysteem in ASP.NET Core. Door voor elk authenticatieschema specifiek beleid te definiëren, kunt u ervoor zorgen dat elke route door het juiste mechanisme wordt beschermd. Een route die JWT Bearer-authenticatie vereist, zou bijvoorbeeld de 'JwtAuthPolicy' gebruiken, die afdwingt dat alleen het Bearer-schema wordt gebruikt, terwijl een route die Windows-authenticatie vereist, beveiligd zou zijn met 'WinAuthPolicy'. Deze aanpak maakt de applicatie flexibeler, omdat u hiermee het beveiligingsbeleid kunt afstemmen op verschillende routes binnen dezelfde applicatie. Om de header WWW-Authenticate te verfijnen, kunt u ook de gebeurtenis `OnChallenge` in de JWT-configuratie aanpassen om standaardheaders te onderdrukken en ervoor te zorgen dat alleen de relevante header in het antwoord wordt opgenomen.

Naast het opzetten van deze authenticatieschema's en -beleidsregels is het belangrijk om te begrijpen hoe middleware in dit proces functioneert. De middleware 'UseAuthentication' en 'UseAuthorization' moeten zorgvuldig in de pijplijn worden geplaatst om ervoor te zorgen dat het juiste authenticatieschema wordt verwerkt voordat elk verzoek zijn route bereikt. Door deze middlewares te definiëren en ze in de juiste volgorde te structureren, kun je conflicten tussen schema’s voorkomen. Deze aanpak verbetert niet alleen de beveiliging van uw applicatie, maar optimaliseert ook de gebruikerservaring door ervoor te zorgen dat alleen het noodzakelijke authenticatieschema op elk verzoek wordt toegepast. 🌐

Veelgestelde vragen over JWT en Windows-verificatie in ASP.NET Core

  1. Wat is het doel van de `AddJwtBearer`-methode in ASP.NET Core?
  2. De AddJwtBearer methode wordt gebruikt om JWT Bearer-authenticatie in ASP.NET Core te configureren. Hiermee kunt u opgeven hoe JWT-tokens worden gevalideerd, inclusief het instellen van parameters zoals de tokenuitgever, doelgroep en ondertekeningssleutel. Dit is essentieel voor het beveiligen van API's met JWT-tokens, zodat alleen geverifieerde gebruikers toegang hebben tot beschermde bronnen.
  3. Hoe kan ik de standaard WWW-Authenticate-header in JWT onderdrukken?
  4. Door het hanteren van de OnChallenge gebeurtenis in de JWT Bearer-configuratie, kunt u de standaard WWW-Authenticate-header onderdrukken. Dit doe je door te bellen context.HandleResponse(), waarmee het standaardgedrag wordt voorkomen, en vervolgens handmatig een aangepast antwoord wordt ingesteld, zoals het verzenden van een 401-statuscode met een JSON-foutmelding.
  5. Wat doet de methode `AddNegotiate()` in de context van ASP.NET Core-authenticatie?
  6. De AddNegotiate() methode configureert Windows-verificatie met behulp van het Negotiate-protocol. Hierdoor kan de applicatie gebruikers verifiëren op basis van Windows-referenties, meestal voor bedrijfsomgevingen waar gebruikers al zijn ingelogd op een Windows-domein.
  7. Hoe pas ik meerdere authenticatieschema's toe op verschillende routes?
  8. U kunt op beleid gebaseerde autorisatie gebruiken om specifieke authenticatieschema's op verschillende routes toe te passen. U kunt bijvoorbeeld een definiëren JwtAuthPolicy voor door JWT beschermde routes en a WinAuthPolicy voor routes die zijn beveiligd met Windows-verificatie. Vervolgens kunt u met behulp van de [Authorize(Policy = "PolicyName")] attribuut, kunt u elke route aan het betreffende authenticatieschema binden.
  9. Waarom is het belangrijk om de header `WWW-Authenticate` aan te passen?
  10. Het aanpassen van de WWW-Authenticate header zorgt ervoor dat alleen de relevante authenticatiemethode aan de client wordt geadverteerd. U wilt bijvoorbeeld niet dat JWT-routes de Negotiate-methode voorstellen, wat de client in verwarring kan brengen of onnodige prompts voor authenticatie kan veroorzaken. Deze aanpassing helpt de beveiliging te optimaliseren en de gebruikerservaring te verbeteren door een duidelijkere authenticatiestroom te bieden.
  11. Hoe helpt op beleid gebaseerde autorisatie bij het beheren van meerdere authenticatieschema's?
  12. Met op beleid gebaseerde autorisatie kunt u aangepast autorisatiebeleid definiëren voor verschillende routes, elk met een specifiek authenticatieschema. Dit maakt uw code flexibeler en onderhoudbaarder door zorgen te scheiden en ervoor te zorgen dat op elke route de juiste beveiligingsmaatregelen worden toegepast. U kunt voor elke route verschillende schema's en vereisten definiëren, zodat u ervoor zorgt dat het juiste mechanisme wordt toegepast op de juiste bronnen.
  13. Kan de gebeurtenis 'OnChallenge' in de JWT-configuratie worden gebruikt voor andere authenticatieschema's?
  14. Ja, de OnChallenge event kan ook worden gebruikt voor het aanpassen van de reactie op authenticatie-uitdagingen in andere schema's. U kunt het bijvoorbeeld gebruiken om het gedrag van het Negotiate-authenticatieschema aan te passen door standaardheaders te onderdrukken of de foutberichten te wijzigen die naar de client worden geretourneerd. Dit evenement biedt een krachtige manier om authenticatie-uitdagingen te beheersen.
  15. Wat is de rol van de `UseAuthentication` middleware in ASP.NET Core?
  16. De UseAuthentication middleware wordt gebruikt om authenticatie in een ASP.NET Core-applicatie mogelijk te maken. Het zorgt ervoor dat inkomende verzoeken worden gecontroleerd op geldige authenticatietokens of inloggegevens. Deze middleware moet vóór de UseAuthorization middleware om de gebruiker correct te authenticeren voordat autorisatiecontroles worden uitgevoerd.
  17. Hoe configureer ik authenticatie en autorisatie voor API's in ASP.NET Core?
  18. Om authenticatie en autorisatie voor API's te configureren, moet u de AddAuthentication En AddAuthorization methoden in het bestand `Program.cs`. Deze methoden stellen de authenticatieschema's in (zoals JWT en Negotiate) en definiëren beleid dat specificeert welke routes door welk authenticatieschema moeten worden beschermd. Gebruik dan de [Authorize] attribuut om uw routes te beveiligen.
  19. Wat is het voordeel van het gebruik van JWT Bearer Authenticatie in web-API's?
  20. JWT Bearer Authentication is een staatloze authenticatiemethode die een schaalbare en veilige manier biedt om gebruikers te authenticeren zonder de sessiestatus op de server te behouden. Het is vooral handig voor API's omdat het gebruikers in staat stelt zich te authenticeren met een token, dat gemakkelijk kan worden doorgegeven in HTTP-verzoeken, waardoor het ideaal is voor moderne webapplicaties en mobiele clients.

Bij het bouwen van een ASP.NET Core-applicatie met beide JWT Bearer-authenticatie En Windows-verificatie, kan het beheren van deze authenticatieschema's een uitdaging zijn. Het doel is het beperken van de WWW-authenticeren header om alleen het relevante schema weer te geven op basis van de route. Door aangepast autorisatiebeleid te definiëren en de Aanuitdaging In deze gebeurtenis kunnen ontwikkelaars de antwoordheaders effectief beheren en ervoor zorgen dat elk authenticatieschema alleen wordt toegepast waar dat nodig is. Deze aanpak verbetert de beveiliging en gebruikerservaring, vooral in scenario's waarin meerdere authenticatiemechanismen vereist zijn.

Zorgen voor de juiste authenticatieheaders voor specifieke routes

In een moderne ASP.NET Core-applicatie kan het controleren van authenticatieschema's zoals JWT en Windows-authenticatie voor verschillende routes leiden tot schonere en veiligere implementaties. De belangrijkste uitdaging hier is ervoor te zorgen dat de WWW-Authenticeren headers adverteren alleen de juiste authenticatiemethode voor elke route. Door de authenticatieschema's correct te configureren en de responsheaders voor elke route aan te passen, kunt u conflicten elimineren en de beveiliging van uw applicatie verbeteren. 🌐

In uw geval omvat de oplossing het gebruik van aangepast autorisatiebeleid voor zowel JWT- als Windows-verificatie. Met behulp van dit beleid kunt u bepalen welk authenticatieschema per route moet worden gebruikt. Door de standaard te onderdrukken WWW-Authenticeren kop door de Aanuitdaging gebeurtenis in uw JWT-configuratie, kunt u het antwoord zo aanpassen dat alleen de Bearer-header voor JWT-routes en de Negotiate-header voor Windows-verificatieroutes wordt weergegeven. Deze aanpak zorgt ervoor dat alleen de relevante header in het antwoord wordt verzonden, waardoor het authenticatieproces wordt gestroomlijnd en de gebruikerservaring wordt verbeterd. 🔒

Door deze technieken te gebruiken, kunt u een schonere authenticatiestroom voor uw gebruikers realiseren en onnodige authenticatieverzoeken vermijden. Bovendien biedt het betere controle over de beveiligingspositie van uw applicatie. Het is een goed voorbeeld van hoe het verfijnen van authenticatie in ASP.NET Core meer op maat gemaakte, robuuste en veilige webapplicaties mogelijk maakt. 💻

Bronnen en referenties
  1. Voor een diepere duik in het configureren van authenticatie in ASP.NET Core raadpleegt u de officiële Microsoft-documentatie op ASP.NET Core-verificatie .
  2. Voor hulp bij het gebruik van JWT Bearer-authenticatie en het omgaan met meerdere schema's kunt u deze uitgebreide handleiding raadplegen JWT Bearer-verificatie in ASP.NET Core .
  3. Voor meer details over Windows-verificatie en het onderhandelingsschema raadpleegt u de documentatie op Windows-verificatie in ASP.NET Core .