Azure 上托管的 Web API 中的 TLS 相互身份验证
TLS Mutual Authentication in WebAPI hosted on Azure
我们有一个 webapi 托管在 azure 上,我们需要启用 TLS 相互身份验证。
我的问题是,如何将调用限制为仅允许来自我知道调用者将发送的一个(或一组)证书的请求。我可以从 HttpContext.Connection.GetClientCertificateAsync();
读取一些属性
我应该只匹配这些属性还是有更好的方法来确保只使用我们 API 已知的证书处理调用。
谢谢
在 Azure 应用服务的 Web 应用程序上启用客户端证书身份验证后,该服务默认接受所有客户端证书。您可以通过在 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 获得的客户端证书的各种方法.根据您的需求,您可以自定义此功能。
希望这对您有所帮助....
无法像 IIS 那样限制接受的证书数量,从而为用户提供有限的客户端证书选择。我已经向微软提出了这个建议。
我们有一个 webapi 托管在 azure 上,我们需要启用 TLS 相互身份验证。
我的问题是,如何将调用限制为仅允许来自我知道调用者将发送的一个(或一组)证书的请求。我可以从 HttpContext.Connection.GetClientCertificateAsync();
读取一些属性我应该只匹配这些属性还是有更好的方法来确保只使用我们 API 已知的证书处理调用。
谢谢
在 Azure 应用服务的 Web 应用程序上启用客户端证书身份验证后,该服务默认接受所有客户端证书。您可以通过在 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 获得的客户端证书的各种方法.根据您的需求,您可以自定义此功能。
希望这对您有所帮助....
无法像 IIS 那样限制接受的证书数量,从而为用户提供有限的客户端证书选择。我已经向微软提出了这个建议。