“拒绝访问”使用应用程序权限访问SharePoint Online网站集

约翰

我已经使用网站集/AppRegNew.aspx页面在SharePoint Online中创建了一个应用程序主体,然后使用/appInv.aspx页面使用以下权限XML授予了网站集的应用程序主体FullControl:

<AppPermissionRequests>
  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl"/>
</AppPermissionRequests>

但是,当我尝试使用CSOM和c#(使用TokenHelper.cs)访问该网站集中的列表时,出现错误:

'Access denied. You do not have permission to perform this action or access this resource.'

我还有另一个应用程序负责人,我已授予租户管理员进行测试的权限-如果我使用与该应用程序负责人关联的ClientID和ClientSecret,则我的代码可以正常运行(我正在阅读一些测试列表)

我对AppPermissionRequests XML做错了吗?我还缺少其他步骤吗?我可以使用Tenant Admin App Principal,但我想以“正确”的方式进行操作-从我的研究来看,它似乎应该与SiteCollection FullControl权限一起使用。

我用来尝试访问的示例代码:

        Uri siteUri = new Uri("https://MyCompany.sharepoint.com/sites/johntest");
        string realm = TokenHelper.GetRealmFromTargetUrl(siteUri);
        string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken;
        using (ClientContext context = TokenHelper.GetClientContextWithAccessToken(siteUri.ToString(), accessToken))
        {

            Web thisWeb = context.Web;
            context.Load(thisWeb);
            context.ExecuteQuery();
            List roomsList = context.Web.Lists.GetByTitle("Rooms");
            context.Load(roomsList);
            context.ExecuteQuery();
            Console.WriteLine("List retrieved");
            CamlQuery camlQuery = new CamlQuery();
            camlQuery.ViewXml = "<View><Query><Where><Eq><FieldRef Name='Title'/><Value Type='Text'>SomeValue</Value></Eq></Where></Query></View>";
            ListItemCollection listItems = roomsList.GetItems(camlQuery);
            context.Load(listItems);
            context.ExecuteQuery();
            Console.WriteLine("Query succeeded");
        }
埃里克·鲍登(Eric Bowden)

因为您正在使用应用程序登录名访问资源,所以通过使用TokenHelper.GetAppOnlyAccessToken,必须将AllowAppOnlyPolicy =“ true”属性添加到AppPermissionRequest。

温馨提示,在AllowAppOnlyPolicy属性为true时,应将客户端ID和客户端机密视为用户名和密码,尤其是在应用程序具有高特权(例如租户管理员或对网站集的完全控制)的情况下。无论如何,应该保护客户端机密,但是,如果AllowAppOnlyPolicy为false,则必须将其与经过身份验证的用户结合使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用v1 Azure AD应用程序和客户端凭据访问Sharepoint Online API

firebase SSR问题,“应用程序请求访问您的Google帐户的权限”弹出,而不是网站

Azure 应用程序使用 Microsoft Graph 读取 SharePoint Online 的权限

Xamarin-Android应用程序无法再访问网站

“允许从该网站访问以下应用程序”提示-Java

从网站访问CSV文件并读入R Shiny应用程序

使用PhoneGap作为移动应用程序启动网站,并可以访问phonegap插件

Sharepoint 网站集

无法使用任何帐户访问网站集

如何在 Facebook 开发者网站中删除我的应用程序被拒绝的权限?

通过 PowerShell 授予 Azure 应用程序对 API(例如“Office SharePoint Online”)的权限

程序集 - 尝试写入文件但访问被拒绝

将应用程序权限范围限制为特定网站集

访问node.js应用程序azure应用服务时获取权限被拒绝

使用应用程序权限访问收件箱?

应用程序修剪时将整个程序集标记为动态访问

拒绝在应用程序外部访问文档

http错误503服务不可用。应用程序池在访问网站时停止

我可以检测我的PWA是作为应用程序启动还是作为网站访问的?

如何阻止访问Wi-Fi网络上的特定网站和应用程序?

发布新书后,如何从学校报纸网站上访问文章并更新我的应用程序?

用于网站的Facebook登录应用程序只能通过VPN URL:10.0.0访问

访问设备上的android应用程序数据库(权限被拒绝)

Angular 应用程序成功部署在 Azure 上,但访问它时出现权限被拒绝的消息

使用自定义应用程序打开SharePoint Online文档

使用Microsoft Graph API获取SharePoint Online团队网站

在 SharePoint Online 上部署 ASP.NET 应用程序

从控制台应用程序获取SharePoint网站的标题

发布打包为SharePoint Online门户的自动托管应用程序的Office应用程序