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

Azure Media Service:如何获取STS、许可证及生成验证令牌?

Azure Media Services许可证获取与令牌生成指南

嘿,我来帮你梳理下这几个问题的解决方法,都是AMS开发里常碰到的点,一步步来:

一、如何获取许可证

其实获取许可证的方式分两种,看你之前的配置:

  • 自动触发(最常用):当你用兼容的播放器(比如Azure Media Player、Shaka Player)加载加密后的媒体内容时,播放器会自动识别DRM保护,并向AMS的密钥交付端点发起许可证请求。你只需要在播放器配置里指定正确的密钥交付地址,格式大概是https://<你的AMS账户名>.keydelivery.mediaservices.windows.net/<DRM类型>/license,比如PlayReady的就是https://xxx.keydelivery.mediaservices.windows.net/PlayReady/license。
  • 自定义许可证服务:如果你需要在发许可证前做用户身份验证、权限校验这类自定义逻辑,可以自己搭一个中间服务。在AMS门户里把密钥交付端点改成你的服务地址,你的服务先验证用户合法性,再向AMS请求许可证转发给客户端,或者直接用你持有的内容密钥生成许可证。

二、用验证密钥生成令牌

这里说的令牌一般是JWT,用来向AMS证明用户有权获取许可证,步骤很清晰:

  1. 确认签名算法:AMS支持HS256(对称密钥,简单易上手)和RS256(非对称密钥,更安全),选哪种看你之前内容密钥策略里的配置。
  2. 构造JWT声明:必须包含几个核心字段:
    • aud:受众,要和你AMS内容密钥策略里设置的受众完全一致,一般是urn:azure:mediaservices:contentkey
    • exp:过期时间,比如设成当前时间加3600秒(1小时),避免令牌长期有效
    • nbf:生效时间,一般设成当前时间就行
      你还可以加自定义字段,比如用户ID,方便后续做权限细分。
  3. 签名生成令牌:用你手里的验证密钥对JWT进行签名。举个Node.js的例子,用jsonwebtoken库:
const jwt = require('jsonwebtoken');
// 注意这个密钥要和AMS内容密钥策略里的签名密钥完全匹配
const signingKey = '你的验证密钥字符串';
const token = jwt.sign(
  {
    aud: 'urn:azure:mediaservices:contentkey',
    exp: Math.floor(Date.now() / 1000) + 3600,
    nbf: Math.floor(Date.now() / 1000)
  },
  signingKey,
  { algorithm: 'HS256' }
);

生成的令牌要在播放器请求许可证时带上,通常是放在请求头的Authorization里,格式是Bearer <你的JWT令牌>。

三、从哪里获取验证密钥

这个密钥是你在配置AMS内容密钥策略时设置的,找起来很简单:

  • 登录Azure门户,进入你的Media Services账户
  • 找到内容密钥策略,点开你之前为加密媒体配置的那个策略
  • 看策略详情里的限制部分,如果你选的是令牌限制,就能看到签名密钥的配置:
    • 如果是对称密钥(HS256):你可以查看密钥(注意AMS只在创建时显示完整密钥,之后只能重新生成),一定要把这个密钥妥善保存,丢失了只能重新生成
    • 如果是非对称密钥(RS256):AMS里只存了公钥,你需要用自己生成并保管的私钥来签名令牌,这个私钥一开始就是你自己创建的,要确保安全存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:43