diff --git a/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs b/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs index ea5e628e..7c08512e 100644 --- a/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs +++ b/src/WireMock.Net.Abstractions/Admin/Settings/SettingsModel.cs @@ -96,4 +96,16 @@ public class SettingsModel /// Default value = "All". /// public QueryParameterMultipleValueSupport? QueryParameterMultipleValueSupport { get; set; } + +#if NETSTANDARD1_3_OR_GREATER || NET461 + /// + /// Server client certificate mode + /// + public ClientCertificateMode ClientCertificateMode { get; set; } + + /// + /// Whether to accept any client certificate + /// + public bool AcceptAnyClientCertificate { get; set; } +#endif } \ No newline at end of file diff --git a/src/WireMock.Net.Abstractions/IRequestMessage.cs b/src/WireMock.Net.Abstractions/IRequestMessage.cs index f747f7c5..87905071 100644 --- a/src/WireMock.Net.Abstractions/IRequestMessage.cs +++ b/src/WireMock.Net.Abstractions/IRequestMessage.cs @@ -1,5 +1,8 @@ using System; using System.Collections.Generic; +#if NETSTANDARD1_3_OR_GREATER || NET461 +using System.Security.Cryptography.X509Certificates; +#endif using WireMock.Types; using WireMock.Util; @@ -134,4 +137,11 @@ public interface IRequestMessage /// Gets the origin /// string Origin { get; } + +#if NETSTANDARD1_3_OR_GREATER || NET461 + /// + /// Gets the connection's client certificate + /// + X509Certificate2? ClientCertificate { get; } +#endif } \ No newline at end of file diff --git a/src/WireMock.Net.Abstractions/Types/ClientCertificateMode.cs b/src/WireMock.Net.Abstractions/Types/ClientCertificateMode.cs new file mode 100644 index 00000000..26e772db --- /dev/null +++ b/src/WireMock.Net.Abstractions/Types/ClientCertificateMode.cs @@ -0,0 +1,31 @@ +namespace WireMock.Types; + +#if NETSTANDARD1_3_OR_GREATER || NET461 +/// +/// Describes the client certificate requirements for a HTTPS connection. +/// This enum is the same as https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.kestrel.https.clientcertificatemode +/// +public enum ClientCertificateMode +{ + /// + /// A client certificate is not required and will not be requested from clients. + /// + NoCertificate, + + /// + /// A client certificate will be requested; however, authentication will not fail if a certificate is not provided by the client. + /// + AllowCertificate, + + /// + /// A client certificate will be requested, and the client must provide a valid certificate for authentication to succeed. + /// + RequireCertificate, + + /// + /// A client certificate is not required and will not be requested from clients at the start of the connection. + /// It may be requested by the application later. + /// + DelayCertificate, +} +#endif \ No newline at end of file diff --git a/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj b/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj index 38515aff..59af0817 100644 --- a/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj +++ b/src/WireMock.Net.Abstractions/WireMock.Net.Abstractions.csproj @@ -4,7 +4,7 @@ Commonly used models, enumerations and types. WireMock.Net.Abstractions Stef Heyenrath - net45;net451;netstandard1.0;netstandard2.0;netstandard2.1 + net45;net451;net461;netstandard1.0;netstandard1.3;netstandard2.0;netstandard2.1 true $(NoWarn);1591;8603 WireMock.Net.Abstractions @@ -41,6 +41,16 @@ + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + +