如何解决Azure API 管理 - 依赖机器的客户端证书创建
我在 https://docs.microsoft.com/en-us/learn/modules/control-authentication-with-apim/1-introduction 的帮助下创建了 API 并实现了订阅 + 基于证书的身份验证功能。此实现目前为特定用户提供安全性。如果我向另一个用户提供相同的订阅和证书,那么也会访问 API。 你能解释一下如何避免这种情况吗? 请指导我如何通过 Azure API 管理提供基于机器的认证访问?
解决方法
根据您在问题中提供的教程,用户可以使用多个属性来设置验证策略。实践中的示例策略基于 Thumbprint,例如 <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "desired-thumbprint")" >
这导致了您在问题中提到的场景。如果要设置基于机器的认证访问策略,则需要更改判断条件。例如,您想让受信任的主题可以访问您的 API,您可以像这样更改策略:
<inbound>
<base />
<choose>
<when condition="@(context.Request.Certificate == null
|| context.Request.Certificate.Issuer != "CN=client-daemon.mycustomdomain.com,OU=Azure,O=tosokr.github.io,L=Amsterdam,S=North Holland,C=NL"
|| context.Request.Certificate.SubjectName.Name != "CN=*.mycustomdomain.com")">
<return-response>
<set-status code="403" reason="Invalid client certificate" />
</return-response>
</when>
</choose>
</inbound>
更多示例可以参考this blog。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。