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

移动端调用自有后端时Azure单应用注册的可行性

Azure AD单应用注册实现移动端-API认证方案

可行性说明

Azure AD支持单应用注册同时作为移动端客户端和自有API的资源载体,这种方案安全且适配你的场景——前后端属于同一整体、无细分角色、无需多权限范围。核心是让移动端获取针对该应用自身的访问令牌,而非Microsoft Graph的令牌,以此实现API的授权验证。

具体配置步骤

1. 注册单个Azure AD应用

  • 在Azure AD门户创建应用注册,账户类型根据业务需求选择(如仅组织内部账户或所有Microsoft账户)。
  • 进入「身份验证」页面,添加移动端平台(iOS/Android),配置对应重定向URI(例如msal{你的客户端ID}://auth,格式遵循MSAL库要求)。
  • 进入「公开API」页面,点击「添加范围」:
    • 范围名称设为自定义值(如access_as_user),填写描述信息;
    • 同意类型选择「管理员和用户同意」(后续可配置免用户同意);
    • 最终生成的范围标识符为api://{你的客户端ID}/access_as_user,记下来供移动端使用。

2. 移动端获取访问令牌

使用MSAL移动端库(MSAL for iOS/Android)发起授权码流请求(必须配合PKCE,确保公共客户端安全),请求范围指定为上述生成的api://{你的客户端ID}/access_as_user,而非Graph API的范围。此时获取到的访问令牌受众(aud字段)将是你的应用客户端ID或api://{你的客户端ID},完全匹配自有API的验证需求。

API端令牌验证逻辑

API只需验证以下核心字段即可完成安全授权,和你在Okta的实践逻辑一致:

  • 发行方(iss):验证是否为你的Azure AD租户发行URL(例如https://login.microsoftonline.com/{租户ID}/v2.0);
  • 受众(aud):验证是否匹配你的应用客户端ID或api://{你的客户端ID};
  • 签名有效性:确认令牌由Azure AD签发,可通过Azure AD公开密钥端点获取公钥验证;
  • 过期时间(exp):确保令牌未过期。
    由于无细分角色需求,无需验证权限范围,只要令牌符合上述条件,即可判定用户已通过认证并允许访问API。

关于ID令牌的注意事项

Azure AD文档明确禁止将ID令牌用于API授权,原因是ID令牌的设计目标是供移动端客户端确认用户身份,其受众为客户端ID,无法证明该令牌是专门针对API请求签发的,存在被复用的安全风险。因此必须使用访问令牌作为API的Bearer令牌。

简化用户同意流程

若需跳过用户同意步骤,可由租户管理员预先完成权限同意:

  • 进入应用的「API权限」页面,点击「添加权限」>「我的API」,选择自己的应用并添加access_as_user范围;
  • 点击「授予管理员同意」,完成后用户登录时将不再弹出同意窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:55:16