8 Commits

Author SHA1 Message Date
Developer 02
51c1f408d7 fix: Konflikte lösen 2025-03-25 12:45:27 +01:00
Developer 02
a034ecdb1b chore: Nuget-Pakete werden je nach Rahmenwerk bedingt konfiguriert. 2025-03-25 12:43:18 +01:00
Developer 02
f4a9c5c57a fix: project dir 2025-03-25 10:30:09 +01:00
Developer 02
e15f32ae56 feat(PemFileInitalizer): Hinzufügen von Informationsprotokollen. 2025-03-17 10:55:38 +01:00
Developer 02
44d4bb9c23 feat(DIExtensions): To-Do hinzugefügt. 2025-03-17 09:30:56 +01:00
Developer 02
a0c5144c28 feat(DIExtensions): Added AddRSAPool method to configure via direct RSAParams instance. 2025-03-17 09:14:23 +01:00
Developer 02
dda9b40bd3 fix(Sicherheit): Unter den Ordner „Security “ verschieben 2025-03-14 14:38:33 +01:00
Developer 02
de89185b43 chore(DigitalData.Core.Security): Aktualisiert auf Version 1.1.0 2025-03-14 14:34:09 +01:00
6 changed files with 36 additions and 12 deletions

View File

@@ -5,6 +5,7 @@ using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using System.Net;
//TODO: Update to use IHttpClientFactory (see also: https://learn.microsoft.com/tr-tr/dotnet/core/extensions/httpclient-factory)
namespace DigitalData.Core.Client
{
public static class DIExtensions

View File

@@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageId>DigitalData.Core.Security</PackageId>
<Version>1.1.0</Version>
<Version>1.2.3</Version>
<Company>Digital Data GmbH</Company>
<Product>Digital Data GmbH</Product>
<Description>This package provides RSA-based security functionalities as an implementation of the DigitalData.Core.Abstractions.Security library. It supports robust encryption and decryption operations, as well as JWT signing and validation for secure authentication and data integrity.</Description>
@@ -15,8 +15,8 @@
<PackageIcon>core_icon.png</PackageIcon>
<RepositoryUrl>http://git.dd:3000/AppStd/WebCoreModules.git</RepositoryUrl>
<PackageTags>digital data core security</PackageTags>
<AssemblyVersion>1.1.0</AssemblyVersion>
<FileVersion>1.1.0</FileVersion>
<AssemblyVersion>1.2.3</AssemblyVersion>
<FileVersion>1.2.3</FileVersion>
</PropertyGroup>
<ItemGroup>
@@ -25,11 +25,19 @@
<PackagePath>\</PackagePath>
</None>
</ItemGroup>
<ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="AutoMapper" Version="13.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.3" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="7.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="AutoMapper" Version="14.0.0" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.1" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
</ItemGroup>
<ItemGroup>

View File

@@ -14,15 +14,28 @@ public static class DIExtensions
/// Registers a custom asym crypt service with specified parameters from the given configuration section.
/// </summary>
/// <param name="services"></param>
/// <param name="section"></param>
/// <param name="configuration"></param>
/// <returns>The updated <see cref="IServiceCollection"/> with the RSA Factory registered.</returns>
public static IServiceCollection AddCryptoFactory(this IServiceCollection services, IConfiguration configuration) => services
public static IServiceCollection AddRSAPool(this IServiceCollection services, IConfiguration configuration) => services
.Configure<RSAParams>(configuration)
.AddAutoMapper(typeof(MappingProfile).Assembly)
.AddSingleton<IAsymmetricKeyPool, RSAPool>()
.AddSingleton<IAsymmetricKeyFactory, RSAFactory>()
.AddHostedService<PemFileInitalizer>();
/// <summary>
/// Registers a custom asym crypt service with specified parameters from the given configuration section.
/// </summary>
/// <param name="services"></param>
/// <param name="rsaParams"></param>
/// <returns>The updated <see cref="IServiceCollection"/> with the RSA Factory registered.</returns>
public static IServiceCollection AddRSAPool(this IServiceCollection services, RSAParams rsaParams) => services
.AddSingleton(Options.Create(rsaParams))
.AddAutoMapper(typeof(MappingProfile).Assembly)
.AddSingleton<IAsymmetricKeyPool, RSAPool>()
.AddSingleton<IAsymmetricKeyFactory, RSAFactory>()
.AddHostedService<PemFileInitalizer>();
public static IServiceCollection AddJwtSignatureHandler<TPrincipal>(this IServiceCollection services,
Func<TPrincipal, IDictionary<string, object>>? claimsMapper = null,
Func<TPrincipal, ClaimsIdentity>? subjectMapper = null)

View File

@@ -24,6 +24,7 @@ public class PemFileInitalizer : BackgroundService
{
try
{
_logger.LogInformation("Pem file initalizer launched.");
await InitPemFiles(stoppingToken);
}
catch(Exception ex)
@@ -34,6 +35,7 @@ public class PemFileInitalizer : BackgroundService
private async Task InitPemFiles(CancellationToken stoppingToken = default)
{
_logger.LogInformation("Initializing pem files. PemDirectory: {dir}", _factoryParams.PemDirectory);
// Create root folder if it does not exist
if (!Directory.Exists(_factoryParams.PemDirectory))
Directory.CreateDirectory(_factoryParams.PemDirectory);

View File

@@ -13,9 +13,9 @@ namespace DigitalData.Core.Tests.Client
[SetUp]
public void SetUp()
{
_serviceProvider = new ServiceCollection()
.AddHttpClientService("https://jsonplaceholder.typicode.com", "todos")
.BuildServiceProvider();
//_serviceProvider = new ServiceCollection()
// .AddHttpClientService("https://jsonplaceholder.typicode.com", "todos")
// .BuildServiceProvider();
_service = _serviceProvider.GetRequiredService<IBaseHttpClientService>();
}

View File

@@ -29,7 +29,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.Tests.API"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Security", "Security", "{72CBAFBA-55CC-49C9-A484-F8F4550054CB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DigitalData.Core.Abstractions.Security", "DigitalData.Core.Abstractions.Security\DigitalData.Core.Abstractions.Security.csproj", "{C9266749-9504-4EA9-938F-F083357B60B7}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.Abstractions.Security", "DigitalData.Core.Abstractions.Security\DigitalData.Core.Abstractions.Security.csproj", "{C9266749-9504-4EA9-938F-F083357B60B7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution