我被困住了需要建议。我有一个MSGraph功能,它使用Excel作为计算马达。我的桌面应用程序访问OneDrive上的Excel工作簿,输入一些值并读出结果。在模拟用户时,我成功地使用了委托权限"Files.ReadWrite“来完成此操作,以避免应用程序每次请求执行/访问工作簿的权限。但是,当将功能转移到.Net web应用程序时,我遇到了麻烦。.Net不允许这种功能:“非交互式请求,通过用户名/密码身份验证,从权威机构获取安全令牌。只能在.net桌面和.net核心上使用。”因此,我已经将代码移到用.core编写的REST服务中。然后我得到了以下信息: StatusCode":500“,"Message":”一个或多个错误发生了。(AADSTS53003:访问已被条件访问策略阻止。访问策略不允许令牌颁发。我认为如果我的应用程序拥有"Files.ReadWrite.All“的应用权限,我可以解决所有这些问题?我说的对吗?我们的IT部门认为应用程序权限太危险了。有什么中间通道,有这些权利在应用上,并限制可访问性,哪些对象的应用程序被允许访问?
发布于 2020-10-07 09:44:19
我认为如果我的应用程序拥有"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应用程序上使用委托的权限,因为它是一个没有用户交互的请求(即没有用户登录),因此您不能使用基于用户名/密码的身份验证来获得访问令牌。您需要将应用程序权限授予应用程序,然后使用客户凭证流获取访问令牌。
但是,拥有应用程序权限"Files.ReadWrite.All“的应用程序可以读取组织中所有OneDrives上的所有文件吗?有什么中间通道,有这些权利在应用上,并限制可访问性,哪些对象的应用程序被允许访问?
可以根据要访问的MS图api向应用程序授予适当的访问权限。我认为Files.ReadWrite.All应用程序权限可以读取组织中所有OneDrive上的所有文件。
对于委托权限和应用程序权限,它们之间的根本区别在于是否存在用户登录:
应用程序权限允许Azure Active中的应用程序充当自己的实体,而不是代表特定用户。
委托权限允许Azure Active中的应用程序代表特定用户执行操作。
因此,我认为您可以自信地使用应用程序权限。
https://stackoverflow.com/questions/64238682
复制相似问题