GraphRbacManagementClient.applications.create () возвращает токен доступа отсутствующий или неправильно сформированный - PullRequest
0 голосов
/ 08 мая 2018

Мы пытаемся создать регистрацию приложения Azure, используя Python SDK (v2.0) и учетные данные CLI текущего пользователя.

from azure.common.credentials import get_azure_cli_credentials
from azure.graphrbac import GraphRbacManagementClient

credentials, subscription_id = get_azure_cli_credentials()
client = GraphRbacManagementClient(credentials, 'my-tenant-id')
app_parameters = {
    'available_to_other_tenants': False,
    'display_name': 'my-app-name',
    'identifier_uris': ['http://my-app-name.com']
}
app = client.applications.create(app_parameters)

Но это возвращает

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/my-app-code/.venv/lib/python3.6/site-packages/azure/graphrbac/operations/applications_operations.py", line 86, in create
    raise models.GraphErrorException(self._deserialize, response)
azure.graphrbac.models.graph_error.GraphErrorException: Access Token missing or malformed.

Мы отметили, что мы можем избежать этой ошибки при использовании ServicePrincipalCredentials, включив resource='https://graph.windows.net' в конструктор, но, похоже, не существует эквивалентного способа сделать это при использовании get_azure_cli_credentials().

Мы делаем что-то не так, или это должно работать?

Пожалуйста, не отвечайте, что мы должны использовать ServicePrincipalCredentials. В нашем случае явно используется то, что интерактивный пользователь может создать / зарегистрировать приложение Azure с помощью Python SDK.

1 Ответ

0 голосов
/ 08 мая 2018

get_azure_cli_credentials на самом деле пока не может предоставить вам класс Credentials с определением «ресурса», отличным от ARM, на данный момент (в настоящее время: azure-common 1.1.10 и ниже)

Обойти это можно, выполнив:

from azure.common.credentials import get_cli_profile
profile = get_cli_profile()
cred, subscription_id, _ = profile.get_login_credentials(resource='https://graph.windows.net')

Пожалуйста, создайте проблему на https://github.com/Azure/azure-sdk-for-python, со ссылкой на этот SO, и я постараюсь сделать это для следующего выпуска azure-common.

(я работаю в MS и владею этим кодом)

Редактировать: Выпущена часть 1.1.11 https://pypi.org/project/azure-common/1.1.11/

from azure.common.credentials import get_azure_cli_credentials
cred, subscription_id = get_azure_cli_credentials(resource='https://graph.windows.net')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...