我如何使用 flask dance make_azure_blueprint 获得多个 API 范围

how do I get multiple API scopes using flask dance make_azure_blueprint

我使用 flask dance make_azure_blueprint.

将一个可用的 azure 身份验证层设置为一个 flask 应用程序
blueprint = make_azure_blueprint(
    client_id=client_id,
    client_secret=client_secret,
    tenant=tenant_id,
    scope=[
        scopes.Email,
        scopes.DirectoryReadAll,
        scopes.OpenID,
        scopes.Profile,
        scopes.UserRead,
        scopes.UserReadAll,
        
                ],
    login_url=LOGIN_URL_PATH,
    authorized_url=AUTH_CALLBACK_URL_PATH,
    redirect_url='http://localhost:5000/',
)
app.register_blueprint(blueprint, url_prefix="/login")

范围是: 范围 -

DirectoryReadAll = 'Directory.Read.All'
Email = 'email'
GroupMemberReadAll = 'GroupMember.Read.All'
Profile = 'profile'
OpenID = 'openid'
UserReadBasicAll = 'User.ReadBasic.All'
UserRead = 'User.Read'
UserReadAll = 'User.Read.All'

使用它我能够检索用户信息并显示在应用程序上。现在我正在尝试结合 Azure 时间序列见解范围“https://api.timeseries.azure.com//user_impersonation”。但这返回了一个错误,指出这不能与资源特定组混合。 enter image description here

您的需求无法满足。

您似乎试图访问两个 api 的 default 范围和 user_impersonation 范围。实际上我们不能使用多个作用域来访问 apis.

你应该把你想访问的 api 放在范围内。例如,如果要访问 MS 图 api,则可以输入 https://graph.microsoft.com/.default。如果要访问自定义 api,可以输入 api://{back-end app client api}/scope name.