Azure:如何获得刷新令牌?当连接的输出仅提供访问令牌时使用Curl

问题描述 投票:0回答:2

我无法使用Azure服务主体获取刷新令牌(使用客户端ID和客户端密钥)

请帮助我通过CURL获取刷新令牌以及如何使用它。

当我在Windows CMD提示符中运行以下CURL命令时,我将获得访问令牌。而我没有获得刷新令牌。

我在这里错过了什么吗?

输入:

curl -X POST https://login.microsoftonline.com/12345/oauth2/token ^
-F grant_type=client_credentials ^
-F resource=https://management.core.windows.net/ ^
-F client_id=12345-abcde ^
-F client_secret=12345abcde

输出:

{
    "token_type": "Bearer",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1554368330",
    "not_before": "1554364430",
    "resource": "https://management.core.windows.net/",
    "access_token": "XXXXXXXXXXXXX"
}

由于输出没有刷新令牌(我如何得到它)

请提出任何可能的见解

azure authentication curl access-token refresh-token
2个回答
1
投票

您没有获得具有客户端ID和密码的刷新令牌。这没有意义。刷新令牌仅在涉及用户时才有意义。因为在那里它允许你获得新的令牌而不会提示用户再次登录。

您不需要刷新令牌。您可以根据需要获取具有客户端ID和密码的新令牌。


1
投票

将grant_type更改为“password”,将用户名和密码添加到请求中。

curl -X POST https://login.microsoftonline.com/12345/oauth2/token ^
-F grant_type=password ^
-F resource=https://management.core.windows.net/ ^
-F client_id=12345-abcde ^
-F client_secret=12345abcde ^
-F [email protected] ^
-F password=******

您将能够获得refresh_token。

{
"token_type": "Bearer",
"scope": "User.ReadWrite.All",
"expires_in": "3600",
"ext_expires_in": "3600",
"expires_on": "1554711949",
"not_before": "1554708049",
"resource": "https://management.core.windows.net/",
"access_token": "******",
"refresh_token": "******"
}

您可以使用refresh_token来refresh the access token

© www.soinside.com 2019 - 2024. All rights reserved.