我们在azure上托管了一个webapi,我们需要启用TLS相互身份验证。
我的问题是,如何将呼叫限制为仅允许来自我知道呼叫者将发送的一个(或一组)证书的请求。我可以从HttpContext.Connection.GetClientCertificateAsync()读取一些属性;
我是否应该匹配这些属性,或者是否有更好的方法来确保只使用我们的API已知的证书来处理调用。
由于
答案 0 :(得分:0)
在Azure App Service中的Web App上启用客户端证书身份验证后,该服务默认接受所有客户端证书。您可以通过在global.asax文件中的Application_AuthenticateRequest
方法中编写一些自定义代码或通过创建新的HTTP模块来限制证书,如https://msdn.microsoft.com/en-us/magazine/dn201748.aspx中所述(假设这是一个ASP.NET应用程序)
在AuthenticateRequest中,您可以将类似IsValidClientCertificate()
方法的代码放在文章https://docs.microsoft.com/en-in/azure/app-service/app-service-web-configure-tls-mutual-auth中所述,该方法向您展示了检查Web Api所获得的客户端证书的各种方法。根据您的要求,您可以自定义此功能。
希望这会有所帮助......
答案 1 :(得分:0)
不可能以与IIS相同的方式限制用户可以选择的客户端证书的数量来限制接受证书的数量。我已经向微软提出了建议。