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

Azure Search Service RBAC实现问题:无法获取search.azure.com访问令牌

Azure Search Service RBAC实现与令牌获取问题解决

问题概述

我正在为Azure搜索服务实现RBAC,需根据用户角色控制其对索引资源的访问权限,同时要通过编程方式获取用户访问令牌并作为Bearer令牌用于API交互。

已执行操作与问题点

  • 已在搜索服务资源上启用基于角色的访问控制
  • 创建了带端点的Azure Web应用
  • 在Microsoft Entra ID中注册了新应用
  • 将Entra ID的重定向/响应端点设置为托管Azure Web应用的路由
  • 使用授权码获取令牌流程
  • 用户已通过生成的授权URI完成身份验证,且被重定向到Web应用端点
  • 成功获取microsoft.graph.User.read的访问令牌
  • 无法获取search.azure.com/.default的访问令牌
  • 在Microsoft Entra ID中找不到Azure搜索服务的API权限

解决方案

1. 手动添加Azure搜索服务的API权限

在Entra ID应用注册的「API权限」页面:

  • 点击「添加权限」,选择「我的组织使用的API」,搜索Azure Search Service或直接输入search.azure.com
  • 根据访问场景选择权限类型:代表用户访问选委托权限,应用自身访问选应用权限,勾选对应权限后点击「添加权限」
  • 若权限需要管理员同意,需由全局管理员完成同意操作

2. 调整令牌请求的作用域

获取令牌时,必须使用完整的作用域URL:

  • 将请求作用域设置为https://search.azure.com/.default
  • 授权码流程的令牌请求示例:
    curl -X POST https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "client_id={你的应用ID}" \
    -d "scope=https://search.azure.com/.default" \
    -d "code={获取到的授权码}" \
    -d "redirect_uri={你的重定向URI}" \
    -d "grant_type=authorization_code" \
    -d "client_secret={你的应用密钥}"
    

3. 验证RBAC角色分配

确保已在Azure搜索服务的「访问控制(IAM)」页面,将用户或服务主体分配到合适的RBAC角色(如「搜索服务数据读取者」「搜索服务数据参与者」等),角色分配是令牌生效的前提。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:02:33