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

通过Azure APIM传递用户AD令牌至Dynamics Web API遇401未授权问题

解决Azure APIM传递用户令牌到Dynamics Web API的401未授权问题

核心问题分析

你直接转发用户的front-end-client令牌到Dynamics Web API时出现401,本质原因是令牌受众(aud字段)不匹配:用户传入的令牌受众是front-end-client的Client ID,而Dynamics Web API只接受针对自身资源(或授权代理应用)的令牌。

正确解决方案:使用OBO(On-Behalf-Of)流程获取用户委托令牌

需在APIM中先验证用户令牌,再通过OBO流程获取针对Dynamics Web API的用户身份令牌,最后将该令牌传递给后端。

前置检查

  1. 确保front-end-client应用注册已添加Dynamics Web API的Delegated权限(如user_impersonation),且管理员已完成权限同意。
  2. 准备以下信息:
    • 租户ID
    • front-end-client的Client ID和Client Secret(需在APIM中添加为命名值,避免明文暴露)
    • Dynamics Web API的资源URI(格式:https://<你的组织名称>.crm.dynamics.com)

APIM策略配置示例

<policies>
    <inbound>
        <!-- 1. 验证前端传入的用户令牌,验证通过后存入变量 -->
        <validate-azure-ad-token 
            tenant-id="你的租户ID" 
            audience="front-end-client的Client ID" 
            output-token-variable-name="validatedUserToken" />
        
        <!-- 2. 通过OBO流程获取针对Dynamics的用户委托令牌 -->
        <oauth2-acquire-token-on-behalf-of 
            resource="https://你的Dynamics组织URL.crm.dynamics.com" 
            client-id="front-end-client的Client ID" 
            client-secret="{{front-end-client-secret}}" <!-- APIM命名值,存储Client Secret -->
            assertion="@(context.Variables.GetValueOrDefault<string>("validatedUserToken"))" 
            output-token-variable-name="dynamicsUserToken" />
        
        <!-- 3. 将新令牌设置到后端请求的Authorization头 -->
        <set-header name="Authorization" exists-action="override">
            <value>@("Bearer " + context.Variables.GetValueOrDefault<string>("dynamicsUserToken"))</value>
        </set-header>
        
        <base />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

关键验证步骤

  1. 用jwt.ms解码dynamicsUserToken,确认aud字段为Dynamics Web API的资源URI,sub字段为目标用户ID。
  2. 检查APIM网络配置,确保能访问Azure AD令牌端点(https://login.microsoftonline.com)。
  3. 确认用户账号本身拥有Dynamics Web API的查询权限(已验证权限可跳过)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:27:41