Microsoft MSAL - 获取多个范围的令牌

2024-01-31

在 Azure Active Directory 中,我有一个应用程序需要在以下范围内使用 MicrosoftGraphAPI 和 SharePointAPI:

GraphAPI scopes:

"https://graph.microsoft.com/User.Read.All",
"https://graph.microsoft.com/Group.Read.All",
"https://graph.microsoft.com/Sites.Read.All",
"https://graph.microsoft.com/Calendars.Read.Shared",
"https://graph.microsoft.com/MailboxSettings.Read",
"https://graph.microsoft.com/Files.Read.All"

SharePointAPI scopes:

"https://microsoft.sharepoint-df.com/AllSites.Read",
"https://microsoft.sharepoint-df.com/AllSites.FullControl",
"https://microsoft.sharepoint-df.com/User.Read.All"

我正在尝试获取该应用程序的令牌:

from msal import PublicClientApplication
AUTHORITY = 'https://login.microsoftonline.com/common'

scopes = [ "https://microsoft.sharepoint-df.com/AllSites.Read",
           "https://microsoft.sharepoint-df.com/AllSites.FullControl",
           "https://microsoft.sharepoint-df.com/User.Read.All"
           "https://graph.microsoft.com/User.Read.All",
           "https://graph.microsoft.com/Group.Read.All",
           "https://graph.microsoft.com/Sites.Read.All",
           "https://graph.microsoft.com/Calendars.Read.Shared",
           "https://graph.microsoft.com/MailboxSettings.Read",
           "https://graph.microsoft.com/Files.Read.All"
         ]

app = PublicClientApplication(client_id, authority=AUTHORITY)
flow = app.initiate_device_flow(scopes=scopes)

但是在 WebUI 中批准该应用程序后,我收到以下错误:

'error_description': 'AADSTS28000: Provided value for the input parameter scope is not valid 
because it contains more than one resource. Scope https://graph.microsoft.com/Calendars.Read.Shared 
https://graph.microsoft.com/Files.Read.All https://graph.microsoft.com/Group.Read.All 

https://graph.microsoft.com/MailboxSettings.Read https://graph.microsoft.com/Sites.Read.All 

https://graph.microsoft.com/User.Read.All https://microsoft.sharepoint-df.com/AllSites.FullControl 
https://microsoft.sharepoint-df.com/AllSites.Read https://microsoft.sharepoint-df.com/User.Read.All 
offline_access openid profile is not valid'

这是预期的行为。您不能混合资源(图表、共享点等),但您可以使用相同的刷新令牌为每个附加资源获取 1 个访问令牌 https://learn.microsoft.com/en-us/azure/active-directory/azuread-dev/v1-protocols-oauth-code#refreshing-the-access-tokens.

您可以在 MSAL 中实现这一目标调用以下方法 https://learn.microsoft.com/en-us/dotnet/api/microsoft.identity.client.publicclientapplication.microsoft-identity-client-ibyrefreshtoken-acquiretokenbyrefreshtoken?view=azure-dotnet#Microsoft_Identity_Client_PublicClientApplication_Microsoft_Identity_Client_IByRefreshToken_AcquireTokenByRefreshToken_System_Collections_Generic_IEnumerable_System_String__System_String_:

PublicClientApplication.AcquireTokenByRefreshToken(IEnumerable<string> scopes, string refreshToken);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Microsoft MSAL - 获取多个范围的令牌 的相关文章

随机推荐

  • 如何从保存的 XGBoost 模型获取参数

    我正在尝试使用以下参数训练 XGBoost 模型 xgb params objective binary logistic eval metric auc lambda 0 8 alpha 0 4 max depth 10 max delt
  • 闪亮降级fontawesome 5至4

    我正在做一个与 fontawesome 4 7 非常相关的闪亮项目 它给我们带来了巨大的价值 作为 fontawesome 的免费用户 我认为升级到 5 3 1 没有任何优势 许多免费图标变得更加丑陋 粗糙 并且必须付费购买专业版才能获得类
  • Windows 8 上的 Visual Studio 2008/2010 - 问题?

    我正在寻找有关在 Windows 8 x64 上使用 Visual Studio 2008 和 2010 的问题所提供的任何信息 我已经找到了以下内容article http support microsoft com kb 2735834
  • 结合网格/包 Tkinter

    我知道过去关于网格和包有很多问题 但我只是不明白如何将两者结合起来 因为我在两个方向 行 列 扩展我的 表格 时遇到困难 我希望按钮保持相同的大小 但始终位于窗口底部 然而 我希望通过调整窗口大小来自动扩展 表格 但似乎无法使其工作 将 w
  • iOS 中的 Crashlytics 无法继续执行 Fabric 应用程序中的“构建您的项目”

    我正在为我的 iOS 应用程序安装 Crashlytics 我通过他们的网站链接下载了它 并完成了集成框架 添加运行脚本等的所有步骤 我遇到了问题 因此我删除了框架并决定重新开始并尝试全新安装 但是 Fabric 应用程序更新到了较新的版本
  • 解析推送通知:发生另一个错误

    自从昨晚用 Parse 测试以来 我遇到了一个奇怪的问题 我能够很好地发送推送通知 但现在当我通过在线解析推送通知工具发送推送通知时 我的推送通知都没有被发送 Edited好吧 看来这只是本地环境的问题 当我测试推送通知到通过试飞安装的测试
  • 拥有.apk可以提取其源代码。 Android 应用程序安全吗? [复制]

    这个问题在这里已经有答案了 我开发 Android 应用程序 其中一些代码非常私密和机密 我将加密算法放入我的代码中以提高安全性 但最近我读到 当人们拥有 apk 文件时 他们可以 100 正确地提取 java 源代码Source http
  • 为什么我的 Trie 查找比标准 F# Map 的查找慢?

    所以 我只是从 OCaml 移植了 Trie 不幸的是 就 tryFind 而言 它的运行速度比标准 Map 慢 我不明白这一点 特里树似乎应该更快 F 的代码库是否以某种特殊方式构建 以使它们比用户通常部署的代码更快 这是代码
  • XSD 指定在 XML 中只能使用一次的属性

    拥有一个具有多个属性的复杂类型
  • C++ 复合模板类工厂

    是否可以制作一个复合模板类工厂而无需手动指定所有组合 我的意思是如果我有这些课程 class CompositeBase template lt typename C1 typename C2 typename C3 gt class Co
  • log4net的线程安全

    似乎有一些关于log4net是否线程安全的讨论 共识是框架是线程安全的 但appender不是 需要正确使用才能实现线程安全 有人可以对此进行一些说明 并可能给出以线程安全方式使用 RollingFileAppender 的示例吗 是否需要
  • 如何将多个属性绑定连接成一个

    我有一个 OData 源 它提供的结果行包含first name last name 我想将它们显示在一个表中 其中有一列名为全名 我正在尝试使用 JSView 它似乎比 XML 更简洁 我可以像这样进行 1 1 绑定 var templa
  • 在任何情况下,直接返回结构是一种好的做法吗?

    IMO 所有直接返回结构的代码都可以修改为返回指向结构的指针 什么时候直接返回结构是一种好的做法 怎么修改 返回指向函数内结构体静态实例的指针 从而使函数不可重入 或者通过返回一个指向堆分配结构的指针 调用者必须确保释放该结构并正确执行此操
  • 错误:在ExternalContext 中未找到/login.xhtml 作为资源

    我将 JBoss 7 1 与 JSF 2 1 Prime Faces 一起使用 并不断遇到标题中列出的错误 我已经尝试了这里提出的许多建议 但最终都出现了相同的错误 文件结构为 WEB INF faces login xhtml 我在 we
  • 如何限制Stream按顺序运行,并防止它并行运行?

    我有一个方法返回从自定义分割器生成的流 分离器并不安全 由于分离器并不安全 并且它保持状态 因此我想防止它并行运行 有没有办法prevent并行运行返回的流 我无法找到任何执行此操作的文档或示例 我确实找到了一个sequential 方法上
  • 可变参数宏:无法通过“...”传递非平凡可复制类型的对象

    我正在尝试为日志机制编写一个宏 我写了一个可变参数宏 但它不起作用std string 代码如下所示 include
  • 如何使用 Send Message() 而不是 SendInput() 来模拟硬件按键按下?

    我一直在尝试对阻止 Windows GDI API 可能通过 API 挂钩 的游戏进行屏幕捕获 因此我无法使用旧的BitBlt 不幸的是 用于捕获屏幕 每当我打电话BitBlt 它失败并显示错误代码 126 ERROR MOD NOT FO
  • solr 中的建议组件错误

    我正在使用 solr 自动完成功能 我正在使用 solr 4 50 来构建我的应用程序 并且我正在关注this http lucene 472066 n3 nabble com auto completion search with sol
  • 如何检查 Node.js `Buffer` 是否包含有效的 UTF-8?

    我有一个Buffer https nodejs org api buffer html对象 我想检查所有内容是否都是有效的 UTF 8 理想情况下 我想得到一个string也包含所述解码的 UTF 8 文本 I tried Buffer t
  • Microsoft MSAL - 获取多个范围的令牌

    在 Azure Active Directory 中 我有一个应用程序需要在以下范围内使用 MicrosoftGraphAPI 和 SharePointAPI GraphAPI scopes https graph microsoft co