我已经在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对象。我想可以归结为:
答案 0 :(得分:0)
WebApi正在使用您所检查的文档所指定的类。又是,您看到了错误的文档。
从AuthorizationFilterAttribute创建派生的属性类时,系统将提示您引用Nuget的软件包“ Microsoft.AspNet.WebApi.Core”(仅当使用dotnet core时),并使用“ System.Net.Http”引用您的项目。并且还需要添加另外两个使用“ System.Web.Http.Controllers”和“ System.Net.Http”的文件。完成这些操作之后,您可以使用名为“ actionContext.Request.GetClientCertificate()”的扩展方法来通过OnAuthorization方法获取客户端证书。