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 Microsoft.Extensions.Options;
using System.Net; 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 namespace DigitalData.Core.Client
{ {
public static class DIExtensions public static class DIExtensions

View File

@@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<PackageId>DigitalData.Core.Security</PackageId> <PackageId>DigitalData.Core.Security</PackageId>
<Version>1.1.0</Version> <Version>1.2.3</Version>
<Company>Digital Data GmbH</Company> <Company>Digital Data GmbH</Company>
<Product>Digital Data GmbH</Product> <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> <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> <PackageIcon>core_icon.png</PackageIcon>
<RepositoryUrl>http://git.dd:3000/AppStd/WebCoreModules.git</RepositoryUrl> <RepositoryUrl>http://git.dd:3000/AppStd/WebCoreModules.git</RepositoryUrl>
<PackageTags>digital data core security</PackageTags> <PackageTags>digital data core security</PackageTags>
<AssemblyVersion>1.1.0</AssemblyVersion> <AssemblyVersion>1.2.3</AssemblyVersion>
<FileVersion>1.1.0</FileVersion> <FileVersion>1.2.3</FileVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -26,10 +26,18 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="AutoMapper" Version="13.0.1" /> <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.Options.ConfigurationExtensions" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.1" />
</ItemGroup> </ItemGroup>
<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. /// Registers a custom asym crypt service with specified parameters from the given configuration section.
/// </summary> /// </summary>
/// <param name="services"></param> /// <param name="services"></param>
/// <param name="section"></param> /// <param name="configuration"></param>
/// <returns>The updated <see cref="IServiceCollection"/> with the RSA Factory registered.</returns> /// <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) .Configure<RSAParams>(configuration)
.AddAutoMapper(typeof(MappingProfile).Assembly) .AddAutoMapper(typeof(MappingProfile).Assembly)
.AddSingleton<IAsymmetricKeyPool, RSAPool>() .AddSingleton<IAsymmetricKeyPool, RSAPool>()
.AddSingleton<IAsymmetricKeyFactory, RSAFactory>() .AddSingleton<IAsymmetricKeyFactory, RSAFactory>()
.AddHostedService<PemFileInitalizer>(); .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, public static IServiceCollection AddJwtSignatureHandler<TPrincipal>(this IServiceCollection services,
Func<TPrincipal, IDictionary<string, object>>? claimsMapper = null, Func<TPrincipal, IDictionary<string, object>>? claimsMapper = null,
Func<TPrincipal, ClaimsIdentity>? subjectMapper = null) Func<TPrincipal, ClaimsIdentity>? subjectMapper = null)

View File

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

View File

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

View File

@@ -29,7 +29,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DigitalData.Core.Tests.API"
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Security", "Security", "{72CBAFBA-55CC-49C9-A484-F8F4550054CB}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Security", "Security", "{72CBAFBA-55CC-49C9-A484-F8F4550054CB}"
EndProject 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 EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution