我想通过证书添加一层安全性来访问托管的asp.net webapi。
我希望只有那些在他们的机器上安装证书的客户才能访问该webapi。
任何人都可以为我提供实现此行为的方法。示例或视频将不胜感激。
答案 0 :(得分:1)
您可以将IIS配置为需要客户端证书而无需编写任何代码。只需follow these instructions,特别是这些:
单击中间面板中的SSL设置,然后选择“要求SSL并要求客户端证书”。
双击“身份验证”图标并禁用所有身份验证方法。
确保已安装IIS客户端证书映射身份验证。
单击中间面板中的配置编辑器并将一对一设置为参考this link
答案 1 :(得分:0)
正如评论中所建议的那样,快速谷歌搜索可能会带来有趣的结果。
然而,可能的解决方案是the following Microsoft article中提出的实施:
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() { ... }
}