在 Python 中将资源 ID 从 ADAL 转换为 MSAL
Converting Resource ID from ADAL to MSAL in Python
我们的系统需要访问 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 that is also available as a pypi package.
您可以使用 /.default
范围来帮助将您的应用程序从 v1.0 终结点 (adal) 迁移到 Microsoft 标识平台终结点 (msal)。例如,范围值 https://graph.microsoft.com/.default
在功能上与 v1.0 端点 resource=https://graph.microsoft.com
相同。
resource_id = "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX"
scopes = [ f"{resource_id}/.default" ]
参考:
我们的系统需要访问 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 that is also available as a pypi package.
您可以使用 /.default
范围来帮助将您的应用程序从 v1.0 终结点 (adal) 迁移到 Microsoft 标识平台终结点 (msal)。例如,范围值 https://graph.microsoft.com/.default
在功能上与 v1.0 端点 resource=https://graph.microsoft.com
相同。
resource_id = "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX"
scopes = [ f"{resource_id}/.default" ]
参考: