0

在 .Net 6 环境中使用pnp.Framework时。我需要经过身份验证的客户端上下文来获取 Sharepoint 数据,但在运行context.ExecuteQuery()时面临 403forbidden 。

我想使用 clientId 和 clientSecret 身份验证模式将数据从我的客户端获取到我的环境,但面临 403 禁止请求。

我在特定的 Azure Active Directory 中注册了 App 并添加了以下权限。

在此处输入图像描述

using PnP.Framework;
using System.Security;
using System.Web;

namespace SharePointOnlinePNPProject
{
    public class Program
    {
        static async Task Main(string[] args)
        {
            string appID= "appId/clientId";
            string tenantId = "<tenantId>";
            string clientSecret = "";
            string queueTestingLink = "Input sharepoint url";
            Uri site = new Uri("https://clientDomain.sharepoint.com");
            string filePath= "/Shared Documents/Case Studies"

            SecureString password = new SecureString();
            foreach (char c in passcode)
            {
                password.AppendChar(c);
            }
            var scopes = new string[] { hostLink + ".default" };
            try
            {
               
                using (var context = new AuthenticationManager().GetACSAppOnlyContext(site.OriginalString, appID, clientSecret))
                {
                    var folder = context.Web.GetFolderByServerRelativeUrl(filePath);
                   
                   
                    context.Load(folder);
                    context.ExecuteQuery();
                    Console.WriteLine(folder.Name);
                }


            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
    }
}
4

1 回答 1

0

使用 Sharepoint Admin Center 创建应用程序并使用该应用程序 ID客户端密码来获取经过身份验证的客户端上下文。我能够访问上面发布的相同代码中的数据。

请按照以下博客配置应用程序并获取凭据。 https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs

Microsoft 停止了 AzureAD 应用程序访问,以对 sharepoint AppOnly Access 进行身份验证。除非我们愿意在 AzureAd 中添加自签名证书,否则使用该方法是没有用的。

在此处输入图像描述

于 2022-02-18T11:33:07.397 回答