我被困住了,需要建议。 我有一个使用Excel作为计算引擎的MSGraph功能。 我的桌面应用程序访问OneDrive上的Excel工作簿,输入一些值并读出结果。 我已经在模拟用户时使用委派权限“ Files.ReadWrite”来做到这一点,以避免应用程序每次执行/访问工作簿时都请求许可。 但是,当将功能转移到.Net Web应用程序时,我遇到了麻烦。 .Net不允许此功能: “非交互请求,通过用户名/密码身份验证从授权机构获取安全令牌。仅在.net桌面和.net核心上可用。” 因此,我将代码移到了以.core编写的REST服务中。 然后我得到了: StatusCode“:500, “消息”:“发生一个或多个错误。(AADSTS53003:访问已被阻止 条件访问策略。访问策略不允许令牌发行。 如果我的应用程序具有应用程序权限“ Files.ReadWrite.All”,我想我可以解决所有这些问题? 我对吗? 我们的IT部门认为应用程序权利太危险了。 在应用程序上拥有这些权利并限制可访问性(允许应用程序访问哪些对象)有什么中间途径?
答案 0 :(得分:1)
我想如果我的应用程序有该应用程序,我可以解决所有这些问题 是“ Files.ReadWrite.All”权限吗?我说的对吗?
根据您的提示消息:Non-interactive request to acquire a security token from the authority, via Username/Password Authentication. Available only on .net desktop and .net core.
显然,您不能在.Net Web应用程序上使用委派的权限,因为它是没有用户交互(即没有用户登录)的请求,因此您不能使用基于用户名/密码的身份验证来获取访问权限令牌。您需要为应用程序授予应用程序权限,然后使用client credential flow获取访问令牌。
但是具有“应用程序权限”“ Files.ReadWrite.All”的应用程序可以读取全部 组织中所有OneDrive上的文件?有什么中间的地方吗 在应用上拥有这些权利,并限制可访问性, 该应用可以访问哪些对象?
您可以根据要访问的MS graph api向应用程序授予适当的访问权限。我认为 Files.ReadWrite.All 应用程序权限可以读取组织中所有OneDrive上的所有文件。
对于委派权限和应用程序权限,它们之间的本质区别在于是否存在用户登录名:
应用程序权限允许Azure Active Directory中的应用程序充当其自己的实体,而不是代表特定用户。
委派的权限允许Azure Active Directory中的应用程序代表特定用户执行操作。
因此,我认为您可以放心使用应用程序权限。