您现在访问的是微软AZURE全睃版技术文档网站,若需覝访问由世纪互蝔违蝥的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

身份验证

进行 REST 调用时,需要执行几个步骤才能正确进行身份验证。 我们的 SDK 会处理此过程,但手动进行请求意味着你需要自己处理。

身份验证类型

Azure 通信服务身份验证有三种类型,它们的用途略有不同:

  • 用于短信、 标识和访问令牌操作的访问密钥身份验证。 访问密钥身份验证适用于在受信任的服务环境中运行的应用程序。
  • Azure 托管标识身份验证 与访问密钥身份验证类似,这适用于受信任的服务环境中短信、标识和访问令牌操作。
  • 聊天和通话的 用户访问令牌身份验证。 用户访问令牌允许客户端应用程序直接针对 Azure 通信服务。 这些令牌是在创建的服务器端令牌预配服务上生成的。 然后,将它们提供给使用令牌初始化聊天和呼叫客户端库的客户端设备。

访问密钥身份验证

如果最终用户应用程序未提出请求,则使用访问密钥身份验证。 在受信任的服务环境中运行这些请求。

在此身份验证方法中,请求使用客户端生成的基于哈希的消息身份验证代码在 HMAC (签名) 。

在开始使用之前,请确保:

  • 你的Azure 通信服务访问密钥
  • Azure 通信服务终结点
  • 要调用的 URL 路径和 HTTP 谓词
  • 一个开发环境,可生成 HMAC、SHA256 哈希和 Base64 操作。

获得这些项后,可以继续为请求签名。

对 HTTP 请求进行签名

  1. 在 协调世界时 (或) HTTP 标头中指定请求的 UTC 时间戳 x-ms-date Date 。 服务验证此时间戳,以防止某些安全攻击,包括重播攻击。

  2. 使用 SHA256 算法对 HTTP 请求正文进行哈希处理,然后通过 标头与请求一起 x-ms-content-sha256 传递它。

  3. 构造要签名的字符串,具体方法为连接 HTTP 谓词 (例如,或) 、HTTP 请求路径和 、 和 HTTP 标头的值,格式 GET PUT Date Host x-ms-content-sha256 如下:

    VERB + "\n"
    URLPathAndQuery + "\n"
    DateHeaderValue + ";" + HostHeaderValue + ";" + ContentHashHeaderValue
    
  4. 生成在上一步中创建的 UTF-8 编码字符串的 HMAC-256 签名。 接下来,将结果编码为 Base64。 还需要对访问密钥进行 Base64 解码。 使用以下格式 (伪代码) :

    Signature=Base64(HMAC-SHA256(UTF8(StringToSign), Base64.decode(<your_access_key>)))
    
  5. 按如下所示指定 Authorization 标头:

    Authorization="HMAC-SHA256 SignedHeaders=date;host;x-ms-content-sha256&Signature=<hmac-sha256-signature>"  
    

    <hmac-sha256-signature>其中 是上一步中计算的 HMAC。

在已知所有其他详细信息和标头设置后,现在可以指定标头的格式 Authorization ,如下所示: Authorization: "HMAC-SHA256 SignedHeaders=date;host;x-ms-content-sha256&Signature=<hmac-sha256-signature>"

Azure 托管Identity Authentication

当最终用户应用程序未提出请求时,可以使用 Azure 托管标识。 在受信任的服务环境中运行这些请求。

在开始使用之前,请确保:

  • Azure 托管标识
  • 要调用的 URL 路径和 HTTP 谓词

若要了解如何创建 Azure 托管标识,请参阅 - 从 Azure Active Directory创建托管标识Azure CLI。

创建 Azure 托管标识后,可以使用其机密之一进行身份验证,以访问通信服务,以便创建用户、颁发用户访问令牌或发送短信。

在请求中使用托管标识凭据

获得托管标识的 ID 和机密后,可以在请求中使用它们Azure 通信服务"REST API"标头中提供它们。

authorizationHeaderValue = convertToBase64String(<managed identity ID> + ":" + <secret of the managed identity>)
Authorization="BASIC <authorizationHeaderValue>"

用户访问令牌身份验证

用户访问令牌允许客户端应用程序以特定用户Azure 通信服务身份直接进行身份验证。

生成/获取用户访问令牌

用户访问令牌由你在受信任的环境中生成。 使用管理 SDK 生成它们是最简单的方法。 有关详细信息,请参阅 创建和管理用户访问令牌

在请求中使用用户访问令牌

拥有合适的用户访问令牌后,可以通过在 标头中提供令牌,Azure 通信服务请求REST API令牌 Authorization

另请参阅

有关身份验证Azure 通信服务,还可以查看: