通过Flask管理Microsoft Azure

通过Flask管理Microsoft Azure,azure,flask,oauth-2.0,azure-active-directory,azure-resource-manager,Azure,Flask,Oauth 2.0,Azure Active Directory,Azure Resource Manager,我正在开发一个使用Flask的Azure管理网站。 我在谷歌上搜索发现了以下样本: 但此示例用于访问Microsoft Graph API,而不是Azure资源管理API microsoft = oauth.remote_app( 'microsoft', consumer_key='Register your app at apps.dev.microsoft.com', consumer_secret='Register your app at apps.dev.m

我正在开发一个使用Flask的Azure管理网站。 我在谷歌上搜索发现了以下样本:

但此示例用于访问Microsoft Graph API,而不是Azure资源管理API

microsoft = oauth.remote_app(
    'microsoft',
    consumer_key='Register your app at apps.dev.microsoft.com',
    consumer_secret='Register your app at apps.dev.microsoft.com',
    request_token_params={'scope': 'offline_access User.Read'},
    base_url='https://graph.microsoft.com/v1.0/',
    request_token_url=None,
    access_token_method='POST',
    access_token_url='https://login.microsoftonline.com/common/oauth2/v2.0/token',
    authorize_url='https://login.microsoftonline.com/common/oauth2/v2.0/authorize'
)
我认为将
base\u url
更改为
https://management.azure.com/
基于以下文档:

但是这个代码不起作用

您能告诉我如何使用Flask+OAuth2(支持的MSAL)和Azure管理API吗


或者,是否存在Python的MSAL?

请参考Azure AD v2.0端点。v2.0端点仅为以下对象颁发访问令牌:

请求令牌的应用程序。如果逻辑应用程序由几个不同的组件或层组成,则应用程序可以为自己获取访问令牌。要查看此场景的实际效果,请查看我们的入门教程

Outlook邮件、日历和联系人REST API,它们都位于。要了解如何编写访问这些API的应用程序,请参阅Office入门教程

微软图形API。您可以了解有关Microsoft Graph和可用数据的更多信息


因此,Azure AD v2.0端点当前不支持Azure资源管理API。

您可以通过如下更改配置来修改同一烧瓶示例应用程序以使用v1端点:

microsoft = oauth.remote_app(
    'microsoft',
    consumer_key='Register your app at apps.dev.microsoft.com',
    consumer_secret='Register your app at apps.dev.microsoft.com',
    base_url='https://management.azure.com',
    request_token_url=None,
    access_token_method='POST',
    access_token_url='https://login.microsoftonline.com/common/oauth2/token',
    authorize_url='https://login.microsoftonline.com/common/oauth2/authorize?resource=https://management.azure.com/'
)
subscriptions = microsoft.get('subscriptions?api-version=2015-01-01')
需要指出的关键差异:

  • 删除请求\u令牌\u参数块
  • 基本url
    替换为
    https://management.azure.com
  • authorize\u url
    替换为
    authorize\u url=https://login.microsoftonline.com/common/oauth2/authorize?resource=https://management.azure.com/“
然后可以按如下方式调用API:

microsoft = oauth.remote_app(
    'microsoft',
    consumer_key='Register your app at apps.dev.microsoft.com',
    consumer_secret='Register your app at apps.dev.microsoft.com',
    base_url='https://management.azure.com',
    request_token_url=None,
    access_token_method='POST',
    access_token_url='https://login.microsoftonline.com/common/oauth2/token',
    authorize_url='https://login.microsoftonline.com/common/oauth2/authorize?resource=https://management.azure.com/'
)
subscriptions = microsoft.get('subscriptions?api-version=2015-01-01')

我想使用“Azure Active Directory v2.0端点”:谢谢!但这是为v1端点。。。不过我希望运行v1端点,所以非常有助于您的建议!我的最新代码:microsoft=oauth.remote\u app('microsoft',consumer\u key='',consumer\u secret='',base\u url='',request\u token\u url=None,access\u-token\u-method='POST',access\u-token\u-url='',authorize\u-url='')对不起,我无法更新第一个代码段,只是说出了所谓的差异(我没有这样做)。谢谢你的编辑,现在它是正确的。谢谢!我发现了这部电影: