你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
生成身份验证令牌
在本文中,你将了解如何生成服务主体身份验证令牌、用户的身份验证令牌和用户的刷新令牌。
使用 Microsoft Entra ID 注册应用
要预配 Azure Data Manager for Energy 平台,必须在 Azure 门户应用注册页上注册应用。 可以使用 Microsoft 帐户或者工作或学校帐户来注册应用。 有关如何配置的步骤,请参阅注册应用文档。
在“应用概述”部分中,如果没有指定的重定向 URI,则可以选择“添加平台”>“Web”,添加
http://localhost:8080
,然后选择“保存”。
提取参数
也可以在 Azure 门户上注册应用后查找参数。
查找租户 ID
转到组织的 Microsoft Entra 帐户。 可以在 Azure 门户的搜索栏中搜索“Microsoft Entra ID”。
在“概述”选项卡上的“基本信息”部分下,查找“租户 ID”。
复制
tenant-ID
值并将其粘贴到编辑器中,以供稍后使用。
查找客户端 ID
client-id
值与在预配 Azure Data Manager for Energy 实例期间用于注册应用程序的值相同。 它通常被称为 app-id
。
转到 Azure Data Manager for Energy“概述”页。 在“Essentials”窗格中,查找“客户端 ID”。
复制
client-id
值并将其粘贴到编辑器中,以供稍后使用。目前,一个 Azure Data Manager for Energy 实例允许一个
app-id
与一个实例相关联。重要
作为权利 API 调用中的值传递的
client-id
需要与用于预配 Azure Data Manager for Energy 实例的值相同。
查找客户端密码
client-secret
是一个字符串值,应用可以使用它取代证书来标识自身。 它有时称为应用程序密码。
转到应用注册。
在“管理”部分下,选择“证书和密码”。
选择“新建客户端密码”,以便为用于创建 Azure Data Manager for Energy 实例的客户端 ID 创建客户端密码。
请记下机密的值,以便稍后在客户端应用程序代码中使用。
app-id
和client-secret
的访问令牌具有对实例的基础结构管理员访问权限。注意
不要忘记记录机密的值。 离开此页面以创建客户端机密后,将不会再次显示此机密值。
查找重定向 URI
应用的 redirect-uri
是应用发送并接收身份验证响应的位置。 它必须完全匹配在门户中注册的其中一个重定向 URI,但必须进行 URL 编码。
- 转到应用注册。
- 在“管理”部分下,选择“身份验证”。
- 提取应用的
redirect-uri
(或回复 URL)以接收来自 Microsoft Entra ID 的响应。
查找 Azure Data Manager for Energy 实例的 adme-url
使用上面生成的
client-id
创建 Azure Data Manager for Energy 实例。转到 Azure 门户上的 Azure Data Manager for Energy“概述”页。
在“Essentials”窗格中,复制 URI。
查找数据分区 ID
可通过两种方法获取 Azure Data Manager for Energy 实例中的数据分区列表。
选项 1:在 Azure Data Manager for Energy UI 的“高级”部分下,转到“数据分区”菜单项。
选项 2:在 Azure Data Manager for Energy“概述”页面的“Essentials”窗格中,在“数据分区”字段下,选择“查看”。
查找域
默认情况下,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
终结点上兑换访问令牌。
使用参数准备请求格式。
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
替换参数后,可以在任何浏览器的 URL 中粘贴请求,然后选择 Enter。
如果尚未登录,请登录到 Azure 门户。
你可能会在浏览器中看到“嗯...无法访问此页面“错误消息。 可将其忽略。
身份验证成功后,浏览器将重定向到
http://localhost:8080/?code={authorization code}&state=...
。从浏览器的 URL 栏中复制响应,并提取
code=
和&state
之间的文本。http://localhost:8080/?code=0.BRoAv4j5cvGGr0...au78f&state=12345&session....
请保留此
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 的商标。
后续步骤
要详细了解如何使用生成的刷新令牌,请参阅: