From 6f5b4efefba463b2de1585818736c187d170de1e Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 20 Dec 2024 00:48:55 +0100 Subject: [PATCH] =?UTF-8?q?feat(ClaimDescriptor):=20Erstellt,=20um=20claim?= =?UTF-8?q?sMapper=20und=20subjectMapper=20von=20TPrincipal=20f=C3=BCr=20S?= =?UTF-8?q?ecurityTokenDescriptor=20zu=20registrieren.=20=20-=20DI-Erweite?= =?UTF-8?q?rungsmethode=20erstellt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Config/ClaimDescriptor.cs | 11 +++++++++++ DigitalData.Core.Security/DIExtensions.cs | 14 ++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 DigitalData.Core.Security/Config/ClaimDescriptor.cs diff --git a/DigitalData.Core.Security/Config/ClaimDescriptor.cs b/DigitalData.Core.Security/Config/ClaimDescriptor.cs new file mode 100644 index 0000000..f82a36e --- /dev/null +++ b/DigitalData.Core.Security/Config/ClaimDescriptor.cs @@ -0,0 +1,11 @@ +using System.Security.Claims; + +namespace DigitalData.Core.Security.Config +{ + public class ClaimDescriptor + { + public Func>? CreateClaims { get; init; } + + public Func? CreateSubject { get; init; } + } +} \ No newline at end of file diff --git a/DigitalData.Core.Security/DIExtensions.cs b/DigitalData.Core.Security/DIExtensions.cs index 27cb935..b7816fb 100644 --- a/DigitalData.Core.Security/DIExtensions.cs +++ b/DigitalData.Core.Security/DIExtensions.cs @@ -4,6 +4,7 @@ using DigitalData.Core.Security.Cryptographer; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; +using System.Security.Claims; namespace DigitalData.Core.Security { @@ -123,5 +124,18 @@ namespace DigitalData.Core.Security ? services.AddParamsConfigureOptions().AddSingleton>() : services.AddParamsConfigureOptions().AddSingleton, RSAFactory>(); } + + private static IServiceCollection AddClaimDescriptor(this IServiceCollection services, + Func>? claimsMapper = null, + Func? subjectMapper = null) + { + var descriptor = new ClaimDescriptor + { + CreateClaims = claimsMapper, + CreateSubject = subjectMapper + }; + + return services.AddSingleton(sp => Options.Create(descriptor)); + } } } \ No newline at end of file