Как получить токен доступа Azure с использованием секрета клиента в MSAL? - PullRequest
0 голосов
/ 28 мая 2020

Я пытался перенести веб-приложение с Flask для реагирования, и у меня возникли проблемы с получением действительного токена доступа. В 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>'}

Однако, пока я пытался реализовать То же самое в msal в React, токен доступа, который я получил от

const tokenRequest = {
    scopes: [clientId + "/user_impersonation"]
};    
const response = await myMSALObj.acquireTokenSilent(tokenRequest)

, недействителен, как будто он получит ошибку 403 из Azure API каталога, как токен доступа, который я получил от Flask работал нормально. Существуют ли разные типы токенов доступа или это связано с областью действия? Можно ли сделать то же самое, что и adal в Flask (например, не нужно указывать область действия, просто используя секрет клиента, чтобы получить правильный ключ доступа?)

1 Ответ

1 голос
/ 28 мая 2020

Неправильный объем. Поскольку вы хотите получить доступ к этому ресурсу https://management.core.windows.net/

Область должна быть:

scopes: ["https://management.core.windows.net/.default"]

Ссылка:

https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-v1-app-scopes#scopes -to-request-access -to-all-the-permissions-of-a-v10-application

Это связано с недостаточными разрешениями, и вы даете согласие администратора в соответствии со следующей процедурой:

enter image description here

enter image description here

Вы также можете получить согласие администратора через браузер:

https://login.microsoftonline.com/{tenant}/adminconsent?client_id={your-client_id}&state=12345&redirect_uri={your-redirect_uri}

enter image description here

...