我有一个应用程序,该应用程序已使用正确的范围成功登录到Microsoft Graph,并使用Microsoft Graph SDK(3.18.xxx)查询SharePoint Online资源:列表,文件等
我想使用Microsoft SharePoint CSOM(16.1.xxx)访问CSOM特定功能
这些功能包括LoadClientSidePage
,以及您可以使用ClientSidePage
做的所有相关的美好事情
(请注意,如果我对用户进行“重新认证”,一切将正常进行)
不是让用户登录两次(一次是图形登录,一次是SharePoint CSOM登录)-是否具有SharePoint CSOM Auth的功能,我可以在其中交换我的Bearer:
访问令牌以获取SharePoint CSOM等价? (我可能是错的,但我认为它是WSFed
令牌)?
谢谢
答案 0 :(得分:0)
我认为有可能。您可以按如下所示将访问令牌附加到csom:
public ClientContext GetContext(Uri web, string userPrincipalName, SecureString userPassword)
{
var context = new ClientContext(web);
context.ExecutingWebRequest += (sender, e) =>
{
//get access token
e.WebRequestExecutor.RequestHeaders["Authorization"] = "Bearer " + accessToken;
};
return context;
}
如何交换令牌?
通常,一个访问令牌仅针对一种资源。但是,刷新令牌对于您的客户端已经获得同意的所有权限均有效-因此,在对scope=mail
。read的请求中发出的刷新令牌可以用于请求scope=api://contoso.com/api/UseResource
的新访问令牌。
另一种可能的方法是使用OAuth 2.0代理流。 OAuth 2.0代理流(OBO)用于应用程序调用服务/网络API的用例,该应用又需要调用另一个服务/网络API
CSOM所需的令牌与SharePoint rest API相同
如果您使用的是V1.0作者终结点,请参阅https://docs.microsoft.com/en-us/azure/active-directory/azuread-dev/v1-protocols-oauth-code#refreshing-the-access-tokens。