You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保护Azure API Management端点仅允许无登录安卓应用调用

针对无需用户登录的Android应用限制APIM访问的可行方案

你之前参考的是AAD用户授权流的配置,确实需要用户登录,以下3种方案都可以实现仅你的指定客户端调用API,不需要用户参与身份验证:

1. 双向TLS客户端证书认证

  • 你可以生成一份专属的客户端证书,将证书的公钥指纹、序列号等信息配置到APIM对应API的校验策略中
  • Android端将证书内置到应用安全存储区域,调用API时携带该客户端证书
  • APIM收到请求后优先校验客户端证书信息,匹配成功才会放行请求,否则直接返回403拒绝访问
  • 注意做好证书混淆保护,同时预留证书轮换机制,定期更新证书避免泄露风险

2. 订阅密钥+HMAC签名校验

  • 首先在APIM中为该API创建专属订阅,获取订阅密钥,同时自定义一个只有你知道的签名密钥
  • Android端每次发起请求时,将当前时间戳、请求路径、请求参数、订阅密钥拼接后,用签名密钥计算HMAC哈希值作为签名,将时间戳、签名、订阅密钥一同放入请求头
  • APIM侧配置校验策略:首先校验请求时间戳与服务器时间差不超过5分钟(避免重放攻击),再用相同规则计算签名,与请求头携带的签名比对一致后才放行
  • 注意签名密钥不要硬编码在APK代码中,存储到Android系统Keystore安全区域,降低被反编译窃取的概率

3. AAD OAuth2.0客户端凭据流

  • 不需要用到需要用户登录的授权码流,改用客户端凭据流即可,该流专门用于服务/客户端本身的身份验证,无用户参与
  • 在AAD中注册一个客户端应用,为该应用授予APIM的访问权限,配置APIM的JWT校验策略,校验AAD签发的客户端令牌
  • Android端使用注册得到的客户端ID、客户端凭据(可以是密码或证书)向AAD请求访问令牌,调用API时在请求头携带Bearer令牌即可
  • 该方案是Azure原生支持的能力,不需要自己实现签名校验逻辑,安全性更高,客户端凭据同样需要存储到Android安全存储区域

内容的提问来源于stack exchange,提问作者gariban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 19:39:04