#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
|
||||
{
|
||||
[AssemblyNeutral]
|
||||
public interface IHttpTransportLayerSecurityFeature
|
||||
public interface IHttpClientCertificateFeature
|
||||
{
|
||||
/// <summary>
|
||||
/// Synchronously retrieves the client certificate, if any.
|
||||
/// </summary>
|
||||
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="IHttpResponseFeature.cs" />
|
||||
<Compile Include="IHttpSendFileFeature.cs" />
|
||||
<Compile Include="IHttpTransportLayerSecurityFeature.cs" />
|
||||
<Compile Include="IHttpClientCertificateFeature.cs" />
|
||||
<Compile Include="IHttpWebSocketFeature.cs" />
|
||||
<Compile Include="IWebSocketAcceptContext.cs" />
|
||||
<Compile Include="Security\IAuthenticateContext.cs" />
|
||||
|
|
|
|||
|
|
@ -67,9 +67,9 @@ namespace Microsoft.AspNet.Owin
|
|||
|
||||
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));
|
||||
_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
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Owin
|
|||
IHttpResponseFeature,
|
||||
IHttpConnectionFeature,
|
||||
IHttpSendFileFeature,
|
||||
IHttpTransportLayerSecurityFeature,
|
||||
IHttpClientCertificateFeature,
|
||||
IOwinEnvironmentFeature
|
||||
{
|
||||
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); }
|
||||
set { Prop(OwinConstants.CommonKeys.ClientCertificate, value); }
|
||||
}
|
||||
|
||||
Task IHttpTransportLayerSecurityFeature.LoadAsync()
|
||||
Task<X509Certificate> IHttpClientCertificateFeature.GetClientCertificateAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
|
@ -228,7 +228,7 @@ namespace Microsoft.AspNet.Owin
|
|||
{
|
||||
return SupportsSendFile;
|
||||
}
|
||||
else if (key == typeof(IHttpTransportLayerSecurityFeature))
|
||||
else if (key == typeof(IHttpClientCertificateFeature))
|
||||
{
|
||||
return SupportsClientCerts;
|
||||
}
|
||||
|
|
@ -256,7 +256,7 @@ namespace Microsoft.AspNet.Owin
|
|||
}
|
||||
if (SupportsClientCerts)
|
||||
{
|
||||
keys.Add(typeof(IHttpTransportLayerSecurityFeature));
|
||||
keys.Add(typeof(IHttpClientCertificateFeature));
|
||||
}
|
||||
return keys;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ namespace Microsoft.AspNet.PipelineCore
|
|||
|
||||
private FeatureReference<IHttpRequestFeature> _request = FeatureReference<IHttpRequestFeature>.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<IFormFeature> _form = FeatureReference<IFormFeature>.Default;
|
||||
private FeatureReference<IRequestCookiesFeature> _cookies = FeatureReference<IRequestCookiesFeature>.Default;
|
||||
|
|
@ -43,9 +43,9 @@ namespace Microsoft.AspNet.PipelineCore
|
|||
get { return _connection.Fetch(_features); }
|
||||
}
|
||||
|
||||
private IHttpTransportLayerSecurityFeature HttpTransportLayerSecurityFeature
|
||||
private IHttpClientCertificateFeature HttpClientCertificateFeature
|
||||
{
|
||||
get { return _transportLayerSecurity.Fetch(_features); }
|
||||
get { return _clientCertificate.Fetch(_features); }
|
||||
}
|
||||
|
||||
private IQueryFeature QueryFeature
|
||||
|
|
|
|||
Loading…
Reference in New Issue