【问题标题】:High Trust S2S Provider Hosted App with "App + User" Policy采用“应用 + 用户”策略的高信任 S2S 提供商托管应用
【发布时间】:2015-02-10 22:48:24
【问题描述】:

我对 Sharepoint 应用程序开发比较陌生。

尝试使用应用 + 用户策略创建本地、高信任提供商托管应用。我按照下面的文档创建了一个演示。

https://msdn.microsoft.com/library/office/fp179901(v=office.15) http://blogs.msdn.com/b/russmax/archive/2014/06/23/part-1-intro-to-provider-hosted-apps-setup-the-infrastructure.aspx

我面临的问题很少,如果有人可以提供帮助,我有一些问题需要澄清。

1) 当我在开发工具中检查我的请求时,它会为我提供以下表单数据。

SPAppToken:

SPSiteUrl:

SPSiteTitle:首页

SPSiteLogoUrl:

SPSiteLanguage:zh-CN

SPSiteCulture:zh-CN

SPRedirectMessage:EndpointAuthorityMatches

SPErrorCorrelationId:f069e89c-a0cd-20ce-a1c0-7db95db0334b

现在,当我检查具有上述关联 ID 的日志时,我发现以下错误。

-- 获取应用程序 i:0i.t|ms.sp.ext|ab8ff461-bc75-4516-b475-b666ac47eec0@802f23e1-6e11-45d1-909c-07a7b0ab0ce2 的令牌时出错, 异常:Microsoft.SharePoint.SPException:Azure 访问控制 服务不可用。
-- 从 appredirect.aspx 为站点请求的应用程序令牌:92bfe5c4-7255-4b09-a89a-07e0e2b03622 但出现错误 生成它。这可能是我们不需要令牌或当 应用程序主体未正确设置。 -- 获取异常 Microsoft.SharePoint.SPException 的错误消息:Azure 访问控制服务是 不可用。

a) 我相信高度信任的应用程序不应该寻找 Azure ACS。 这个错误是因为一些不正确的配置吗? b) SPAppToken 在这里为空。在高信任应用程序的情况下它是否始终为空?

2) 假设我使用用户 A 登录 sharepoint 并尝试启动 sharepoint 应用程序。 在应用程序代码中,我想获取登录用户的身份(即 A)。从下面的代码中,我发现 Request.LogonUserIdentity 为我提供了用户 A 的身份。但是我们如何确定该请求仅来自共享点。我可以复制相同的应用程序 URL 并粘贴到浏览器窗口中,然后使用窗口凭据登录并获得相同的结果。所以问题是我如何验证它的合法请求是否仅来自共享点并且没有人伪造请求。 ALos,当我在开发工具中检查请求时,它在请求标头中传递了授权密钥。这有什么用?

using (var clientContext = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWeb, Request.LogonUserIdentity))             {                    clientContext.Load(clientContext.Web, web => web.Title);                clientContext.ExecuteQuery();                   Response.Write(clientContext.Web.Title);             }

3) 另外,如果我的应用不支持 Windows 身份验证且仅支持 FBA,会发生什么情况,在这种情况下有什么方法可以获取用户身份?

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 你曾经解决过这个问题吗?我面临着类似的问题,在我的情况下,我得到“Azure 访问控制服务不可用”。我的 OnPerm SharePoint 2016 环境出错。

标签: sharepoint sharepoint-2013 sharepoint-apps


【解决方案1】:

对于问题 #1:在我看来,this section(来自您提到的第一篇 MSDN 文章)中的第 9 步(配置身份验证设置)被遗漏了,即选择了“ACS 控制服务”而不是“使用证书”选项。

对于问题 #2:TokenHelper.cs 中有帮助方法来验证来自 HttpRequest 的 AccessToken,从而识别请求的有效性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-02
    相关资源
    最近更新 更多