如何在 MSAL 中使用客户端密码获取 Azure 访问令牌?
How to get Azure access token using client secret in MSAL?
我一直在尝试从 Flask 迁移 Web 应用程序以做出反应,但我无法获得有效的访问令牌。
在 Flask 中,我使用了 adal 并具有以下代码:
authority_host_uri = 'https://login.microsoftonline.com'
tenant = '<my tenant id>'
authority_uri = authority_host_uri + '/' + tenant
resource_uri = 'https://management.core.windows.net/'
client_id = '<my client id>'
client_secret = '<my client secret>'
context = adal.AuthenticationContext(authority_uri, api_version=None)
mgmt_token = context.acquire_token_with_client_credentials(resource_uri, client_id, client_secret)
响应是
{'tokenType': 'Bearer',
'expiresIn': 3599,
'expiresOn': '2020-05-27 18:22:07.128189',
'resource': 'https://management.core.windows.net/',
'accessToken':'<the access token that was needed>'
'isMRRT': True,
'_clientId': '<client id info>',
'_authority': '<authority above>'}
然而,当我试图在 React 的 msal 中实现相同的东西时,我从
获得的访问令牌
const tokenRequest = {
scopes: [clientId + "/user_impersonation"]
};
const response = await myMSALObj.acquireTokenSilent(tokenRequest)
无效,因为它会从 Azure 目录 API 收到 403 错误,因为我从 Flask 获得的访问令牌工作正常。是否有不同类型的访问令牌,或者是因为范围界定?是否可以做与 adal 在 Flask 中所做的完全相同的事情(比如不需要指定范围,只需使用客户端密码来获取正确的访问密钥?)
范围不正确。因为你想访问这个资源https://management.core.windows.net/
范围应该是:
scopes: ["https://management.core.windows.net/.default"]
参考:
这是由于权限不足,您按照以下程序授予管理员同意:
您也可以通过浏览器交互获取管理员同意:
https://login.microsoftonline.com/{tenant}/adminconsent?client_id={your-client_id}&state=12345&redirect_uri={your-redirect_uri}
我一直在尝试从 Flask 迁移 Web 应用程序以做出反应,但我无法获得有效的访问令牌。 在 Flask 中,我使用了 adal 并具有以下代码:
authority_host_uri = 'https://login.microsoftonline.com'
tenant = '<my tenant id>'
authority_uri = authority_host_uri + '/' + tenant
resource_uri = 'https://management.core.windows.net/'
client_id = '<my client id>'
client_secret = '<my client secret>'
context = adal.AuthenticationContext(authority_uri, api_version=None)
mgmt_token = context.acquire_token_with_client_credentials(resource_uri, client_id, client_secret)
响应是
{'tokenType': 'Bearer',
'expiresIn': 3599,
'expiresOn': '2020-05-27 18:22:07.128189',
'resource': 'https://management.core.windows.net/',
'accessToken':'<the access token that was needed>'
'isMRRT': True,
'_clientId': '<client id info>',
'_authority': '<authority above>'}
然而,当我试图在 React 的 msal 中实现相同的东西时,我从
获得的访问令牌const tokenRequest = {
scopes: [clientId + "/user_impersonation"]
};
const response = await myMSALObj.acquireTokenSilent(tokenRequest)
无效,因为它会从 Azure 目录 API 收到 403 错误,因为我从 Flask 获得的访问令牌工作正常。是否有不同类型的访问令牌,或者是因为范围界定?是否可以做与 adal 在 Flask 中所做的完全相同的事情(比如不需要指定范围,只需使用客户端密码来获取正确的访问密钥?)
范围不正确。因为你想访问这个资源https://management.core.windows.net/
范围应该是:
scopes: ["https://management.core.windows.net/.default"]
参考:
这是由于权限不足,您按照以下程序授予管理员同意:
您也可以通过浏览器交互获取管理员同意:
https://login.microsoftonline.com/{tenant}/adminconsent?client_id={your-client_id}&state=12345&redirect_uri={your-redirect_uri}