0

对于 SharePoint 2013 的提供商托管应用程序,我在主机端收到“未经授权”异常。

Uri hostWeb = new Uri(Request.QueryString["SPHostUrl"]);
using (var clientContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWeb, Request.LogonUserIdentity))
{
    clientContext.Load(clientContext.Web, web => web.Title);
    clientContext.ExecuteQuery();
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}

证书已安装,匿名访问被禁用。我无法理解这个问题的原因。

4

3 回答 3

2

我之前遇到过完全相同的问题......我通过实施 OAuth 解决了它,并让它重定向到具有“写入”权限的应用程序主页。Response.Redirect(TokenHelper.GetAuthorizationUrl("mysharepoint.com", "Web.Write", "myapp.com/default.aspx"));

基本上,它的作用是使用您的共享点站点对登录用户进行身份验证,一旦通过身份验证,它将重定向(具有写入权限)到您的应用程序站点。

以下是如何实现 OAuth: http: //msdn.microsoft.com/en-us/library/office/jj687470 (v=office.15).aspx

于 2014-08-18T21:19:10.833 回答
1

看起来这是高信任应用程序。如果您已经用尽了http://msdn.microsoft.com/en-us/library/fp179932.aspx上的提示,那么就会出现格式错误的 SPTrustedSecurityTokenIssuer。您可以使用下面的 PS 找出所有这些。理想情况下,它应该是 IssuerId@Realm。如果有一个不是,则将其删除。但请记住不要删除第一个用于工作流的

获取 SPTrustedSecurityTokenIssuer | 选择名称,注册发行人名称

于 2013-04-29T18:34:05.700 回答
0

首先,您必须检查“Request.LogonUserIdentity”中的用户。实际上,当您的用户无法在 IIS 中访问您的站点时,就会发生这种情况。因此要在“Request.LogonUserIdentity”中设置正确的用户,请按照以下步骤操作:

打开您的 IIS --> 身份验证 --> 匿名身份验证 --> 编辑 --> 特定用户 [您在“Request.LogonUserIdentity”中获得的用户]。--> iis 重置

现在用户有权访问您的 IIS 站点。

于 2013-11-27T06:52:28.187 回答