使用 PNP.Framework 获取用户上下文以在 ASP.NET Web 应用程序中连接 SharePoint Online

问题描述 投票:0回答:1

我们需要从 ASP.NET Web 应用程序连接到 SharePoint Online。为此,我们在 Azure AD 中注册了一个应用程序,并授予了

Sites.FullControl.All
应用程序权限,并添加了一个证书以从 ASP.NET 应用程序访问 Azure AD 应用程序。

在 ASP.NET Web 应用程序中,为了获取客户端上下文,我们使用了以下代码:

PnP.Framework.AuthenticationManager authManager = PnP.Framework.AuthenticationManager.CreateWithCertificate(clientID, certPhysicalPath, certPassword, tenantID);
var context = await authManager.GetContextAsync(siteURL);

我们在此处获得的上下文是仅应用程序上下文,如果我们在 SharePoint 列表中插入一个项目,则该项目的创建者将显示为“SharePoint 应用程序”。

我们尝试在同一应用程序中授予

AllSites.FullControl
的委派权限。但我们找不到任何选项来使用 PNP.Framework 创建用户特定的客户端上下文。

我们正在尝试通过使用 PNP.Framework 的 Web 登录方法来获取用户上下文。谁能给我们一些关于如何在 ASP.NET Web 应用程序中完成此操作的指示。

c# asp.net sharepoint-online csom pnp-framework
1个回答
0
投票

要使用 PnP.Framework 获取 ASP.NET Web 应用程序中的用户上下文,您可以使用 AuthenticationManager 类和 GetUserContext 方法,而不是 CreateWithCertificate 方法,后者用于仅应用程序身份验证。

这是实现用户上下文的通用方法:

使用 GetUserContext 方法:此方法允许您以交互方式对用户进行身份验证,这将为您提供用户上下文。

实现Web登录:您可以通过Web登录对话框提示用户登录。这通常涉及将用户重定向到 Azure AD 登录页面,然后处理回调以检索访问令牌。

示例代码:

using PnP.Framework;
   using Microsoft.SharePoint.Client;
   
   // Assuming you have the necessary parameters
   string siteUrl = "https://yourtenant.sharepoint.com/sites/yoursite";
   var authManager = new AuthenticationManager();
   
   // Get user context
   using (var context = authManager.GetUserContext(siteUrl))
   {
       // Now you can perform operations with the user context
       context.Load(context.Web);
       context.ExecuteQuery();
       Console.WriteLine(context.Web.Title);
   }
© www.soinside.com 2019 - 2024. All rights reserved.