Skip to content

Commit 1e75267

Browse files
Merge pull request #43 from TransactionProcessing/task/#42_eventstoresecurity
Support Secure/Insecure eventstore
2 parents ae10b8a + 8f79bde commit 1e75267

9 files changed

Lines changed: 67 additions & 38 deletions

File tree

CallbackHandler.BusinessLogic.Tests/CallbackHandler.BusinessLogic.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
@@ -9,7 +9,7 @@
99
<ItemGroup>
1010
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
1111
<PackageReference Include="Moq" Version="4.18.1" />
12-
<PackageReference Include="Shared.EventStore" Version="1.3.1" />
12+
<PackageReference Include="Shared.EventStore" Version="1.3.7" />
1313
<PackageReference Include="Shouldly" Version="4.0.3" />
1414
<PackageReference Include="xunit" Version="2.4.1" />
1515
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">

CallbackHandler.BusinessLogic/CallbackHandler.BusinessLogic.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
55
</PropertyGroup>
66
<ItemGroup>
77
<PackageReference Include="MediatR" Version="10.0.1" />
8-
<PackageReference Include="Shared" Version="1.3.1" />
9-
<PackageReference Include="Shared.DomainDrivenDesign" Version="1.3.1" />
10-
<PackageReference Include="Shared.EventStore" Version="1.3.1" />
8+
<PackageReference Include="Shared" Version="1.3.7" />
9+
<PackageReference Include="Shared.DomainDrivenDesign" Version="1.3.7" />
10+
<PackageReference Include="Shared.EventStore" Version="1.3.7" />
1111
</ItemGroup>
1212
<ItemGroup>
1313
<ProjectReference Include="..\CallbackHandler.CallbackMessageAggregate\CallbackHandler.CallbackMessageAggregate.csproj" />

CallbackHandler.CallbackMessage.DomainEvents/CallbackHandler.CallbackMessage.DomainEvents.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<TargetFramework>net6.0</TargetFramework>
55
</PropertyGroup>
66
<ItemGroup>
7-
<PackageReference Include="Shared" Version="1.3.1" />
8-
<PackageReference Include="Shared.DomainDrivenDesign" Version="1.3.1" />
7+
<PackageReference Include="Shared" Version="1.3.7" />
8+
<PackageReference Include="Shared.DomainDrivenDesign" Version="1.3.7" />
99
</ItemGroup>
1010
</Project>

CallbackHandler.CallbackMessageAggregate.Tests/CallbackHandler.CallbackMessageAggregate.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
@@ -8,7 +8,7 @@
88

99
<ItemGroup>
1010
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.2.0" />
11-
<PackageReference Include="Shared.EventStore" Version="1.3.1" />
11+
<PackageReference Include="Shared.EventStore" Version="1.3.7" />
1212
<PackageReference Include="Shouldly" Version="4.0.3" />
1313
<PackageReference Include="xunit" Version="2.4.1" />
1414
<PackageReference Include="xunit.extensibility.core" Version="2.4.1" />

CallbackHandler.CallbackMessageAggregate/CallbackHandler.CallbackMessageAggregate.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
<ProjectReference Include="..\CallbackHandlers.Models\CallbackHandlers.Models.csproj" />
1010
</ItemGroup>
1111
<ItemGroup>
12-
<PackageReference Include="Shared" Version="1.3.1" />
13-
<PackageReference Include="Shared.DomainDrivenDesign" Version="1.3.1" />
14-
<PackageReference Include="Shared.EventStore" Version="1.3.1" />
12+
<PackageReference Include="Grpc.Net.Client" Version="2.47.0" />
13+
<PackageReference Include="Shared" Version="1.3.7" />
14+
<PackageReference Include="Shared.DomainDrivenDesign" Version="1.3.7" />
15+
<PackageReference Include="Shared.EventStore" Version="1.3.7" />
1516
</ItemGroup>
1617
</Project>

CallbackHandler/Bootstrapper/MiddlewareRegistry.cs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22
{
33
using System;
44
using System.IO;
5+
using System.Net.Http;
6+
using System.Net.Security;
57
using System.Reflection;
68
using BusinessLogic.RequestHandler;
79
using BusinessLogic.Requests;
810
using CallbackMessageAggregate;
911
using Common;
1012
using Lamar;
1113
using MediatR;
14+
using Microsoft.Extensions.Configuration;
1215
using Microsoft.Extensions.DependencyInjection;
1316
using Microsoft.Extensions.Diagnostics.HealthChecks;
1417
using Microsoft.OpenApi.Models;
@@ -96,8 +99,32 @@ public RepositoryRegistry()
9699
{
97100
this.AddTransient<IEventStoreContext, EventStoreContext>();
98101
this.AddSingleton<IAggregateRepository<CallbackMessageAggregate, DomainEvent>, AggregateRepository<CallbackMessageAggregate, DomainEvent>>();
99-
this.AddEventStoreClient(Startup.ConfigureEventStoreSettings);
102+
103+
Boolean insecureES = Startup.Configuration.GetValue<Boolean>("EventStoreSettings:Insecure");
104+
105+
Func<SocketsHttpHandler> CreateHttpMessageHandler = () => new SocketsHttpHandler
106+
{
107+
SslOptions = new SslClientAuthenticationOptions
108+
{
109+
RemoteCertificateValidationCallback = (sender,
110+
certificate,
111+
chain,
112+
errors) => {
113+
return true;
114+
}
115+
}
116+
};
117+
100118
this.AddEventStoreProjectionManagerClient(Startup.ConfigureEventStoreSettings);
119+
120+
if (insecureES)
121+
{
122+
this.AddInSecureEventStoreClient(Startup.EventStoreClientSettings.ConnectivitySettings.Address, CreateHttpMessageHandler);
123+
}
124+
else
125+
{
126+
this.AddEventStoreClient(Startup.EventStoreClientSettings.ConnectivitySettings.Address, CreateHttpMessageHandler);
127+
}
101128
}
102129
}
103130
}

CallbackHandler/CallbackHandler.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk.Web">
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
@@ -12,7 +12,7 @@
1212
<PackageReference Include="AspNetCore.HealthChecks.UI.Client" Version="6.0.4" />
1313
<PackageReference Include="MediatR" Version="10.0.1" />
1414
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.15.1" />
15-
<PackageReference Include="Shared" Version="1.3.1" />
15+
<PackageReference Include="Shared" Version="1.3.7" />
1616
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.3.1" />
1717
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.3.1" />
1818
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.3" />
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace CallbackHandler.Common;
2+
3+
using System;
4+
using System.Net.Http;
5+
using EventStore.Client;
6+
using Microsoft.Extensions.DependencyInjection;
7+
8+
public static class Extensions
9+
{
10+
public static IServiceCollection AddInSecureEventStoreClient(this IServiceCollection services,
11+
Uri address,
12+
Func<HttpMessageHandler>? createHttpMessageHandler = null) {
13+
return services.AddEventStoreClient((Action<EventStoreClientSettings>)(options => {
14+
options.ConnectivitySettings.Address = address;
15+
options.ConnectivitySettings.Insecure = true;
16+
options.CreateHttpMessageHandler = createHttpMessageHandler;
17+
}));
18+
}
19+
}

CallbackHandler/Startup.cs

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -72,28 +72,12 @@ public Startup(IWebHostEnvironment webHostEnvironment)
7272

7373
internal static EventStoreClientSettings EventStoreClientSettings;
7474

75-
internal static void ConfigureEventStoreSettings(EventStoreClientSettings settings = null)
75+
internal static void ConfigureEventStoreSettings(EventStoreClientSettings settings)
7676
{
77-
if (settings == null)
78-
{
79-
settings = new EventStoreClientSettings();
80-
}
81-
82-
settings.CreateHttpMessageHandler = () => new SocketsHttpHandler
83-
{
84-
SslOptions =
85-
{
86-
RemoteCertificateValidationCallback = (sender,
87-
certificate,
88-
chain,
89-
errors) => true,
90-
}
91-
};
92-
settings.ConnectionName = Startup.Configuration.GetValue<String>("EventStoreSettings:ConnectionName");
9377
settings.ConnectivitySettings = EventStoreClientConnectivitySettings.Default;
9478
settings.ConnectivitySettings.Address = new Uri(Startup.Configuration.GetValue<String>("EventStoreSettings:ConnectionString"));
9579
settings.ConnectivitySettings.Insecure = Startup.Configuration.GetValue<Boolean>("EventStoreSettings:Insecure");
96-
80+
9781
settings.DefaultCredentials = new UserCredentials(Startup.Configuration.GetValue<String>("EventStoreSettings:UserName"),
9882
Startup.Configuration.GetValue<String>("EventStoreSettings:Password"));
9983
Startup.EventStoreClientSettings = settings;
@@ -105,12 +89,10 @@ public void ConfigureContainer(ServiceRegistry services)
10589
{
10690
ConfigurationReader.Initialise(Startup.Configuration);
10791

108-
Startup.ConfigureEventStoreSettings();
109-
110-
services.IncludeRegistry<MiddlewareRegistry>();
11192
services.IncludeRegistry<MediatorRegistry>();
11293
services.IncludeRegistry<RepositoryRegistry>();
113-
94+
services.IncludeRegistry<MiddlewareRegistry>();
95+
11496
// TODO: Create one domain event from each assembly here
11597
TypeProvider.LoadDomainEventsTypeDynamically();
11698

0 commit comments

Comments
 (0)