| File: AuthenticationHandler.cs | Web Access |
| Project: src\aspnetcore\src\Servers\HttpSys\src\Microsoft.AspNetCore.Server.HttpSys.csproj (Microsoft.AspNetCore.Server.HttpSys) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.Server.HttpSys; internal sealed class AuthenticationHandler : IAuthenticationHandler { private RequestContext? _requestContext; private AuthenticationScheme? _scheme; public Task<AuthenticateResult> AuthenticateAsync() { var identity = _requestContext!.User?.Identity; if (identity != null && identity.IsAuthenticated) { return Task.FromResult(AuthenticateResult.Success(new AuthenticationTicket(_requestContext.User!, properties: null, authenticationScheme: _scheme!.Name))); } return Task.FromResult(AuthenticateResult.NoResult()); } public Task ChallengeAsync(AuthenticationProperties? properties) { _requestContext!.Response.StatusCode = 401; return Task.CompletedTask; } public Task ForbidAsync(AuthenticationProperties? properties) { _requestContext!.Response.StatusCode = 403; return Task.CompletedTask; } public Task InitializeAsync(AuthenticationScheme scheme, HttpContext context) { _scheme = scheme; _requestContext = context.Features.Get<RequestContext>(); if (_requestContext == null) { throw new InvalidOperationException("No RequestContext found."); } return Task.CompletedTask; } }