是否有进行AAD身份验证和使SharePoint Online身份验证的机制

时间:2020-10-22 08:26:39

标签: sharepoint csom

我有一个应用程序,该应用程序已使用正确的范围成功登录到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令牌)?

谢谢

1 个答案:

答案 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