对象 ID 为“XXX”的客户端“XXX”无权执行操作“Microsoft.Media/mediaServices/transforms/write”

Posted

技术标签:

【中文标题】对象 ID 为“XXX”的客户端“XXX”无权执行操作“Microsoft.Media/mediaServices/transforms/write”【英文标题】:The client 'XXX' with object id 'XXX' does not have authorization to perform action 'Microsoft.Media/mediaServices/transforms/write' 【发布时间】:2022-01-17 02:44:49 【问题描述】:

我正在尝试使用以下 git repo 来连接到 azure ams,上传视频并进行流式传输: https://github.com/Azure-Samples/media-services-v3-node-tutorials/blob/main/AMSv3Samples/StreamFilesSample/index.ts

由于某种原因,我不断收到以下错误:

The client 'XXX' with object id 'XXX' does not have authorization to perform action 'Microsoft.Media/mediaServices/transforms/write' over scope '/subscriptions/XXX/resourceGroups/TEST-APP/providers/Microsoft.Media/mediaServices/TESTAMP/transforms/ContentAwareEncoding' or the scope is invalid. If access was recently granted, please refresh your credentials

AD 用户是所有者,但我知道这是权限问题。 我在网上搜索了几个小时我需要授予什么权限以及在哪里但找不到任何解决方案

错误在这里抛出:

    let encodingTransform = await mediaServicesClient.transforms.createOrUpdate(resourceGroup, accountName, encodingTransformName, 
  name: encodingTransformName,
  outputs: [
    
      preset: adaptiveStreamingTransform
    
  ]
);

当然,我已将 .env 文件更新为我的 azure 帐户的正确数据。 谁能指出我缺少什么以及如何授予此权限?

谢谢!

【问题讨论】:

【参考方案1】:

错误消息指的是用于针对 AMS SDK 进行身份验证的服务主体。

仔细检查您是否为服务主体 ID 和密钥输入了 GUID 值,并确保您没有在其中使用友好名称。

AADCLIENTID="00000000-0000-0000-0000-000000000000" AADSECRET="00000000-0000-0000-0000-000000000000"

此外,请在门户中的 IAM 访问控制中仔细检查服务主体是否存在于您的媒体服务账户的角色分配下,并且首先具有贡献者或所有者权限角色。

如果您所在的企业锁定了 AAD 访问权限 - 您可能需要与您的 AAD 所有者/管理员合作进行这些更改,并为您的帐户授予服务主体正确的角色。这有点超出媒体服务的范围,只是一般的 Azure AAD 应用程序创建权限和角色分配。 如果您仍然遇到问题,我会提交支持票证并要求您的 AAD 管理员将角色权限分配给您的服务主体。

顺便说一句,我们还在为即将发布的 10.0.0 javascript SDK (即将发布!)更新 Node.js SDK 示例。 在此处查看测试版示例 - https://github.com/Azure-Samples/media-services-v3-node-tutorials/tree/10.0.0-beta.1

【讨论】:

您好,非常感谢您,显然 AD 用户没有连接到 AMS,因此身份验证不成功,我已修复它,现在可以使用了。另一个问题是,我看到我们可以上传和流式传输 HTTP URL 文件或本地系统文件,那么来自表单数据的文件呢?例如,用户通过网络应用上传视频并将其与表单数据一起发送到服务器,我们如何上传此文件?谢谢! 您需要构建某种形式的中间层来接受文件上传并将其首先写入 Azure Blob 存储。可能以 Azure Functions 为例。文件存储后,您可以使用媒体服务 SDK 处理文件的 SAS URL,或者移动它并创建资产。 从浏览器直接写入 AMS 是个坏主意——从安全角度来看。您应该尝试在单独的 API 中隔离该文件上传,然后保护 AMS 的后端使用以及可能泄漏到浏览器的任何写访问存储 SAS URL。

以上是关于对象 ID 为“XXX”的客户端“XXX”无权执行操作“Microsoft.Media/mediaServices/transforms/write”的主要内容,如果未能解决你的问题,请参考以下文章

无法打开文件“xxx.mp4”,因为您无权查看它

无法打开文件“xxx”,因为您在导入时无权查看它

导出 IPA:标识符为 XXX 的 App ID 不可用

获取“Google Apps 脚本”“该脚本无权执行该操作。”随机

用vim生成一批递增ID

不允许 IP 地址为“XXX.XXX.XXX.XX”的 Windows Azure 客户端访问服务器