#70 - Refactor client cert feature interface.

This commit is contained in:
Chris Ross 2014-06-19 11:46:13 -07:00
parent 2ae3a24a16
commit b6f4207b3b
5 changed files with 21 additions and 13 deletions

View File

@ -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();
}
}

View File

@ -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" />

View File

@ -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

View File

@ -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;
}

View File

@ -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