diff --git a/Elsa.Extensions.sln b/Elsa.Extensions.sln index 4cc424b5..0910c32d 100644 --- a/Elsa.Extensions.sln +++ b/Elsa.Extensions.sln @@ -217,10 +217,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Secrets.Persistence.EF EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{04265302-AF6B-4627-807C-DE9E1699D7C9}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "security", "security", "{0E8D351A-BBA9-4F7C-8148-D7E7A55D34D0}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.SasTokens", "src\security\Elsa.SasTokens\Elsa.SasTokens.csproj", "{FC3053E8-97BA-6D96-191F-E551056C8B0F}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.WorkflowContexts", "src\workflows\Elsa.WorkflowContexts\Elsa.WorkflowContexts.csproj", "{22EF03B2-6BA9-B8BD-A627-4249397F9299}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.WorkflowProviders.BlobStorage", "src\workflows\Elsa.WorkflowProviders.BlobStorage\Elsa.WorkflowProviders.BlobStorage.csproj", "{3F376159-A144-D407-D414-AB16857DB511}" @@ -535,10 +531,6 @@ Global {4E2F05DA-C902-293B-90E9-58583ED0D267}.Debug|Any CPU.Build.0 = Debug|Any CPU {4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|Any CPU.ActiveCfg = Release|Any CPU {4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|Any CPU.Build.0 = Release|Any CPU - {FC3053E8-97BA-6D96-191F-E551056C8B0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FC3053E8-97BA-6D96-191F-E551056C8B0F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FC3053E8-97BA-6D96-191F-E551056C8B0F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FC3053E8-97BA-6D96-191F-E551056C8B0F}.Release|Any CPU.Build.0 = Release|Any CPU {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|Any CPU.Build.0 = Debug|Any CPU {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -697,8 +689,6 @@ Global {B130CDB8-E048-9D95-3FEA-BF71F556C40F} = {BF696EF4-FEAE-4008-A788-369437420259} {4E2F05DA-C902-293B-90E9-58583ED0D267} = {BF696EF4-FEAE-4008-A788-369437420259} {04265302-AF6B-4627-807C-DE9E1699D7C9} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {0E8D351A-BBA9-4F7C-8148-D7E7A55D34D0} = {527248D6-B851-4C8D-8667-E2FB0A91DABF} - {FC3053E8-97BA-6D96-191F-E551056C8B0F} = {0E8D351A-BBA9-4F7C-8148-D7E7A55D34D0} {22EF03B2-6BA9-B8BD-A627-4249397F9299} = {04265302-AF6B-4627-807C-DE9E1699D7C9} {3F376159-A144-D407-D414-AB16857DB511} = {04265302-AF6B-4627-807C-DE9E1699D7C9} {AB7F40BD-1F5A-5474-DE94-6CD1E8E65EE5} = {EB873525-AE02-4406-AC78-5996DE781573} diff --git a/src/security/Elsa.SasTokens/Contracts/DataProtectorTokenService.cs b/src/security/Elsa.SasTokens/Contracts/DataProtectorTokenService.cs deleted file mode 100644 index df79897c..00000000 --- a/src/security/Elsa.SasTokens/Contracts/DataProtectorTokenService.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.Text.Json; -using Microsoft.AspNetCore.DataProtection; - -namespace Elsa.SasTokens.Contracts; - -/// -/// A service that can create and decrypt SAS (Shared Access Signature) tokens using the service. -/// -public class DataProtectorTokenService : ITokenService -{ - private readonly IDataProtector _dataProtector; - - /// - /// Initializes a new instance of the class. - /// - public DataProtectorTokenService(IDataProtectionProvider dataProtector) - { - _dataProtector = dataProtector.CreateProtector("Elsa Tokens"); - } - - /// - public string CreateToken(T payload, TimeSpan lifetime) - { - var json = JsonSerializer.Serialize(payload); - return _dataProtector.ToTimeLimitedDataProtector().Protect(json, lifetime); - } - - /// - public string CreateToken(T payload, DateTimeOffset expiresAt) - { - var json = JsonSerializer.Serialize(payload); - return _dataProtector.ToTimeLimitedDataProtector().Protect(json, expiresAt); - } - - /// - public string CreateToken(T payload) - { - var json = JsonSerializer.Serialize(payload); - return _dataProtector.Protect(json); - } - - /// - public bool TryDecryptToken(string token, out T payload) - { - payload = default!; - - try - { - payload = DecryptToken(token); - return true; - } - catch - { - // ignored. - } - - return false; - } - - /// - public T DecryptToken(string token) - { - var json = _dataProtector.Unprotect(token); - return JsonSerializer.Deserialize(json)!; - } -} \ No newline at end of file diff --git a/src/security/Elsa.SasTokens/Contracts/ITokenService.cs b/src/security/Elsa.SasTokens/Contracts/ITokenService.cs deleted file mode 100644 index 8d489d55..00000000 --- a/src/security/Elsa.SasTokens/Contracts/ITokenService.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace Elsa.SasTokens.Contracts; - -/// -/// A service that can create and decrypt SAS (Shared Access Signature) tokens. -/// -public interface ITokenService -{ - /// - /// Creates a SAS (Shared Access Signature) token containing the specified data. - /// - string CreateToken(T payload, TimeSpan lifetime); - - /// - /// Creates a SAS (Shared Access Signature) token containing the specified data. - /// - string CreateToken(T payload, DateTimeOffset expiresAt); - - /// - /// Creates a SAS (Shared Access Signature) token containing the specified data. - /// - string CreateToken(T payload); - - /// - /// Decrypts the specified SAS token. - /// - T DecryptToken(string token); - - /// - /// Decrypts the specified SAS token. - /// - bool TryDecryptToken(string token, out T payload); -} \ No newline at end of file diff --git a/src/security/Elsa.SasTokens/Elsa.SasTokens.csproj b/src/security/Elsa.SasTokens/Elsa.SasTokens.csproj deleted file mode 100644 index 0a78dda0..00000000 --- a/src/security/Elsa.SasTokens/Elsa.SasTokens.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Provides services to generate SAS tokens. - - elsa extension module security sas tokens - - - - - - - - - - diff --git a/src/security/Elsa.SasTokens/Extensions/ModuleExtensions.cs b/src/security/Elsa.SasTokens/Extensions/ModuleExtensions.cs deleted file mode 100644 index 9c42b9c4..00000000 --- a/src/security/Elsa.SasTokens/Extensions/ModuleExtensions.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Elsa.Features.Services; -using Elsa.SasTokens.Features; - -// ReSharper disable once CheckNamespace -namespace Elsa.Extensions; - -/// -/// Provides extensions to install the feature. -/// -public static class ModuleExtensions -{ - /// - /// Install the feature. - /// - public static IModule UseSasTokens(this IModule module, Action? configure = default) - { - module.Configure(configure); - return module; - } -} \ No newline at end of file diff --git a/src/security/Elsa.SasTokens/Features/SasTokensFeature.cs b/src/security/Elsa.SasTokens/Features/SasTokensFeature.cs deleted file mode 100644 index 2678766e..00000000 --- a/src/security/Elsa.SasTokens/Features/SasTokensFeature.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Elsa.Features.Abstractions; -using Elsa.Features.Services; -using Elsa.SasTokens.Contracts; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.Extensions.DependencyInjection; - -namespace Elsa.SasTokens.Features; - -/// -/// Adds the SAS tokens feature to the workflow runtime. -/// -/// -public class SasTokensFeature(IModule module) : FeatureBase(module) -{ - /// - /// Configures the used for setting up data protection. - /// Defaults to setting the application name to "Elsa Workflows". - /// - public Action ConfigureDataProtectionBuilder { get; set; } = b => { b.SetApplicationName("Elsa Workflows"); }; - - /// - /// Factory method to create an instance of . - /// Defaults to creating a using dependency injection. - /// - public Func TokenService { get; set; } = sp => ActivatorUtilities.CreateInstance(sp); - - /// - public override void Apply() - { - var builder = Services.AddDataProtection(); - ConfigureDataProtectionBuilder(builder); - - Services.AddScoped(TokenService); - } -} \ No newline at end of file diff --git a/src/security/Elsa.SasTokens/FodyWeavers.xml b/src/security/Elsa.SasTokens/FodyWeavers.xml deleted file mode 100644 index 00e1d9a1..00000000 --- a/src/security/Elsa.SasTokens/FodyWeavers.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file