SharePoint 2013针对提供程序托管的应用程序的未授权例外

时间:2013-04-13 11:19:43

标签: host provider sharepoint-2013

我在主机端收到“未授权”例外,以获取提供商托管的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();
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}

已安装证书,已停用Anonymos访问权限。我无法理解这个问题的原因。

3 个答案:

答案 0 :(得分:2)

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

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

以下是实施OAuth的方法:http://msdn.microsoft.com/en-us/library/office/jj687470(v=office.15).aspx

答案 1 :(得分:1)

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

Get-SPTrustedSecurityTokenIssuer |选择Name,RegisteredIssuerName

答案 2 :(得分:0)

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

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

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

相关问题