守护程序获取ARM版Azure Video Indexer令牌Access Denied解决
问题描述
以守护程序应用(daemon app)身份获取基于ARM的Azure Video Indexer令牌时出现故障:使用Azure门户生成的令牌可正常上传视频,但通过自行注册的带client_secret的应用调用/generateAccessToken端点请求令牌时,返回访问拒绝错误。
- 已为注册应用配置权限范围
https://management.azure.com/user_impersonation,同时将该应用添加为Video Indexer的RBAC参与者角色(该配置为冗余保险配置,未确认是否为接口访问必需步骤) - 从令牌端点
https://login.microsoftonline.com/fbe3354f-$$$$-404a-8d93-da9b01b57c28/oauth2/v2.0/token获取Azure AD令牌后,调用Video Indexer令牌生成端点https://management.azure.com/subscriptions/665eef5b-$$$$-43ad-9ec5-4afc5cd0a0e5/resourceGroups/ween-global/providers/Microsoft.VideoIndexer/accounts/ween-video-indexer/generateAccessToken?api-version=2022-04-13-preview时,返回如下错误响应:
{ "error": { "code": "ResourcePostActionFailed", "message": "ResourcePostActionFailed: Access Denied" } }
复现步骤
第一阶段:基础功能验证
- 通过Azure门户创建ARM版Video Indexer账户
- 为Video Indexer配置用户分配托管标识用于连接Media Services(系统分配托管标识存在已知兼容性问题)
- 为该托管标识分配Media Services的参与者角色
- 通过门户生成
Contributor/Account级别Video Indexer令牌 - 使用该令牌成功上传视频,基础功能验证通过
第二阶段:守护程序集成
门户生成的令牌有效期仅1小时,需通过守护程序实现令牌自动续期生成,操作流程如下:
- 在Azure Active Directory中创建应用注册
- 为该应用配置client secret凭据
- 为应用添加API权限
https://management.azure.com/user_impersonation - 为该注册应用分配Video Indexer资源的参与者RBAC角色
- 成功获取范围为
https://management.azure.com/.default的Azure AD访问令牌 - 携带该令牌调用上述
generateAccessToken端点请求Video Indexer令牌时,复现Access Denied错误
已按照RBAC权限要求为应用分配参与者角色,仍无法访问API,无法定位是配置错误还是遗漏了必要操作步骤。
解决方案
经链路排查确认,接口请求时额外携带了非预期的Ocp-Apim-Subscription-Key请求头,移除该多余请求头后即可正常获取Video Indexer令牌。
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

