【问题标题】:How to access ClientCertificate from OnAuthorization如何从 OnAuthorization 访问 ClientCertificate
【发布时间】:2019-06-12 17:49:56
【问题描述】:

我在我的 Web Api 中创建了一个属性 ([ValidateCertificate]) 来检查每次调用的证书。我想访问 ClientCertificate 属性来验证传入的证书。这是来自微软的文档:

public System.Web.HttpClientCertificate ClientCertificate { get; }

但是,我的代码中不存在该属性。这是我的代码的 sn-p:

    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】:

WebApi 正在使用您检查的文档指定的类。 Aka,你看错了文档。

从 AuthorizationFilterAttribute 创建派生属性类时,系统会提示您从 Nuget(仅使用 dotnet 核心时)引用名为“Microsoft.AspNet.WebApi.Core”的封装,并使用“System.Net.Http”你的项目。还有 2 个使用,“System.Web.Http.Controllers”和“System.Net.Http”也需要添加。完成这些操作后,您可以使用名为“actionContext.Request.GetClientCertificate()”的扩展方法在 OnAuthorization 方法中获取客户端证书。

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 2019-11-21
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多