pavelbannov
5022501e58
# Conflicts: # common/ASC.Api.Core/Auth/ConfirmAuthHandler.cs # common/ASC.Api.Core/Auth/CookieAuthHandler.cs # common/ASC.Api.Core/Core/ApiContext.cs # common/ASC.Api.Core/Core/ApiDateTime.cs # common/ASC.Api.Core/Core/BaseStartup.cs # common/ASC.Api.Core/Core/CustomHealthCheck.cs # common/ASC.Api.Core/Middleware/ProductSecurityFilter.cs # common/ASC.Api.Core/Middleware/TenantStatusFilter.cs # common/ASC.Api.Core/Model/EmployeeWraperFull.cs # common/ASC.Api.Core/Routing/FormatRoute.cs
46 lines
1.7 KiB
C#
46 lines
1.7 KiB
C#
using SecurityContext = ASC.Core.SecurityContext;
|
|
|
|
namespace ASC.Api.Core.Auth;
|
|
|
|
[Scope]
|
|
public class CookieAuthHandler : AuthenticationHandler<AuthenticationSchemeOptions>
|
|
{
|
|
private readonly AuthorizationHelper _authorizationHelper;
|
|
private readonly SecurityContext _securityContext;
|
|
private readonly CookiesManager _cookiesManager;
|
|
|
|
public CookieAuthHandler(
|
|
IOptionsMonitor<AuthenticationSchemeOptions> options,
|
|
ILoggerFactory logger,
|
|
UrlEncoder encoder,
|
|
ISystemClock clock)
|
|
: base(options, logger, encoder, clock) { }
|
|
|
|
public CookieAuthHandler(IOptionsMonitor<AuthenticationSchemeOptions> options,
|
|
ILoggerFactory logger, UrlEncoder encoder, ISystemClock clock,
|
|
AuthorizationHelper authorizationHelper,
|
|
SecurityContext securityContext,
|
|
CookiesManager cookiesManager)
|
|
: this(options, logger, encoder, clock)
|
|
{
|
|
_authorizationHelper = authorizationHelper;
|
|
_securityContext = securityContext;
|
|
_cookiesManager = cookiesManager;
|
|
}
|
|
|
|
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
|
|
{
|
|
var result = _authorizationHelper.ProcessBasicAuthorization(out _);
|
|
if (!result)
|
|
{
|
|
_securityContext.Logout();
|
|
_cookiesManager.ClearCookies(CookiesType.AuthKey);
|
|
_cookiesManager.ClearCookies(CookiesType.SocketIO);
|
|
}
|
|
|
|
return Task.FromResult(
|
|
result ?
|
|
AuthenticateResult.Success(new AuthenticationTicket(Context.User, new AuthenticationProperties(), Scheme.Name)) :
|
|
AuthenticateResult.Fail(new AuthenticationException(nameof(HttpStatusCode.Unauthorized))));
|
|
}
|
|
} |