From 421f2657dd8450df866ccdb8bf4d7be48d69bdf6 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Mon, 17 Mar 2025 10:02:52 +0100 Subject: [PATCH] refactor(DigitalData.Auth.Client): DigitalData.Core.Security wurde auf 1.1.0 aktualisiert. --- DigitalData.Auth.Client/ClientPublicKey.cs | 2 +- .../DigitalData.Auth.Client.csproj | 4 ++-- DigitalData.Auth.Tests/Client/AuthClientTests.cs | 16 +++++++++------- .../DigitalData.Auth.Tests.csproj | 2 +- .../Controllers/AuthController.cs | 12 +++++++----- .../DigitalData.Auth.API.csproj | 5 +++-- src/DigitalData.Auth.API/Hubs/AuthHub.cs | 11 ++++++----- src/DigitalData.Auth.API/Program.cs | 9 +++++---- 8 files changed, 34 insertions(+), 27 deletions(-) diff --git a/DigitalData.Auth.Client/ClientPublicKey.cs b/DigitalData.Auth.Client/ClientPublicKey.cs index 607f7e7..d6dcfaa 100644 --- a/DigitalData.Auth.Client/ClientPublicKey.cs +++ b/DigitalData.Auth.Client/ClientPublicKey.cs @@ -1,5 +1,5 @@ using DigitalData.Core.Abstractions.Security; -using DigitalData.Core.Security.RSAKey; +using DigitalData.Core.Security.RSAKey.Base; using Microsoft.IdentityModel.Tokens; using System.Security.Cryptography; diff --git a/DigitalData.Auth.Client/DigitalData.Auth.Client.csproj b/DigitalData.Auth.Client/DigitalData.Auth.Client.csproj index daa7bb6..b4d0420 100644 --- a/DigitalData.Auth.Client/DigitalData.Auth.Client.csproj +++ b/DigitalData.Auth.Client/DigitalData.Auth.Client.csproj @@ -27,9 +27,9 @@ - + - + diff --git a/DigitalData.Auth.Tests/Client/AuthClientTests.cs b/DigitalData.Auth.Tests/Client/AuthClientTests.cs index eb3dbdd..b748e99 100644 --- a/DigitalData.Auth.Tests/Client/AuthClientTests.cs +++ b/DigitalData.Auth.Tests/Client/AuthClientTests.cs @@ -1,10 +1,12 @@ using DigitalData.Auth.Abstractions; using DigitalData.Auth.API.Hubs; using DigitalData.Auth.Client; -using DigitalData.Core.Abstractions.Security; -using DigitalData.Core.Security; +using DigitalData.Core.Abstractions.Security.Extensions; using DigitalData.Core.Security.Config; -using DigitalData.Core.Security.RSAKey; +using DigitalData.Core.Security.Extensions; +using DigitalData.Core.Security.RSAKey.Auth; +using DigitalData.Core.Security.RSAKey.Crypto; +using DigitalData.Core.Security.Services; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -46,7 +48,7 @@ public class AuthClientTests Issuer = "Foo", Audience = "Bar", Lifetime = new TimeSpan(1, 0, 0), - Content = Instance.RSAFactory.CreatePrivateKeyPem() + Content = RSAFactory.Static.CreatePrivateKeyPem() } ]; } @@ -56,7 +58,7 @@ public class AuthClientTests // Create builder and add SignalR service var builder = WebApplication.CreateBuilder(); builder.Services.AddSignalR(); - builder.Services.AddCryptoFactory(new CryptoFactoryParams() + builder.Services.AddRSAPool(new RSAParams() { PemDirectory = "/", Decryptors = [new RSADecryptor()], @@ -76,8 +78,8 @@ public class AuthClientTests return app; } - private static CryptoFactoryParams GetCryptoFactoryParamsOf(WebApplication application) => application - .Services.GetRequiredService>().Value; + private static RSAParams GetCryptoFactoryParamsOf(WebApplication application) => application + .Services.GetRequiredService>().Value; [SetUp] public void Setup() diff --git a/DigitalData.Auth.Tests/DigitalData.Auth.Tests.csproj b/DigitalData.Auth.Tests/DigitalData.Auth.Tests.csproj index 5f4811e..6c70286 100644 --- a/DigitalData.Auth.Tests/DigitalData.Auth.Tests.csproj +++ b/DigitalData.Auth.Tests/DigitalData.Auth.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/src/DigitalData.Auth.API/Controllers/AuthController.cs b/src/DigitalData.Auth.API/Controllers/AuthController.cs index 549d656..951c6d9 100644 --- a/src/DigitalData.Auth.API/Controllers/AuthController.cs +++ b/src/DigitalData.Auth.API/Controllers/AuthController.cs @@ -10,6 +10,8 @@ using DigitalData.Auth.API.Dto; using DigitalData.Auth.API.Services.Contracts; using DigitalData.Auth.API.Entities; using DigitalData.Core.DTO; +using DigitalData.Core.Abstractions.Security.Services; +using DigitalData.Core.Abstractions.Security.Extensions; namespace DigitalData.Auth.API.Controllers { @@ -23,7 +25,7 @@ namespace DigitalData.Auth.API.Controllers private readonly AuthApiParams _apiParams; - private readonly ICryptoFactory _cryptoFactory; + private readonly IAsymmetricKeyPool _keyPool; private readonly ILogger _logger; @@ -33,11 +35,11 @@ namespace DigitalData.Auth.API.Controllers private readonly IConsumerService _consumerService; - public AuthController(IJwtSignatureHandler userSignatureHandler, IOptions cookieParamsOptions, ICryptoFactory cryptoFactory, ILogger logger, IUserService userService, IDirectorySearchService dirSearchService, IConsumerService consumerService, IJwtSignatureHandler apiSignatureHandler) + public AuthController(IJwtSignatureHandler userSignatureHandler, IOptions cookieParamsOptions, IAsymmetricKeyPool keyPool, ILogger logger, IUserService userService, IDirectorySearchService dirSearchService, IConsumerService consumerService, IJwtSignatureHandler apiSignatureHandler) { _apiParams = cookieParamsOptions.Value; _userSignatureHandler = userSignatureHandler; - _cryptoFactory = cryptoFactory; + _keyPool = keyPool; _logger = logger; _userService = userService; _dirSearchService = dirSearchService; @@ -82,7 +84,7 @@ namespace DigitalData.Auth.API.Controllers if (consumer is null) return Unauthorized(); - if (!_cryptoFactory.TokenDescriptors.TryGet(_apiParams.Issuer, consumer.Audience, out var descriptor)) + if (!_keyPool.TokenDescriptors.TryGet(_apiParams.Issuer, consumer.Audience, out var descriptor)) return StatusCode(StatusCodes.Status500InternalServerError); var token = _userSignatureHandler.WriteToken(uRes!.Data, descriptor); @@ -104,7 +106,7 @@ namespace DigitalData.Auth.API.Controllers if (consumer is null || consumer.Password != login.Password) return Unauthorized(); - if (!_cryptoFactory.TokenDescriptors.TryGet(_apiParams.Issuer, _apiParams.LocalConsumer.Audience, out var descriptor)) + if (!_keyPool.TokenDescriptors.TryGet(_apiParams.Issuer, _apiParams.LocalConsumer.Audience, out var descriptor)) return StatusCode(StatusCodes.Status500InternalServerError); var token = _consumerSignatureHandler.WriteToken(consumer, descriptor); diff --git a/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj b/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj index 88b8861..3f961ce 100644 --- a/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj +++ b/src/DigitalData.Auth.API/DigitalData.Auth.API.csproj @@ -10,9 +10,10 @@ - + + - + diff --git a/src/DigitalData.Auth.API/Hubs/AuthHub.cs b/src/DigitalData.Auth.API/Hubs/AuthHub.cs index 05da08c..05351c5 100644 --- a/src/DigitalData.Auth.API/Hubs/AuthHub.cs +++ b/src/DigitalData.Auth.API/Hubs/AuthHub.cs @@ -1,5 +1,6 @@ using DigitalData.Auth.Abstractions; -using DigitalData.Core.Abstractions.Security; +using DigitalData.Core.Abstractions.Security.Extensions; +using DigitalData.Core.Abstractions.Security.Services; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Caching.Memory; @@ -7,7 +8,7 @@ namespace DigitalData.Auth.API.Hubs; public class AuthHub : Hub, IAuthSenderHandler { - private readonly ICryptoFactory _cFactory; + private readonly IAsymmetricKeyPool _keyPool; private readonly ILogger _logger; @@ -15,16 +16,16 @@ public class AuthHub : Hub, IAuthSenderHandler private readonly static string CacheId = Guid.NewGuid().ToString(); - public AuthHub(ICryptoFactory cryptoFactory, ILogger logger, IMemoryCache cache) + public AuthHub(IAsymmetricKeyPool cryptoFactory, ILogger logger, IMemoryCache cache) { - _cFactory = cryptoFactory; + _keyPool = cryptoFactory; _logger = logger; _cache = cache; } public async Task GetPublicKeyAsync(string issuer, string audience) { - if(_cFactory.TokenDescriptors.TryGet(issuer, audience, out var tDesc)) + if(_keyPool.TokenDescriptors.TryGet(issuer, audience, out var tDesc)) { await Clients.Caller.ReceivePublicKeyAsync(issuer, audience, tDesc.PublicKey.Content); } diff --git a/src/DigitalData.Auth.API/Program.cs b/src/DigitalData.Auth.API/Program.cs index 2896576..b605146 100644 --- a/src/DigitalData.Auth.API/Program.cs +++ b/src/DigitalData.Auth.API/Program.cs @@ -2,9 +2,10 @@ using DigitalData.Auth.API.Config; using DigitalData.Auth.API.Entities; using DigitalData.Auth.API.Hubs; using DigitalData.Auth.API.Services; -using DigitalData.Core.Abstractions.Security; +using DigitalData.Core.Abstractions.Security.Extensions; +using DigitalData.Core.Abstractions.Security.Services; using DigitalData.Core.Application; -using DigitalData.Core.Security; +using DigitalData.Core.Security.Extensions; using DigitalData.UserManager.Application; using DigitalData.UserManager.Application.DTOs.User; using Microsoft.AspNetCore.Authentication.JwtBearer; @@ -30,7 +31,7 @@ try // Add services to the container. builder.Services.Configure(config); builder.Services.AddAuthService(config); - builder.Services.AddCryptoFactory(config.GetSection("CryptParams")); + builder.Services.AddRSAPool(config.GetSection("CryptParams")); builder.Services.AddJwtSignatureHandler(api => new Dictionary { { JwtRegisteredClaimNames.Sub, api.Id }, @@ -126,7 +127,7 @@ try issuerSigningKeyInitiator = new Lazy(() => { - var factory = app.Services.GetRequiredService(); + var factory = app.Services.GetRequiredService(); var desc = factory.TokenDescriptors.Get(apiParams.Issuer, apiParams.LocalConsumer.Audience); return desc.Validator.SecurityKey; });