From d673bd34945699df96e38c54f70352608430fbc4 Mon Sep 17 00:00:00 2001 From: vnugent Date: Thu, 9 Mar 2023 01:48:40 -0500 Subject: Omega cache, session, and account provider complete overhaul --- .../src/Endpoints/AccessTokenEndpoint.cs | 20 ++++++++++++-------- .../src/Endpoints/RevocationEndpoint.cs | 8 ++------ 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints') diff --git a/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/AccessTokenEndpoint.cs b/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/AccessTokenEndpoint.cs index f01b764..9f0f35d 100644 --- a/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/AccessTokenEndpoint.cs +++ b/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/AccessTokenEndpoint.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials.Sessions.OAuth @@ -25,7 +25,6 @@ using System; using System.Net; using System.Text.Json; -using System.Threading; using System.Threading.Tasks; using VNLib.Utils.Memory; @@ -42,17 +41,16 @@ using VNLib.Plugins.Extensions.Validation; namespace VNLib.Plugins.Sessions.OAuth.Endpoints { - delegate Task CreateTokenImpl(HttpEntity ev, UserApplication application, CancellationToken cancellation = default); /// /// Grants authorization to OAuth2 clients to protected resources /// with access tokens /// + [ConfigurationName(O2SessionProviderEntry.OAUTH2_CONFIG_KEY)] internal sealed class AccessTokenEndpoint : ResourceEndpointBase { - private readonly CreateTokenImpl CreateToken; + private readonly IApplicationTokenFactory TokenFactory; private readonly ApplicationStore Applications; - private readonly Task JWTVerificationKey; //override protection settings to allow most connections to authenticate @@ -63,11 +61,17 @@ namespace VNLib.Plugins.Sessions.OAuth.Endpoints DisableVerifySessionCors = true }; - public AccessTokenEndpoint(string path, PluginBase pbase, CreateTokenImpl tokenStore) + public AccessTokenEndpoint(PluginBase pbase, IConfigScope config) { + string? path = config["token_path"].GetString();; + InitPathAndLog(path, pbase.Log); - CreateToken = tokenStore; + + //Get the session provider, as its a token factory + TokenFactory = pbase.GetOrCreateSingleton(); + Applications = new(pbase.GetContextOptions(), pbase.GetPasswords()); + //Try to get the application token key for verifying signed application JWTs JWTVerificationKey = pbase.TryGetSecretAsync("application_token_key").ToJsonWebKey(); } @@ -172,7 +176,7 @@ namespace VNLib.Plugins.Sessions.OAuth.Endpoints return VfReturnType.VirtualSkip; } - IOAuth2TokenResult? result = await CreateToken(entity, app, entity.EventCancellation); + IOAuth2TokenResult? result = await TokenFactory.CreateAccessTokenAsync(entity, app, entity.EventCancellation); if (result == null) { diff --git a/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/RevocationEndpoint.cs b/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/RevocationEndpoint.cs index 81f82c2..45a8391 100644 --- a/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/RevocationEndpoint.cs +++ b/libs/VNLib.Plugins.Sessions.OAuth/src/Endpoints/RevocationEndpoint.cs @@ -1,5 +1,5 @@ /* -* Copyright (c) 2022 Vaughn Nugent +* Copyright (c) 2023 Vaughn Nugent * * Library: VNLib * Package: VNLib.Plugins.Essentials.Sessions.OAuth @@ -22,10 +22,6 @@ * along with this program. If not, see https://www.gnu.org/licenses/. */ -using System; -using System.Text.Json; -using System.Collections.Generic; - using VNLib.Plugins.Essentials; using VNLib.Plugins.Essentials.Oauth; using VNLib.Plugins.Extensions.Loading; @@ -40,7 +36,7 @@ namespace VNLib.Plugins.Sessions.OAuth.Endpoints internal class RevocationEndpoint : O2EndpointBase { - public RevocationEndpoint(PluginBase pbase, IReadOnlyDictionary config) + public RevocationEndpoint(PluginBase pbase, IConfigScope config) { string? path = config["path"].GetString(); InitPathAndLog(path, pbase.Log); -- cgit