adjust server to use authentication where needed

This commit is contained in:
Stanley Dimant 2022-08-01 10:42:19 +02:00
parent cc53e5650d
commit 4d3226aa8b
5 changed files with 32 additions and 24 deletions

View file

@ -7,6 +7,8 @@ using System.Text.Encodings.Web;
using System.Threading.Tasks;
using MareSynchronosServer.Data;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
@ -20,8 +22,13 @@ namespace MareSynchronosServer.Authentication
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
if (!Request.Headers.ContainsKey("Authorization"))
var endpoint = Context.GetEndpoint();
var endpointMetaData = endpoint?.Metadata?.GetMetadata<IAllowAnonymous>();
if (!Request.Headers.ContainsKey("Authorization") && endpointMetaData == null)
return AuthenticateResult.Fail("Failed Authorization");
else if (!Request.Headers.ContainsKey("Authorization") && endpointMetaData != null)
return AuthenticateResult.NoResult();
var authHeader = Request.Headers["Authorization"].ToString();
@ -37,6 +44,10 @@ namespace MareSynchronosServer.Authentication
{
return AuthenticateResult.Fail("Failed Authorization");
}
else if (endpointMetaData != null && uid == null)
{
return AuthenticateResult.NoResult();
}
var claims = new List<Claim> {
new Claim(ClaimTypes.NameIdentifier, uid)