From 274ae2c9dfcdd38f0606c7d27b4e742f42d3fde1 Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Sun, 5 Jun 2022 21:30:45 +0200 Subject: [PATCH 01/22] Fix for dotnet6 were configuraitonbuilder would close the object --- .../src/Convey.Secrets.Vault/Extensions.cs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs index bac54b53..efcdf0c3 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs @@ -23,9 +23,9 @@ public static class Extensions private static readonly ILeaseService LeaseService = new LeaseService(); private static readonly ICertificatesService CertificatesService = new CertificatesService(); - public static IHostBuilder UseVault(this IHostBuilder builder, string keyValuePath = null, + public static IHostBuilder UseVault(this IHostBuilder builder,IConfiguration configuration, string keyValuePath = null, string sectionName = SectionName) - => builder.ConfigureServices(services => services.AddVault(sectionName)) + => builder.ConfigureServices(services => services.AddVault(configuration, sectionName)) .ConfigureAppConfiguration((ctx, cfg) => { var options = cfg.Build().GetOptions(sectionName); @@ -37,9 +37,9 @@ public static IHostBuilder UseVault(this IHostBuilder builder, string keyValuePa cfg.AddVaultAsync(options, keyValuePath).GetAwaiter().GetResult(); }); - public static IWebHostBuilder UseVault(this IWebHostBuilder builder, string keyValuePath = null, + public static IWebHostBuilder UseVault(this IWebHostBuilder builder,IConfiguration configuration, string keyValuePath = null, string sectionName = SectionName) - => builder.ConfigureServices(services => services.AddVault(sectionName)) + => builder.ConfigureServices(services => services.AddVault(configuration, sectionName)) .ConfigureAppConfiguration((ctx, cfg) => { var options = cfg.Build().GetOptions(sectionName); @@ -51,18 +51,14 @@ public static IWebHostBuilder UseVault(this IWebHostBuilder builder, string keyV cfg.AddVaultAsync(options, keyValuePath).GetAwaiter().GetResult(); }); - private static IServiceCollection AddVault(this IServiceCollection services, string sectionName) + private static IServiceCollection AddVault(this IServiceCollection services,IConfiguration configuration, string sectionName) { if (string.IsNullOrWhiteSpace(sectionName)) { sectionName = SectionName; } - IConfiguration configuration; - using (var serviceProvider = services.BuildServiceProvider()) - { - configuration = serviceProvider.GetRequiredService(); - } + var options = configuration.GetOptions(sectionName); VerifyOptions(options); From ba4df4287f4f807690ef8d8ccf2bd3b726321e92 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Sun, 5 Jun 2022 21:56:34 +0200 Subject: [PATCH 02/22] Create Dylan.Convey.Secrets.Vault.yml --- .../workflows/Dylan.Convey.Secrets.Vault.yml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 .github/workflows/Dylan.Convey.Secrets.Vault.yml diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml new file mode 100644 index 00000000..4cdd5be9 --- /dev/null +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -0,0 +1,28 @@ +name: .NET + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v2 + with: + dotnet-version: 6.0.x + - name: Restore dependencies + run: dotnet restore + working-directory: src\Convey.Secrets.Vault\src\Convey.Secrets.Vault + - name: Build + run: dotnet build --no-restore + working-directory: src\Convey.Secrets.Vault\src\Convey.Secrets.Vault + - name: Test + run: dotnet test --no-build --verbosity normal + working-directory: src\Convey.Secrets.Vault\src\Convey.Secrets.Vault From 8b09fb048b796937e90f0e661141edcc32a44bba Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Sun, 5 Jun 2022 21:57:00 +0200 Subject: [PATCH 03/22] Creeated project --- samples/Conveyor.Services.Orders/Program.cs | 2 +- .../Services/PricingServiceClient.cs | 2 +- .../Convey.Secrets.Vault.csproj | 15 +++++++-------- .../src/Convey.Secrets.Vault/Extensions.cs | 4 ++-- .../Convey.Secrets.Vault/ICertificatesIssuer.cs | 2 +- .../Convey.Secrets.Vault/ICertificatesService.cs | 2 +- .../src/Convey.Secrets.Vault/IKeyValueSecrets.cs | 2 +- .../src/Convey.Secrets.Vault/ILeaseService.cs | 2 +- .../Internals/CertificatesIssuer.cs | 2 +- .../Internals/CertificatesService.cs | 2 +- .../Internals/EmptyCertificatesIssuer.cs | 2 +- .../Internals/KeyValueSecrets.cs | 2 +- .../Internals/LeaseService.cs | 2 +- .../Internals/VaultHostedService.cs | 2 +- .../src/Convey.Secrets.Vault/JsonParser.cs | 2 +- .../src/Convey.Secrets.Vault/LeaseData.cs | 2 +- .../src/Convey.Secrets.Vault/UserCredentials.cs | 2 +- .../VaultAuthTypeNotSupportedException.cs | 2 +- .../src/Convey.Secrets.Vault/VaultException.cs | 2 +- .../src/Convey.Secrets.Vault/VaultOptions.cs | 2 +- 20 files changed, 27 insertions(+), 28 deletions(-) diff --git a/samples/Conveyor.Services.Orders/Program.cs b/samples/Conveyor.Services.Orders/Program.cs index fa05140b..8fba8712 100644 --- a/samples/Conveyor.Services.Orders/Program.cs +++ b/samples/Conveyor.Services.Orders/Program.cs @@ -16,7 +16,7 @@ using Convey.Metrics.Prometheus; using Convey.Persistence.MongoDB; using Convey.Persistence.Redis; -using Convey.Secrets.Vault; +using Dylan.Convey.Secrets.Vault; using Convey.Tracing.Jaeger; using Convey.Tracing.Jaeger.RabbitMQ; using Convey.WebApi; diff --git a/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs b/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs index 7c80d919..d16c8c10 100644 --- a/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs +++ b/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; using Convey.HTTP; -using Convey.Secrets.Vault; +using Dylan.Convey.Secrets.Vault; using Convey.WebApi.Security; using Conveyor.Services.Orders.DTO; diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj index fdc7a172..f479acde 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj @@ -1,20 +1,19 @@  - Convey.Secrets.Vault - DevMentors.io + Dylan.Convey.Secrets.Vault + Dylan Snel / DevMentors.io net6.0 Latest - Convey.Secrets.Vault - Convey.Secrets.Vault - Convey.Secrets.Vault + Dylan.Convey.Secrets.Vault + Dylan.Convey.Secrets.Vault + Dylan.Convey.Secrets.Vault - - - + + diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs index efcdf0c3..d6fdc832 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Convey.Secrets.Vault.Internals; +using Dylan.Convey.Secrets.Vault.Internals; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Memory; @@ -15,7 +15,7 @@ using VaultSharp.V1.AuthMethods.UserPass; using VaultSharp.V1.SecretsEngines; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public static class Extensions { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs index 578d1159..2e2b92bf 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs @@ -1,7 +1,7 @@ using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public interface ICertificatesIssuer { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs index 6abd1865..bb41905f 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public interface ICertificatesService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs index a35cbeb0..af079748 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public interface IKeyValueSecrets { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs index 8cfd32d7..882bb80d 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public interface ILeaseService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs index 15e81ce1..a1bbf81b 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs @@ -7,7 +7,7 @@ using VaultSharp.V1.SecretsEngines; using VaultSharp.V1.SecretsEngines.PKI; -namespace Convey.Secrets.Vault.Internals; +namespace Dylan.Convey.Secrets.Vault.Internals; internal sealed class CertificatesIssuer : ICertificatesIssuer { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs index 56a001a2..e14b94d3 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; -namespace Convey.Secrets.Vault.Internals; +namespace Dylan.Convey.Secrets.Vault.Internals; internal sealed class CertificatesService : ICertificatesService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs index 98529e03..496ffda0 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs @@ -1,7 +1,7 @@ using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; -namespace Convey.Secrets.Vault.Internals; +namespace Dylan.Convey.Secrets.Vault.Internals; public class EmptyCertificatesIssuer : ICertificatesIssuer { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs index 6f620919..d4b624c7 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using VaultSharp; -namespace Convey.Secrets.Vault.Internals; +namespace Dylan.Convey.Secrets.Vault.Internals; internal sealed class KeyValueSecrets : IKeyValueSecrets { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs index 52f1bac0..a134df40 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs @@ -1,7 +1,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; -namespace Convey.Secrets.Vault.Internals; +namespace Dylan.Convey.Secrets.Vault.Internals; internal sealed class LeaseService : ILeaseService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs index 64e890bf..38d00894 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs @@ -6,7 +6,7 @@ using Microsoft.Extensions.Logging; using VaultSharp; -namespace Convey.Secrets.Vault.Internals; +namespace Dylan.Convey.Secrets.Vault.Internals; internal sealed class VaultHostedService : BackgroundService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs index 9accc34b..6bf61de2 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs @@ -3,7 +3,7 @@ using System.Text.Json; using Microsoft.Extensions.Configuration; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; //Credits goes to .NET Foundation Team. //JSON parser is based on JsonConfigurationFileParser found in Microsoft.Extensions.Configuration.Json library. diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs index eae97d06..2f0b2215 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs @@ -1,6 +1,6 @@ using System; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public class LeaseData { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs index 8158fabd..2b45dd01 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs @@ -1,4 +1,4 @@ -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public class UserCredentials { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs index 364d818c..2329376f 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs @@ -1,6 +1,6 @@ using System; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; internal sealed class VaultAuthTypeNotSupportedException : Exception { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs index 35eec34f..ce975b15 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs @@ -1,6 +1,6 @@ using System; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; internal sealed class VaultException : Exception { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs index f73cf1b3..f1a953f7 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Convey.Secrets.Vault; +namespace Dylan.Convey.Secrets.Vault; public class VaultOptions { From 1142be29cd8636362ac15ef70e02bba6506a535a Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Sun, 5 Jun 2022 21:58:19 +0200 Subject: [PATCH 04/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index 4cdd5be9..a47633d7 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -19,10 +19,10 @@ jobs: dotnet-version: 6.0.x - name: Restore dependencies run: dotnet restore - working-directory: src\Convey.Secrets.Vault\src\Convey.Secrets.Vault + working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: Build run: dotnet build --no-restore - working-directory: src\Convey.Secrets.Vault\src\Convey.Secrets.Vault + working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: Test run: dotnet test --no-build --verbosity normal - working-directory: src\Convey.Secrets.Vault\src\Convey.Secrets.Vault + working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault From 2cf6de6e3f98294963d7a2149915ac71815fdcb1 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Sun, 5 Jun 2022 22:03:00 +0200 Subject: [PATCH 05/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index a47633d7..0bdaceab 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -26,3 +26,9 @@ jobs: - name: Test run: dotnet test --no-build --verbosity normal working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault + - name: Pack + run: dotnet + working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault + - name: push + run: dotnet nuget push *.nupkg -k $NUGET_API_KEY -s https://api.nuget.org/v3/index.json + working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault From c6142a43c04a4ccaae5e27e8fc9701b65dde3961 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Sun, 5 Jun 2022 22:06:16 +0200 Subject: [PATCH 06/22] Delete main.yml --- .github/workflows/main.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 9f9ab67c..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: CI - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Setup .NET Core - uses: actions/setup-dotnet@v1 - with: - dotnet-version: 6.0.100 - - name: Build with dotnet - run: dotnet build --configuration Release From 3d600728a46b63d89b195d8edfd95ec4640c5564 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Sun, 5 Jun 2022 22:06:35 +0200 Subject: [PATCH 07/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index 0bdaceab..603dd57b 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -30,5 +30,5 @@ jobs: run: dotnet working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: push - run: dotnet nuget push *.nupkg -k $NUGET_API_KEY -s https://api.nuget.org/v3/index.json + run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault From 7b906cb34e277e02f1a801b0673fd72b7c20f994 Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Sun, 5 Jun 2022 22:09:33 +0200 Subject: [PATCH 08/22] Using convey --- src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs index d6fdc832..f6d507bc 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Convey; using Dylan.Convey.Secrets.Vault.Internals; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; From dcef4c06d23befefb16cac276038db0b6ad2093e Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Sun, 5 Jun 2022 22:15:00 +0200 Subject: [PATCH 09/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index 603dd57b..6233af6a 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -27,7 +27,7 @@ jobs: run: dotnet test --no-build --verbosity normal working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: Pack - run: dotnet + run: dotnet pack working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: push run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json From 0acb03f71b77ad8a727e8968c4c45d1f83692d02 Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Sun, 5 Jun 2022 22:15:07 +0200 Subject: [PATCH 10/22] build fix --- samples/Conveyor.Services.Orders/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/Conveyor.Services.Orders/Program.cs b/samples/Conveyor.Services.Orders/Program.cs index 8fba8712..a5bf20bd 100644 --- a/samples/Conveyor.Services.Orders/Program.cs +++ b/samples/Conveyor.Services.Orders/Program.cs @@ -87,6 +87,6 @@ public static IHostBuilder CreateHostBuilder(string[] args) .UseRabbitMq() .SubscribeEvent()) .UseLogging() - .UseVault(); + // .UseVault(webBuilder.); }); } \ No newline at end of file From e60e709e65fd139b22cc9ea4c21bc0f768dd5331 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Sun, 5 Jun 2022 22:18:21 +0200 Subject: [PATCH 11/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index 6233af6a..a8b6724b 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -30,5 +30,5 @@ jobs: run: dotnet pack working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: push - run: dotnet nuget push *.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json + run: dotnet nuget push **/*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault From 0beed23be93eadaaeadab7ad8b773d1e0b3fd091 Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Sun, 5 Jun 2022 23:53:43 +0200 Subject: [PATCH 12/22] Reload on interval --- samples/Conveyor.Services.Orders/Program.cs | 2 +- .../src/Convey.Secrets.Vault/Extensions.cs | 26 +++++------ .../Internals/KeyValueConfigurationManager.cs | 45 +++++++++++++++++++ .../Internals/VaultHostedService.cs | 8 +++- .../src/Convey.Secrets.Vault/VaultOptions.cs | 3 +- 5 files changed, 66 insertions(+), 18 deletions(-) create mode 100644 src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs diff --git a/samples/Conveyor.Services.Orders/Program.cs b/samples/Conveyor.Services.Orders/Program.cs index a5bf20bd..a20e64b4 100644 --- a/samples/Conveyor.Services.Orders/Program.cs +++ b/samples/Conveyor.Services.Orders/Program.cs @@ -86,7 +86,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) .UseSwaggerDocs() .UseRabbitMq() .SubscribeEvent()) - .UseLogging() + .UseLogging(); // .UseVault(webBuilder.); }); } \ No newline at end of file diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs index f6d507bc..d25b8c5d 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs @@ -83,7 +83,7 @@ private static IServiceCollection AddVault(this IServiceCollection services,ICon return services; } - private static void VerifyOptions(VaultOptions options) + private static void VerifyOptions(VaultOptions options, string keyValuePath = null) { if (options.Kv is null) { @@ -92,7 +92,7 @@ private static void VerifyOptions(VaultOptions options) options.Kv = new VaultOptions.KeyValueOptions { Enabled = options.Enabled, - Path = options.Key + Paths = new List { options.Key } }; } @@ -108,25 +108,21 @@ private static void VerifyOptions(VaultOptions options) { options.Kv.EngineVersion = 2; } + + if (!string.IsNullOrEmpty(keyValuePath) && options.Kv.AutoRenewal) + { + throw new VaultException($"Autorenewal is not possible when submitting a path through the builder."); + } } private static async Task AddVaultAsync(this IConfigurationBuilder builder, VaultOptions options, string keyValuePath) { - VerifyOptions(options); - var kvPath = string.IsNullOrWhiteSpace(keyValuePath) ? options.Kv?.Path : keyValuePath; + VerifyOptions(options, keyValuePath); var (client, _) = GetClientAndSettings(options); - if (!string.IsNullOrWhiteSpace(kvPath) && options.Kv.Enabled) - { - Console.WriteLine($"Loading settings from Vault: '{options.Url}', KV path: '{kvPath}'."); - var keyValueSecrets = new KeyValueSecrets(client, options); - var secret = await keyValueSecrets.GetAsync(kvPath); - var parser = new JsonParser(); - var json = JsonConvert.SerializeObject(secret); - var data = parser.Parse(json); - var source = new MemoryConfigurationSource {InitialData = data}; - builder.Add(source); - } + var manager = new KeyValueConfigurationManager(client, options); + await manager.UpdateConfiguration(keyValuePath); + builder.AddJsonFile(manager.FileName, false, true); if (options.Pki is not null && options.Pki.Enabled) { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs new file mode 100644 index 00000000..c9a60a86 --- /dev/null +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs @@ -0,0 +1,45 @@ +using Dylan.Convey.Secrets.Vault; +using Dylan.Convey.Secrets.Vault.Internals; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VaultSharp; + +namespace Dylan.Convey.Secrets.Vault.Internals +{ + internal class KeyValueConfigurationManager + { + public string FileName => "vault-kv.json"; + private readonly IVaultClient _client; + private readonly VaultOptions _options; + + public KeyValueConfigurationManager(IVaultClient client, VaultOptions options) + { + _client = client; + _options = options; + } + + public async Task UpdateConfiguration(string keyValuePath = null) + { + var kvPaths = string.IsNullOrWhiteSpace(keyValuePath) ? _options.Kv?.Paths : new List { keyValuePath }; + JObject kvConfiguration = new JObject(); + foreach (var kvPath in kvPaths) + { + if (!string.IsNullOrWhiteSpace(kvPath) && _options.Kv.Enabled) + { + Console.WriteLine($"Loading settings from Vault: '{_options.Url}', KV path: '{kvPath}'."); + var keyValueSecrets = new KeyValueSecrets(_client, _options); + var secret = await keyValueSecrets.GetAsync(kvPath); + kvConfiguration.Merge( JObject.FromObject(secret)); + + } + } + File.WriteAllText(FileName, kvConfiguration.ToString()); + } + } +} diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs index 38d00894..7da851f7 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs @@ -37,7 +37,8 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) return; } - if ((_options.Pki is null || !_options.Pki.Enabled) && + if ((_options.Kv is null || !_options.Kv.Enabled || !_options.Kv.AutoRenewal) && + (_options.Pki is null || !_options.Pki.Enabled) && (_options.Lease is null || _options.Lease.All(l => !l.Value.Enabled) || !_options.Lease.Any(l => l.Value.AutoRenewal))) { @@ -50,6 +51,11 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var now = DateTime.UtcNow; var nextIterationAt = now.AddSeconds(2 * _interval); + if (_options.Kv is not null && _options.Kv.Enabled && _options.Kv.AutoRenewal) + { + var manager = new KeyValueConfigurationManager(_client, _options); + await manager.UpdateConfiguration(); + } if (_options.Pki is not null && _options.Pki.Enabled) { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs index f1a953f7..055d6cfd 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs @@ -22,8 +22,9 @@ public class KeyValueOptions public bool Enabled { get; set; } public int EngineVersion { get; set; } = 2; public string MountPoint { get; set; } = "kv"; - public string Path { get; set; } + public List Paths { get; set; } public int? Version { get; set; } + public bool AutoRenewal { get; set; } } public class LeaseOptions From 61ae4200f9f27abb42662cb4ab5923cf33e0f5b7 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Mon, 6 Jun 2022 00:01:14 +0200 Subject: [PATCH 13/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index a8b6724b..4239a296 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -27,7 +27,7 @@ jobs: run: dotnet test --no-build --verbosity normal working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: Pack - run: dotnet pack + run: dotnet pack -p:PackageVersion=$VERSION working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: push run: dotnet nuget push **/*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json From a772d7cd3fd78edc604faa9e034c0402187cb9da Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Mon, 6 Jun 2022 00:05:04 +0200 Subject: [PATCH 14/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index 4239a296..79df5b7e 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -27,7 +27,7 @@ jobs: run: dotnet test --no-build --verbosity normal working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: Pack - run: dotnet pack -p:PackageVersion=$VERSION + run: dotnet pack -p:PackageVersion=$GITHUB_RUN_ID working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: push run: dotnet nuget push **/*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json From 087065779e20cabf53f097eb16c620f5841a77d6 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Mon, 6 Jun 2022 00:07:58 +0200 Subject: [PATCH 15/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index 79df5b7e..c5ece934 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -27,7 +27,7 @@ jobs: run: dotnet test --no-build --verbosity normal working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: Pack - run: dotnet pack -p:PackageVersion=$GITHUB_RUN_ID + run: dotnet pack -p:PackageVersion=$GITHUB_RUN_ID.0.0 working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: push run: dotnet nuget push **/*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json From 484e35b13f39abeab0de1a35e7154a920070fcee Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Mon, 6 Jun 2022 00:11:51 +0200 Subject: [PATCH 16/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index c5ece934..fbed0a94 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -17,6 +17,9 @@ jobs: uses: actions/setup-dotnet@v2 with: dotnet-version: 6.0.x + - name: Get current date + id: date + run: echo "::set-output name=date::$(date +'%Y-%m-%d')" - name: Restore dependencies run: dotnet restore working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault @@ -27,7 +30,7 @@ jobs: run: dotnet test --no-build --verbosity normal working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: Pack - run: dotnet pack -p:PackageVersion=$GITHUB_RUN_ID.0.0 + run: dotnet pack -p:PackageVersion=${{ steps.date.outputs.date }} working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault - name: push run: dotnet nuget push **/*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json From e54998fe953b815ae4ed4fb7bc2330197849eb39 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Mon, 6 Jun 2022 00:14:33 +0200 Subject: [PATCH 17/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index fbed0a94..caa50a58 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -20,6 +20,8 @@ jobs: - name: Get current date id: date run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + - name: Say current date + run: echo "${{ steps.date.outputs.date }}" - name: Restore dependencies run: dotnet restore working-directory: src/Convey.Secrets.Vault/src/Convey.Secrets.Vault From ce01e1074639291ebbf58468fb58c5f0d7d2fb59 Mon Sep 17 00:00:00 2001 From: DylanSnel Date: Mon, 6 Jun 2022 00:16:02 +0200 Subject: [PATCH 18/22] Update Dylan.Convey.Secrets.Vault.yml --- .github/workflows/Dylan.Convey.Secrets.Vault.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Dylan.Convey.Secrets.Vault.yml b/.github/workflows/Dylan.Convey.Secrets.Vault.yml index caa50a58..f62d272f 100644 --- a/.github/workflows/Dylan.Convey.Secrets.Vault.yml +++ b/.github/workflows/Dylan.Convey.Secrets.Vault.yml @@ -19,7 +19,7 @@ jobs: dotnet-version: 6.0.x - name: Get current date id: date - run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + run: echo "::set-output name=date::$(date +'%Y.%m.%d%H')" - name: Say current date run: echo "${{ steps.date.outputs.date }}" - name: Restore dependencies From fb5c76e62cab6ef8910c7d7c67fdf41a604fd0cd Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Mon, 6 Jun 2022 15:14:59 +0200 Subject: [PATCH 19/22] Fixed the automatic configuration renewal --- samples/Conveyor.Services.Orders/Program.cs | 2 +- .../Services/PricingServiceClient.cs | 2 +- .../Convey.Secrets.Vault.csproj | 2 +- .../src/Convey.Secrets.Vault/Extensions.cs | 30 ++++------ .../ICertificatesIssuer.cs | 2 +- .../ICertificatesService.cs | 2 +- .../Convey.Secrets.Vault/IKeyValueSecrets.cs | 2 +- .../src/Convey.Secrets.Vault/ILeaseService.cs | 2 +- .../Internals/CertificatesIssuer.cs | 2 +- .../Internals/CertificatesService.cs | 2 +- .../Internals/EmptyCertificatesIssuer.cs | 2 +- .../Internals/IVaultPeriodicalWatcher.cs | 10 ++++ .../Internals/KeyValueConfigurationManager.cs | 45 -------------- .../Internals/KeyValueSecrets.cs | 2 +- .../Internals/LeaseService.cs | 2 +- .../Internals/VaultHostedService.cs | 18 +++--- ...tKeyValueConfigurationBuilderExtensions.cs | 31 ++++++++++ .../VaultKeyValueConfigurationProvider.cs | 59 +++++++++++++++++++ .../VaultKeyValueConfigurationSource.cs | 24 ++++++++ .../Internals/VaultPeriodicalWatcher.cs | 44 ++++++++++++++ .../src/Convey.Secrets.Vault/JsonParser.cs | 2 +- .../src/Convey.Secrets.Vault/LeaseData.cs | 2 +- .../Convey.Secrets.Vault/UserCredentials.cs | 2 +- .../VaultAuthTypeNotSupportedException.cs | 2 +- .../Convey.Secrets.Vault/VaultException.cs | 2 +- .../src/Convey.Secrets.Vault/VaultOptions.cs | 2 +- 26 files changed, 207 insertions(+), 90 deletions(-) create mode 100644 src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/IVaultPeriodicalWatcher.cs delete mode 100644 src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs create mode 100644 src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationBuilderExtensions.cs create mode 100644 src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs create mode 100644 src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationSource.cs create mode 100644 src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultPeriodicalWatcher.cs diff --git a/samples/Conveyor.Services.Orders/Program.cs b/samples/Conveyor.Services.Orders/Program.cs index a20e64b4..f50c541c 100644 --- a/samples/Conveyor.Services.Orders/Program.cs +++ b/samples/Conveyor.Services.Orders/Program.cs @@ -16,7 +16,7 @@ using Convey.Metrics.Prometheus; using Convey.Persistence.MongoDB; using Convey.Persistence.Redis; -using Dylan.Convey.Secrets.Vault; +using Convey.Secrets.Vault; using Convey.Tracing.Jaeger; using Convey.Tracing.Jaeger.RabbitMQ; using Convey.WebApi; diff --git a/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs b/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs index d16c8c10..7c80d919 100644 --- a/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs +++ b/samples/Conveyor.Services.Orders/Services/PricingServiceClient.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; using Convey.HTTP; -using Dylan.Convey.Secrets.Vault; +using Convey.Secrets.Vault; using Convey.WebApi.Security; using Conveyor.Services.Orders.DTO; diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj index f479acde..13aae97e 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj @@ -1,7 +1,7 @@  - Dylan.Convey.Secrets.Vault + Convey.Secrets.Vault Dylan Snel / DevMentors.io net6.0 Latest diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs index d25b8c5d..7669cc4f 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Extensions.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Threading.Tasks; using Convey; -using Dylan.Convey.Secrets.Vault.Internals; +using Convey.Secrets.Vault.Internals; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Memory; @@ -16,7 +16,7 @@ using VaultSharp.V1.AuthMethods.UserPass; using VaultSharp.V1.SecretsEngines; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public static class Extensions { @@ -24,8 +24,7 @@ public static class Extensions private static readonly ILeaseService LeaseService = new LeaseService(); private static readonly ICertificatesService CertificatesService = new CertificatesService(); - public static IHostBuilder UseVault(this IHostBuilder builder,IConfiguration configuration, string keyValuePath = null, - string sectionName = SectionName) + public static IHostBuilder UseVault(this IHostBuilder builder,IConfiguration configuration, string sectionName = SectionName) => builder.ConfigureServices(services => services.AddVault(configuration, sectionName)) .ConfigureAppConfiguration((ctx, cfg) => { @@ -35,11 +34,10 @@ public static IHostBuilder UseVault(this IHostBuilder builder,IConfiguration con return; } - cfg.AddVaultAsync(options, keyValuePath).GetAwaiter().GetResult(); + cfg.AddVaultAsync(options).GetAwaiter().GetResult(); }); - public static IWebHostBuilder UseVault(this IWebHostBuilder builder,IConfiguration configuration, string keyValuePath = null, - string sectionName = SectionName) + public static IWebHostBuilder UseVault(this IWebHostBuilder builder,IConfiguration configuration, string sectionName = SectionName) => builder.ConfigureServices(services => services.AddVault(configuration, sectionName)) .ConfigureAppConfiguration((ctx, cfg) => { @@ -49,7 +47,7 @@ public static IWebHostBuilder UseVault(this IWebHostBuilder builder,IConfigurati return; } - cfg.AddVaultAsync(options, keyValuePath).GetAwaiter().GetResult(); + cfg.AddVaultAsync(options).GetAwaiter().GetResult(); }); private static IServiceCollection AddVault(this IServiceCollection services,IConfiguration configuration, string sectionName) @@ -83,7 +81,7 @@ private static IServiceCollection AddVault(this IServiceCollection services,ICon return services; } - private static void VerifyOptions(VaultOptions options, string keyValuePath = null) + private static void VerifyOptions(VaultOptions options) { if (options.Kv is null) { @@ -108,21 +106,13 @@ private static void VerifyOptions(VaultOptions options, string keyValuePath = nu { options.Kv.EngineVersion = 2; } - - if (!string.IsNullOrEmpty(keyValuePath) && options.Kv.AutoRenewal) - { - throw new VaultException($"Autorenewal is not possible when submitting a path through the builder."); - } } - private static async Task AddVaultAsync(this IConfigurationBuilder builder, VaultOptions options, - string keyValuePath) + private static async Task AddVaultAsync(this IConfigurationBuilder builder, VaultOptions options) { - VerifyOptions(options, keyValuePath); + VerifyOptions(options); var (client, _) = GetClientAndSettings(options); - var manager = new KeyValueConfigurationManager(client, options); - await manager.UpdateConfiguration(keyValuePath); - builder.AddJsonFile(manager.FileName, false, true); + builder.AddVaultKeyValueConfiguration(options, client); if (options.Pki is not null && options.Pki.Enabled) { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs index 2e2b92bf..578d1159 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesIssuer.cs @@ -1,7 +1,7 @@ using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public interface ICertificatesIssuer { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs index bb41905f..6abd1865 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ICertificatesService.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public interface ICertificatesService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs index af079748..a35cbeb0 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/IKeyValueSecrets.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public interface IKeyValueSecrets { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs index 882bb80d..8cfd32d7 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/ILeaseService.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public interface ILeaseService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs index a1bbf81b..15e81ce1 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesIssuer.cs @@ -7,7 +7,7 @@ using VaultSharp.V1.SecretsEngines; using VaultSharp.V1.SecretsEngines.PKI; -namespace Dylan.Convey.Secrets.Vault.Internals; +namespace Convey.Secrets.Vault.Internals; internal sealed class CertificatesIssuer : ICertificatesIssuer { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs index e14b94d3..56a001a2 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/CertificatesService.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; -namespace Dylan.Convey.Secrets.Vault.Internals; +namespace Convey.Secrets.Vault.Internals; internal sealed class CertificatesService : ICertificatesService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs index 496ffda0..98529e03 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/EmptyCertificatesIssuer.cs @@ -1,7 +1,7 @@ using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; -namespace Dylan.Convey.Secrets.Vault.Internals; +namespace Convey.Secrets.Vault.Internals; public class EmptyCertificatesIssuer : ICertificatesIssuer { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/IVaultPeriodicalWatcher.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/IVaultPeriodicalWatcher.cs new file mode 100644 index 00000000..e9e47f75 --- /dev/null +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/IVaultPeriodicalWatcher.cs @@ -0,0 +1,10 @@ +using Microsoft.Extensions.Primitives; + +namespace Convey.Secrets.Vault.Internals +{ + internal interface IVaultPeriodicalWatcher + { + void Dispose(); + IChangeToken Watch(); + } +} \ No newline at end of file diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs deleted file mode 100644 index c9a60a86..00000000 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueConfigurationManager.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Dylan.Convey.Secrets.Vault; -using Dylan.Convey.Secrets.Vault.Internals; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using VaultSharp; - -namespace Dylan.Convey.Secrets.Vault.Internals -{ - internal class KeyValueConfigurationManager - { - public string FileName => "vault-kv.json"; - private readonly IVaultClient _client; - private readonly VaultOptions _options; - - public KeyValueConfigurationManager(IVaultClient client, VaultOptions options) - { - _client = client; - _options = options; - } - - public async Task UpdateConfiguration(string keyValuePath = null) - { - var kvPaths = string.IsNullOrWhiteSpace(keyValuePath) ? _options.Kv?.Paths : new List { keyValuePath }; - JObject kvConfiguration = new JObject(); - foreach (var kvPath in kvPaths) - { - if (!string.IsNullOrWhiteSpace(kvPath) && _options.Kv.Enabled) - { - Console.WriteLine($"Loading settings from Vault: '{_options.Url}', KV path: '{kvPath}'."); - var keyValueSecrets = new KeyValueSecrets(_client, _options); - var secret = await keyValueSecrets.GetAsync(kvPath); - kvConfiguration.Merge( JObject.FromObject(secret)); - - } - } - File.WriteAllText(FileName, kvConfiguration.ToString()); - } - } -} diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs index d4b624c7..6f620919 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/KeyValueSecrets.cs @@ -4,7 +4,7 @@ using System.Threading.Tasks; using VaultSharp; -namespace Dylan.Convey.Secrets.Vault.Internals; +namespace Convey.Secrets.Vault.Internals; internal sealed class KeyValueSecrets : IKeyValueSecrets { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs index a134df40..52f1bac0 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/LeaseService.cs @@ -1,7 +1,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; -namespace Dylan.Convey.Secrets.Vault.Internals; +namespace Convey.Secrets.Vault.Internals; internal sealed class LeaseService : ILeaseService { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs index 7da851f7..43945c6a 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultHostedService.cs @@ -2,11 +2,12 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using VaultSharp; -namespace Dylan.Convey.Secrets.Vault.Internals; +namespace Convey.Secrets.Vault.Internals; internal sealed class VaultHostedService : BackgroundService { @@ -17,9 +18,10 @@ internal sealed class VaultHostedService : BackgroundService private readonly VaultOptions _options; private readonly ILogger _logger; private readonly int _interval; + private readonly IConfiguration _configuration; public VaultHostedService(IVaultClient client, ILeaseService leaseService, ICertificatesIssuer certificatesIssuer, - ICertificatesService certificatesService, VaultOptions options, ILogger logger) + ICertificatesService certificatesService, VaultOptions options, ILogger logger, IConfiguration configuration) { _client = client; _leaseService = leaseService; @@ -28,6 +30,7 @@ public VaultHostedService(IVaultClient client, ILeaseService leaseService, ICert _options = options; _logger = logger; _interval = _options.RenewalsInterval <= 0 ? 10 : _options.RenewalsInterval; + _configuration = configuration; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) @@ -51,11 +54,12 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) { var now = DateTime.UtcNow; var nextIterationAt = now.AddSeconds(2 * _interval); - if (_options.Kv is not null && _options.Kv.Enabled && _options.Kv.AutoRenewal) - { - var manager = new KeyValueConfigurationManager(_client, _options); - await manager.UpdateConfiguration(); - } + //if (_options.Kv is not null && _options.Kv.Enabled && _options.Kv.AutoRenewal) + //{ + // _configuration.Pro + // //var manager = new VaultKeyValueConfigurationProvider(_client, _options); + // //await manager.UpdateConfiguration(); + //} if (_options.Pki is not null && _options.Pki.Enabled) { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationBuilderExtensions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationBuilderExtensions.cs new file mode 100644 index 00000000..29505d78 --- /dev/null +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationBuilderExtensions.cs @@ -0,0 +1,31 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VaultSharp; + +namespace Convey.Secrets.Vault.Internals +{ + internal static class VaultKeyValueConfigurationBuilderExtensions + { + public static IConfigurationBuilder AddVaultKeyValueConfiguration(this IConfigurationBuilder builder, + VaultOptions options, + IVaultClient client) + { + IVaultPeriodicalWatcher watcher = null; + if (options.Kv.AutoRenewal) + { + watcher = new VaultPeriodicalWatcher(TimeSpan.FromSeconds(options.RenewalsInterval)); + } + + return builder.Add(new VaultKeyValueConfigurationSource() + { + Options = options, + Client = client, + PeriodicalWatcher = watcher + }); + } + } +} diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs new file mode 100644 index 00000000..d9cf8797 --- /dev/null +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs @@ -0,0 +1,59 @@ + +using Convey.Secrets.Vault; +using Convey.Secrets.Vault.Internals; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Primitives; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VaultSharp; + +namespace Convey.Secrets.Vault.Internals +{ + internal class VaultKeyValueConfigurationProvider: ConfigurationProvider + { + private readonly VaultKeyValueConfigurationSource _source; + private readonly IVaultClient _client; + private readonly VaultOptions _options; + private readonly IDisposable _changeTokenRegistration; + + public VaultKeyValueConfigurationProvider(VaultKeyValueConfigurationSource source) + { + _source = source; + _client = source.Client; + _options = source.Options; + + if (_source.PeriodicalWatcher != null) + { + _changeTokenRegistration = ChangeToken.OnChange( + () => _source.PeriodicalWatcher.Watch(), + Load + ); + } + } + + + public override void Load() + { + var kvPaths = _options.Kv?.Paths; + JObject kvConfiguration = new JObject(); + foreach (var kvPath in kvPaths) + { + if (!string.IsNullOrWhiteSpace(kvPath) && _options.Kv.Enabled) + { + Console.WriteLine($"Loading settings from Vault: '{_options.Url}', KV path: '{kvPath}'."); + var keyValueSecrets = new KeyValueSecrets(_client, _options); + var secret = keyValueSecrets.GetAsync(kvPath).GetAwaiter().GetResult(); + kvConfiguration.Merge(JObject.FromObject(secret)); + + } + } + Data = new JsonParser().Parse(kvConfiguration.ToString()); + } + } +} diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationSource.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationSource.cs new file mode 100644 index 00000000..6201ac53 --- /dev/null +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationSource.cs @@ -0,0 +1,24 @@ +using Convey.Secrets.Vault; +using Convey.Secrets.Vault.Internals; +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using VaultSharp; + +namespace Convey.Secrets.Vault.Internals +{ + internal class VaultKeyValueConfigurationSource : IConfigurationSource + { + public VaultOptions Options { get; set; } + public IVaultClient Client { get; set; } + public IVaultPeriodicalWatcher PeriodicalWatcher { get; set; } + public IConfigurationProvider Build(IConfigurationBuilder builder) + { + + return new VaultKeyValueConfigurationProvider(this); + } + } +} diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultPeriodicalWatcher.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultPeriodicalWatcher.cs new file mode 100644 index 00000000..985b2c86 --- /dev/null +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultPeriodicalWatcher.cs @@ -0,0 +1,44 @@ +using Microsoft.Extensions.Primitives; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace Convey.Secrets.Vault.Internals +{ + internal class VaultPeriodicalWatcher : IDisposable, IVaultPeriodicalWatcher + { + + private readonly TimeSpan _refreshInterval; + private IChangeToken _changeToken; + private readonly Timer _timer; + private CancellationTokenSource _cancellationTokenSource; + + public VaultPeriodicalWatcher(TimeSpan refreshInterval) + { + _refreshInterval = refreshInterval; + _timer = new Timer(Change, null, TimeSpan.Zero, _refreshInterval); + } + + private void Change(object state) + { + _cancellationTokenSource?.Cancel(); + } + + public IChangeToken Watch() + { + _cancellationTokenSource = new CancellationTokenSource(); + _changeToken = new CancellationChangeToken(_cancellationTokenSource.Token); + + return _changeToken; + } + + public void Dispose() + { + _timer?.Dispose(); + _cancellationTokenSource?.Dispose(); + } + } +} diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs index 6bf61de2..9accc34b 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/JsonParser.cs @@ -3,7 +3,7 @@ using System.Text.Json; using Microsoft.Extensions.Configuration; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; //Credits goes to .NET Foundation Team. //JSON parser is based on JsonConfigurationFileParser found in Microsoft.Extensions.Configuration.Json library. diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs index 2f0b2215..eae97d06 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/LeaseData.cs @@ -1,6 +1,6 @@ using System; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public class LeaseData { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs index 2b45dd01..8158fabd 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/UserCredentials.cs @@ -1,4 +1,4 @@ -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public class UserCredentials { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs index 2329376f..364d818c 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultAuthTypeNotSupportedException.cs @@ -1,6 +1,6 @@ using System; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; internal sealed class VaultAuthTypeNotSupportedException : Exception { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs index ce975b15..35eec34f 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultException.cs @@ -1,6 +1,6 @@ using System; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; internal sealed class VaultException : Exception { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs index 055d6cfd..85c74fb4 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Dylan.Convey.Secrets.Vault; +namespace Convey.Secrets.Vault; public class VaultOptions { From 21411923ba0edfb66c1ab97400c2a99562ca3b71 Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Mon, 6 Jun 2022 15:38:10 +0200 Subject: [PATCH 20/22] Revert custom project settings and allow Services.Order to build again. --- samples/Conveyor.Services.Orders/Program.cs | 11 +++++++++-- .../Convey.Secrets.Vault/Convey.Secrets.Vault.csproj | 8 ++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/samples/Conveyor.Services.Orders/Program.cs b/samples/Conveyor.Services.Orders/Program.cs index f50c541c..74f1f046 100644 --- a/samples/Conveyor.Services.Orders/Program.cs +++ b/samples/Conveyor.Services.Orders/Program.cs @@ -31,6 +31,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; namespace Conveyor.Services.Orders; @@ -43,6 +44,12 @@ public static Task Main(string[] args) public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => { + var configuration = new ConfigurationBuilder() + .AddEnvironmentVariables() + .AddCommandLine(args) + .AddJsonFile("appsettings.json") + .Build(); + webBuilder.ConfigureServices(services => services .AddConvey() .AddErrorHandler() @@ -86,7 +93,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) .UseSwaggerDocs() .UseRabbitMq() .SubscribeEvent()) - .UseLogging(); - // .UseVault(webBuilder.); + .UseLogging() + .UseVault(configuration); }); } \ No newline at end of file diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj index 13aae97e..93977f6f 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj @@ -2,12 +2,12 @@ Convey.Secrets.Vault - Dylan Snel / DevMentors.io + DevMentors.io net6.0 Latest - Dylan.Convey.Secrets.Vault - Dylan.Convey.Secrets.Vault - Dylan.Convey.Secrets.Vault + Convey.Secrets.Vault + onvey.Secrets.Vault + Convey.Secrets.Vault From 4760e184419e6d85640307525f5591c31cbf31d1 Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Mon, 6 Jun 2022 15:40:17 +0200 Subject: [PATCH 21/22] Revert to original use of convey --- .../src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj index 93977f6f..3f06477f 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Convey.Secrets.Vault.csproj @@ -6,14 +6,16 @@ net6.0 Latest Convey.Secrets.Vault - onvey.Secrets.Vault + Convey.Secrets.Vault Convey.Secrets.Vault + + + - From d3477ec55e15f8d2b087f74743908c603181d0c9 Mon Sep 17 00:00:00 2001 From: JustBeinDylan Date: Wed, 15 Jun 2022 19:30:32 +0200 Subject: [PATCH 22/22] Allow the path configuration to be used --- .../Internals/VaultKeyValueConfigurationProvider.cs | 4 ++++ .../src/Convey.Secrets.Vault/VaultOptions.cs | 1 + 2 files changed, 5 insertions(+) diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs index d9cf8797..9990e015 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/Internals/VaultKeyValueConfigurationProvider.cs @@ -41,6 +41,10 @@ public VaultKeyValueConfigurationProvider(VaultKeyValueConfigurationSource sourc public override void Load() { var kvPaths = _options.Kv?.Paths; + if(kvPaths is null || kvPaths.Count() == 0) + { + kvPaths.Add(_options.Kv.Path); + } JObject kvConfiguration = new JObject(); foreach (var kvPath in kvPaths) { diff --git a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs index 85c74fb4..082ebade 100644 --- a/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs +++ b/src/Convey.Secrets.Vault/src/Convey.Secrets.Vault/VaultOptions.cs @@ -22,6 +22,7 @@ public class KeyValueOptions public bool Enabled { get; set; } public int EngineVersion { get; set; } = 2; public string MountPoint { get; set; } = "kv"; + public string Path { get; set; } public List Paths { get; set; } public int? Version { get; set; } public bool AutoRenewal { get; set; }