1

我对 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:

网站网址:

SPS网站标题:首页

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,会发生什么情况,在这种情况下有什么方法可以获取用户身份?

任何帮助将非常感激。

谢谢

4

1 回答 1

1

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

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

于 2015-02-11T18:08:05.737 回答