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

Power App-Power Automate-Azure APIM-后端服务的OAuth 2.0认证流程方案咨询

解决方案:基于OAuth 2.0 On-Behalf-Of流程的无二次登录实现

你的核心需求是在用户已登录Office 365的前提下,让Power Automate以用户身份调用后端服务且无需二次交互。其实OAuth 2.0 On-Behalf-Of(OBO)流程完全支持这种无二次登录场景,你之前的误解在于认为OBO必须搭配交互式的Authorization Code Grant流程,但实际上Power App已持有用户的有效身份令牌,可直接传递给Power Automate触发OBO流程。

具体实现步骤:

  1. 配置Microsoft Entra应用注册

    • 为后端服务创建应用注册,定义所需权限范围(比如access_as_user)。
    • 为Power Automate创建应用注册(或使用内置服务主体),授予其代表用户调用后端服务的委托权限,确保管理员完成权限同意。
    • 确保Power App(或Office 365内置应用)有权限获取用户身份令牌,并可传递给Power Automate。
  2. Power App传递用户令牌到Power Automate

    • 在Power App中,通过AzureAD.GetAccessToken()获取用户针对后端服务范围的访问令牌(或直接获取用户ID令牌)。
    • 将该令牌作为参数传入Power Automate流。
  3. Power Automate执行OBO流程换取后端服务令牌

    • 在Power Automate中调用Microsoft Entra令牌端点,请求参数如下:
      • grant_type: urn:ietf:params:oauth:grant-type:jwt-bearer
      • client_id: Power Automate应用注册ID
      • client_secret: Power Automate应用注册密钥(或客户端证书)
      • assertion: Power App传递的用户令牌
      • scope: 后端服务权限范围(比如api://{backend-app-id}/access_as_user)
      • requested_token_use: on_behalf_of
    • 从响应中提取access_token,此令牌包含用户ID声明,可用于调用后端服务。
  4. APIM与后端服务验证令牌

    • 在APIM中配置OAuth 2.0验证策略,校验access_token的签发者、受众、签名等有效性。
    • 后端服务从验证后的令牌中提取oid(用户对象ID)声明,以此获取用户信息和配置文件。

为什么不推荐服务主体流程?

你提到的“无需用户获取访问权限”的服务主体流程,是以应用身份而非用户身份调用后端服务,无法直接获取当前登录用户的ID声明,不符合你传递用户身份的核心需求,因此OBO流程才是更匹配的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:43:18