0

我想通过证书添加一层安全性来访问托管的 asp.net webapi。

我希望只有那些在他们的机器上安装了证书的客户才能访问那个 webapi。

任何人都可以为我提供一种实现这种行为的方法。示例或视频将不胜感激。

4

2 回答 2

1

您可以将 IIS 配置为要求客户端证书,而无需编写任何代码。只需遵循这些说明,特别是这些说明:

  1. 单击中间面板中的 SSL 设置,然后选择要求 SSL 和要求客户端证书。

  2. 双击身份验证图标并禁用所有身份验证方法。

  3. 确保已安装 IIS 客户端证书映射身份验证。

  4. 单击中间面板中的配置编辑器并设置一对一映射参考此链接

于 2017-08-15T02:11:53.990 回答
0

正如评论中所建议的那样,快速的谷歌搜索可能会导致有趣的结果。

然而,一个可能的解决方案是以下 Microsoft 文章中提出的实现:

public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
        {
            actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
            {
                ReasonPhrase = "HTTPS Required"
            };
        }
        else
        {
            base.OnAuthorization(actionContext);
        }
    }
}

然后,您将装饰您的 ApiController 操作:

public class SomeController : ApiController
{
    [RequireHttps]
    public HttpResponseMessage Get() { ... }
}
于 2017-08-09T11:48:40.043 回答