【发布时间】:2020-03-05 10:07:29
【问题描述】:
我们的系统需要访问Azure 中的资源,因此在我们当前的身份验证代码中,我们支持ADAL,可以很好地实现此目的。
现在MSAL 正在取代ADAL,我们希望抢先添加对它的支持。我们现在正在创建一个函数,它使用 MSAL 而不是 ADAL 生成 oauth2 access_token。
我们已关注migration guide,但有一个问题我们没有找到答案。
当使用ADAL 时,我们将提供一个resource_id,其中包含一个标识我们正在谈论的系统的ID。通常这个resource_id 是从 Azure 门户复制的。
在MSAL 中没有resource_id,而是应该使用scopes 的列表。如果我们天真地使用现有的resource_id 作为这样的范围:
resource_id = "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX"
scopes = [ resource_id ]
我们得到以下错误:
Error fetching MSAL token (invalid_scope):
AADSTS70011: The provided request must include a 'scope' input parameter.
The provided value for the input parameter 'scope' is not valid.
The scope XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX is not valid.
E Trace ID: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
E Correlation ID: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
E Timestamp: 2020-03-05 09:36:03Z
所以问题是,将 XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX 形式的资源 ID 准备为 MSAL 的有效范围的正确方法是什么??
编辑:这个问题的答案已经过测试并在一个小型 Python 包中使用,以简化使用名为 requests_ms_auth 的请求对 Azure 进行身份验证,该请求也可用作 pypi package。
【问题讨论】:
-
@Raghavendra 谢谢,但我不明白它是如何相关的?该问题中没有提到将 resource_id 移植到范围
标签: python azure token adal msal