你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

生成身份验证令牌

在本文中,你将了解如何生成服务主体身份验证令牌、用户的身份验证令牌和用户的刷新令牌。

使用 Microsoft Entra ID 注册应用

  1. 要预配 Azure Data Manager for Energy 平台,必须在 Azure 门户应用注册页上注册应用。 可以使用 Microsoft 帐户或者工作或学校帐户来注册应用。 有关如何配置的步骤,请参阅注册应用文档

  2. 在“应用概述”部分中,如果没有指定的重定向 URI,则可以选择“添加平台”>“Web”,添加 http://localhost:8080,然后选择“保存”。

    显示如何将 URI 添加到应用的屏幕截图。

提取参数

也可以在 Azure 门户上注册应用后查找参数。

查找租户 ID

  1. 转到组织的 Microsoft Entra 帐户。 可以在 Azure 门户的搜索栏中搜索“Microsoft Entra ID”

  2. 在“概述”选项卡上的“基本信息”部分下,查找“租户 ID”

  3. 复制 tenant-ID 值并将其粘贴到编辑器中,以供稍后使用。

    显示如何搜索 Microsoft Entra ID 的屏幕截图。

    显示如何查找租户 ID 的屏幕截图。

查找客户端 ID

client-id 值与在预配 Azure Data Manager for Energy 实例期间用于注册应用程序的值相同。 它通常被称为 app-id

  1. 转到 Azure Data Manager for Energy“概述”页。 在“Essentials”窗格中,查找“客户端 ID”

  2. 复制 client-id 值并将其粘贴到编辑器中,以供稍后使用。

  3. 目前,一个 Azure Data Manager for Energy 实例允许一个 app-id 与一个实例相关联。

    重要

    作为权利 API 调用中的值传递的 client-id 需要与用于预配 Azure Data Manager for Energy 实例的值相同。

    显示如何查找已注册应用的客户端 ID 的屏幕截图。

查找客户端密码

client-secret 是一个字符串值,应用可以使用它取代证书来标识自身。 它有时称为应用程序密码。

  1. 转到应用注册

  2. 在“管理”部分下,选择“证书和密码”

  3. 选择“新建客户端密码”,以便为用于创建 Azure Data Manager for Energy 实例的客户端 ID 创建客户端密码

  4. 请记下机密的值,以便稍后在客户端应用程序代码中使用

    app-idclient-secret 的访问令牌具有对实例的基础结构管理员访问权限。

    注意

    不要忘记记录机密的值。 离开此页面以创建客户端机密后,将不会再次显示此机密值。

    显示如何查找客户端机密的屏幕截图。

查找重定向 URI

应用的 redirect-uri 是应用发送并接收身份验证响应的位置。 它必须完全匹配在门户中注册的其中一个重定向 URI,但必须进行 URL 编码。

  1. 转到应用注册
  2. 在“管理”部分下,选择“身份验证”
  3. 提取应用的 redirect-uri(或回复 URL)以接收来自 Microsoft Entra ID 的响应。

显示 redirect-uri 的屏幕截图。

查找 Azure Data Manager for Energy 实例的 adme-url

  1. 使用上面生成的 client-id 创建 Azure Data Manager for Energy 实例

  2. 转到 Azure 门户上的 Azure Data Manager for Energy“概述”页

  3. 在“Essentials”窗格中,复制 URI。

    显示如何查找 Azure Data Manager for Energy 实例的 URI 的屏幕截图。

查找数据分区 ID

可通过两种方法获取 Azure Data Manager for Energy 实例中的数据分区列表。

  • 选项 1:在 Azure Data Manager for Energy UI 的“高级”部分下,转到“数据分区”菜单项

    显示如何从 Azure Data Manager for Energy 实例查找 data-partition-id 的屏幕截图。

  • 选项 2:在 Azure Data Manager for Energy“概述”页面的“Essentials”窗格中,在“数据分区”字段下,选择“查看”

    显示如何从 Azure Data Manager for Energy 实例概述页面查找 data-partition-id 的屏幕截图。

    显示如何从包含数据分区的 Azure Data Manager for Energy 实例概述页面查找 data-partition-id 的屏幕截图。

查找域

默认情况下,domain 是所有 Azure Data Manager for Energy 实例的 dataservices.energy。

生成客户端 ID 身份验证令牌

将占位符值替换为之前在上面的步骤中找到的相应值后,在 Azure Cloud Bash 中运行以下 curl 命令。 响应中的访问令牌是 client-id 身份验证令牌。

请求格式

curl --location --request POST 'https://login.microsoftonline.com/<tenant-id>/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=<client-id>.default' \
--data-urlencode 'client_id=<client-id>' \
--data-urlencode 'client_secret=<client-secret>' \
--data-urlencode 'resource=<client-id>'

示例响应

    {
        "token_type": "Bearer",
        "expires_in": 86399,
        "ext_expires_in": 86399,
        "access_token": "abcdefgh123456............."
    }

生成用户身份验证令牌

生成用户的身份验证令牌是一个两步过程。

获取授权代码

为许多 OpenID Connect (OIDC) 和 OAuth 2.0 流获取访问令牌的第一步是将用户重定向到 Microsoft 标识平台 /authorize 终结点。 Microsoft Entra ID 会将用户登录并请求他们同意应用请求的权限。 在授权代码授予流中,获取同意后,Microsoft Entra ID 将向应用返回一个授权代码,它可以在 Microsoft 标识平台 /token 终结点上兑换访问令牌。

  1. 使用参数准备请求格式。

    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize?client_id=<client-id>
    &response_type=code
    &redirect_uri=<redirect-uri>
    &response_mode=query
    &scope=<client-id>%2f.default&state=12345&sso_reload=true
    
  2. 替换参数后,可以在任何浏览器的 URL 中粘贴请求,然后选择 Enter。

  3. 如果尚未登录,请登录到 Azure 门户。

  4. 你可能会在浏览器中看到“嗯...无法访问此页面“错误消息。 可将其忽略。

    Localhost 重定向的屏幕截图。

  5. 身份验证成功后,浏览器将重定向到 http://localhost:8080/?code={authorization code}&state=...

  6. 从浏览器的 URL 栏中复制响应,并提取 code=&state 之间的文本。

    http://localhost:8080/?code=0.BRoAv4j5cvGGr0...au78f&state=12345&session....
    
  7. 请保留此 authorization-code,以便将来使用。

    参数 说明
    code 应用程序请求的授权代码。 应用可以使用授权代码请求目标资源的访问令牌。 授权代码的生存期很短。 通常,它们在约 10 分钟后过期。
    State 如果请求中包含 state 参数,响应中就应该出现相同的值。 应用应验证请求和响应中的状态值是否相同。 此检查有助于检测针对客户端的 CSRF 攻击
    session_state 一个标识当前用户会话的唯一值。 此值为 GUID,但应将其视为无需检查即可传递的不透明值。

警告

在 Postman 中运行 URL 将不起作用,因为它需要经过额外的配置才能检索令牌。

获取身份验证令牌和刷新令牌

第二步是获取身份验证令牌和刷新令牌。 应用使用在上一步骤中收到的授权代码,通过向 /token 终结点发送 POST 请求来请求访问令牌。

请求格式

  curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d 'client_id=<client-id>
  &scope=<client-id>%2f.default openid profile offline_access
  &code=<authorization-code>
  &redirect_uri=<redirect-uri>
  &grant_type=authorization_code
  &client_secret=<client-secret>' 'https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token'

示例响应

{
  "token_type": "Bearer",
  "scope": "User.Read profile openid email",
  "expires_in": 4557,
  "access_token": "eyJ0eXAiOiJKV1QiLCJub25jZSI6IkJuUXdJd0ZFc...",
  "refresh_token": "0.ARoAv4j5cvGGr0GRqy180BHbR8lB8cvIWGtHpawGN..."
}
参数 说明
token_type 指示令牌类型值。 Microsoft Entra ID 支持的唯一类型是 Bearer。
scope 访问令牌对其有效的 Microsoft Graph 权限的空格分隔列表。
expires_in 访问令牌有效的时间长度(以秒为单位)。
access_token 请求的访问令牌。 应用可以使用此令牌来调用 Microsoft Graph。
refresh_token OAuth 2.0 刷新令牌。 当前访问令牌过期后,应用可以使用此令牌获取额外的访问令牌。 刷新令牌的生存期很长,而且可以用于延长保留资源访问权限的时间。

有关生成用户访问令牌和使用刷新令牌生成新访问令牌的详细信息,请参阅生成刷新令牌

OSDU® 是 Open Group 的商标。

后续步骤

要详细了解如何使用生成的刷新令牌,请参阅: