通过Flask管理Microsoft Azure
我正在开发一个使用Flask的Azure管理网站。 我在谷歌上搜索发现了以下样本: 但此示例用于访问Microsoft Graph API,而不是Azure资源管理API通过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
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/“
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='')对不起,我无法更新第一个代码段,只是说出了所谓的差异(我没有这样做)。谢谢你的编辑,现在它是正确的。谢谢!我发现了这部电影: