微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure API 管理 - 依赖机器的客户端证书创建

如何解决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")" >

enter image description here

这导致了您在问题中提到的场景。如果要设置基于机器的认证访问策略,则需要更改判断条件。例如,您想让受信任的主题可以访问您的 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 举报,一经查实,本站将立刻删除。