我已经在我的Web Api中创建了一个属性([ValidateCertificate]
),以检查每个呼叫中的证书。我想访问ClientCertificate属性以验证传入的证书。这来自Microsoft的文档:
public System.Web.HttpClientCertificate ClientCertificate { get; }
但是,该属性在我的代码中不存在。这是我的代码的片段:
public async override void OnAuthorization(HttpActionContext httpContext)
{
try
{
X509Certificate2 cert = httpContext.Request.ClientCertificate; // This property doesn't exist.
看起来该属性应该在HttpRequest对象中,但是我只能在此属性代码内访问HttpRequestMessage对象。我想可以归结为:
WebApi正在使用您检查的文档指定的类。又名,您看到了错误的文档。
从AuthorizationFilterAttribute创建派生的属性类时,系统会提示您从Nuget引用一个名为“ Microsoft.AspNet.WebApi.Core”的程序包到您的项目。并且还需要添加另外两个使用“ System.Web.Http.Controllers”和“ System.Web.Http.Filters”的文件。完成这些操作后,您可以使用“ actionContext.Request.GetClietnCertificate()”以OnAuthorization方法获取客户端证书。