#70 - Refactor client cert feature interface.
This commit is contained in:
parent
2ae3a24a16
commit
b6f4207b3b
|
|
@ -8,9 +8,17 @@ using Microsoft.Framework.Runtime;
|
||||||
namespace Microsoft.AspNet.HttpFeature
|
namespace Microsoft.AspNet.HttpFeature
|
||||||
{
|
{
|
||||||
[AssemblyNeutral]
|
[AssemblyNeutral]
|
||||||
public interface IHttpTransportLayerSecurityFeature
|
public interface IHttpClientCertificateFeature
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Synchronously retrieves the client certificate, if any.
|
||||||
|
/// </summary>
|
||||||
X509Certificate ClientCertificate { get; set; }
|
X509Certificate ClientCertificate { get; set; }
|
||||||
Task LoadAsync();
|
|
||||||
|
/// <summary>
|
||||||
|
/// Asynchronously retrieves the client certificate, if any.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<X509Certificate> GetClientCertificateAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
<Compile Include="IHttpRequestLifetimeFeature.cs" />
|
<Compile Include="IHttpRequestLifetimeFeature.cs" />
|
||||||
<Compile Include="IHttpResponseFeature.cs" />
|
<Compile Include="IHttpResponseFeature.cs" />
|
||||||
<Compile Include="IHttpSendFileFeature.cs" />
|
<Compile Include="IHttpSendFileFeature.cs" />
|
||||||
<Compile Include="IHttpTransportLayerSecurityFeature.cs" />
|
<Compile Include="IHttpClientCertificateFeature.cs" />
|
||||||
<Compile Include="IHttpWebSocketFeature.cs" />
|
<Compile Include="IHttpWebSocketFeature.cs" />
|
||||||
<Compile Include="IWebSocketAcceptContext.cs" />
|
<Compile Include="IWebSocketAcceptContext.cs" />
|
||||||
<Compile Include="Security\IAuthenticateContext.cs" />
|
<Compile Include="Security\IAuthenticateContext.cs" />
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,9 @@ namespace Microsoft.AspNet.Owin
|
||||||
|
|
||||||
if (context.Request.IsSecure)
|
if (context.Request.IsSecure)
|
||||||
{
|
{
|
||||||
_entries.Add(OwinConstants.CommonKeys.ClientCertificate, new FeatureMap<IHttpTransportLayerSecurityFeature>(feature => feature.ClientCertificate,
|
_entries.Add(OwinConstants.CommonKeys.ClientCertificate, new FeatureMap<IHttpClientCertificateFeature>(feature => feature.ClientCertificate,
|
||||||
(feature, value) => feature.ClientCertificate = (X509Certificate)value));
|
(feature, value) => feature.ClientCertificate = (X509Certificate)value));
|
||||||
_entries.Add(OwinConstants.CommonKeys.LoadClientCertAsync, new FeatureMap<IHttpTransportLayerSecurityFeature>(feature => new Func<Task>(feature.LoadAsync)));
|
_entries.Add(OwinConstants.CommonKeys.LoadClientCertAsync, new FeatureMap<IHttpClientCertificateFeature>(feature => new Func<Task>(feature.GetClientCertificateAsync)));
|
||||||
}
|
}
|
||||||
|
|
||||||
_context.Items[typeof(HttpContext).FullName] = _context; // Store for lookup when we transition back out of OWIN
|
_context.Items[typeof(HttpContext).FullName] = _context; // Store for lookup when we transition back out of OWIN
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Owin
|
||||||
IHttpResponseFeature,
|
IHttpResponseFeature,
|
||||||
IHttpConnectionFeature,
|
IHttpConnectionFeature,
|
||||||
IHttpSendFileFeature,
|
IHttpSendFileFeature,
|
||||||
IHttpTransportLayerSecurityFeature,
|
IHttpClientCertificateFeature,
|
||||||
IOwinEnvironmentFeature
|
IOwinEnvironmentFeature
|
||||||
{
|
{
|
||||||
public IDictionary<string, object> Environment { get; set; }
|
public IDictionary<string, object> Environment { get; set; }
|
||||||
|
|
@ -197,13 +197,13 @@ namespace Microsoft.AspNet.Owin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
X509Certificate IHttpTransportLayerSecurityFeature.ClientCertificate
|
X509Certificate IHttpClientCertificateFeature.ClientCertificate
|
||||||
{
|
{
|
||||||
get { return Prop<X509Certificate>(OwinConstants.CommonKeys.ClientCertificate); }
|
get { return Prop<X509Certificate>(OwinConstants.CommonKeys.ClientCertificate); }
|
||||||
set { Prop(OwinConstants.CommonKeys.ClientCertificate, value); }
|
set { Prop(OwinConstants.CommonKeys.ClientCertificate, value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
Task IHttpTransportLayerSecurityFeature.LoadAsync()
|
Task<X509Certificate> IHttpClientCertificateFeature.GetClientCertificateAsync()
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
@ -228,7 +228,7 @@ namespace Microsoft.AspNet.Owin
|
||||||
{
|
{
|
||||||
return SupportsSendFile;
|
return SupportsSendFile;
|
||||||
}
|
}
|
||||||
else if (key == typeof(IHttpTransportLayerSecurityFeature))
|
else if (key == typeof(IHttpClientCertificateFeature))
|
||||||
{
|
{
|
||||||
return SupportsClientCerts;
|
return SupportsClientCerts;
|
||||||
}
|
}
|
||||||
|
|
@ -256,7 +256,7 @@ namespace Microsoft.AspNet.Owin
|
||||||
}
|
}
|
||||||
if (SupportsClientCerts)
|
if (SupportsClientCerts)
|
||||||
{
|
{
|
||||||
keys.Add(typeof(IHttpTransportLayerSecurityFeature));
|
keys.Add(typeof(IHttpClientCertificateFeature));
|
||||||
}
|
}
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace Microsoft.AspNet.PipelineCore
|
||||||
|
|
||||||
private FeatureReference<IHttpRequestFeature> _request = FeatureReference<IHttpRequestFeature>.Default;
|
private FeatureReference<IHttpRequestFeature> _request = FeatureReference<IHttpRequestFeature>.Default;
|
||||||
private FeatureReference<IHttpConnectionFeature> _connection = FeatureReference<IHttpConnectionFeature>.Default;
|
private FeatureReference<IHttpConnectionFeature> _connection = FeatureReference<IHttpConnectionFeature>.Default;
|
||||||
private FeatureReference<IHttpTransportLayerSecurityFeature> _transportLayerSecurity = FeatureReference<IHttpTransportLayerSecurityFeature>.Default;
|
private FeatureReference<IHttpClientCertificateFeature> _clientCertificate = FeatureReference<IHttpClientCertificateFeature>.Default;
|
||||||
private FeatureReference<IQueryFeature> _query = FeatureReference<IQueryFeature>.Default;
|
private FeatureReference<IQueryFeature> _query = FeatureReference<IQueryFeature>.Default;
|
||||||
private FeatureReference<IFormFeature> _form = FeatureReference<IFormFeature>.Default;
|
private FeatureReference<IFormFeature> _form = FeatureReference<IFormFeature>.Default;
|
||||||
private FeatureReference<IRequestCookiesFeature> _cookies = FeatureReference<IRequestCookiesFeature>.Default;
|
private FeatureReference<IRequestCookiesFeature> _cookies = FeatureReference<IRequestCookiesFeature>.Default;
|
||||||
|
|
@ -43,9 +43,9 @@ namespace Microsoft.AspNet.PipelineCore
|
||||||
get { return _connection.Fetch(_features); }
|
get { return _connection.Fetch(_features); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private IHttpTransportLayerSecurityFeature HttpTransportLayerSecurityFeature
|
private IHttpClientCertificateFeature HttpClientCertificateFeature
|
||||||
{
|
{
|
||||||
get { return _transportLayerSecurity.Fetch(_features); }
|
get { return _clientCertificate.Fetch(_features); }
|
||||||
}
|
}
|
||||||
|
|
||||||
private IQueryFeature QueryFeature
|
private IQueryFeature QueryFeature
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue