如何从OnAuthorization访问ClientCertificate

问题描述 投票:1回答:1

我已经在我的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对象。我想可以归结为:

  1. 证书是否包含在传入参数中?
  2. 如何转换为可以使用的类型?
c# asp.net-web-api2 httprequest client-certificates .net-standard-2.0
1个回答
0
投票

WebApi正在使用您检查的文档指定的类。又名,您看到了错误的文档。

从AuthorizationFilterAttribute创建派生的属性类时,系统会提示您从Nuget引用一个名为“ Microsoft.AspNet.WebApi.Core”的程序包到您的项目。并且还需要添加另外两个使用“ System.Web.Http.Controllers”和“ System.Web.Http.Filters”的文件。完成这些操作后,您可以使用“ actionContext.Request.GetClietnCertificate()”以OnAuthorization方法获取客户端证书。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.