(spfx) 授予的权限是否可以超出当前登录用户的权限?

(spfx) Can the granted permissins extend beyond the permissions of the currently logged in user?

我使用 SharePoint 框架是因为我想使用 MSGraphClient 通过 Graph API 访问 Teams 消息。

我有两个最终目标:

我知道权限范围必须由 Sharepoint 管理中心的管理员批准。但是,我对这些权限的实际范围有些困惑,请记住,我需要遵守当地的数据保护法,所以我的 app/webpart 可能无法访问所有内容。

我想知道 Sharepoint 管理员授予我的 MSGraphClient 的权限是否可以超出当前登录用户的权限。 我无法从文档中看出在哪些情况下权限是委托的,在哪些情况下它们是实际的应用程序权限。

例如,如果我的MSGraphClient被授予权限“ChannelMessage.Read.All”,那么当前登录的用户是否可以读取所有用户的“所有”消息,或者只能读取他实际有权访问的那些消息? 是否已委托通过 Sharepoint 管理中心授予的所有权限? 除此之外,如果我想访问消息而不管当前登录用户的权限如何,我是否需要使用来自 Azure 的应用程序令牌?如果是这样,是否可以将这些权限限制为仅包括特定 Teams 频道的阅读权限?

SPFx Web 部件的权限不能超出当前登录的用户。要获得扩展权限,您需要服务器端代码。在分享点,你要找的东西大概叫app-only permissions.

对于浏览器中 运行 的 SPFx Web 部件,这是不可能的(并且没有任何意义,因为这会立即危及安全性)。也就是说,SPFx web 部件不能做比用户能做的更多的事情。

对于您的情况,我会构建一个服务,该服务已授予所有必要的权限。基本上,一个普通的网络应用程序,托管在服务器上(可以是 azure 函数的形式或普通的网络应用程序,即网站),当被调用时,它会去存档这些消息。此应用程序应该有权访问它需要存档的所有频道。那么这个应用程序可以提供一些可以从您的 Web 部件调用的 API(以防您仍然需要 Web 部件)

然后在该服务器应用程序中,您可以验证用户是否具有适当的权限来执行他打算执行的操作。您在服务器端代码中执行此操作,用户无权访问该代码。在浏览器中(在 JavaScript 中)这样做没有任何意义,因为用户在浏览器中具有对 JavaScript 的完全访问权限,并且可以以任何他想要的方式对其进行编辑。