我对sharepoint应用程序开发相对较新。
尝试使用App +用户策略创建内部部署,高信任提供商托管的应用程序。我已按照以下文档创建演示。
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:EN-US
SPSiteCulture:EN-US
SPRedirectMessage:EndpointAuthorityMatches
SPErrorCorrelationId:f069e89c-a0cd-20ce-a1c0-7db95db0334b
现在,当我检查具有上述核心化ID的日志时,我发现以下错误。
- 获取app i的令牌时出错:0i.t | ms.sp.ext | ab8ff461-bc75-4516-b475-b666ac47eec0 @ 802f23e1-6e11-45d1-909c-07a7b0ab0ce2, exception:Microsoft.SharePoint.SPException:Azure访问控制 服务不可用。
- 从appredirect.aspx网站请求的应用令牌:92bfe5c4-7255-4b09-a89a-07e0e2b03622但是出现了错误 生成它。这可能是我们不需要令牌或何时需要的情况 应用程序主体未正确设置。 - 获取异常的错误消息Microsoft.SharePoint.SPException:Azure Access Control服务是 不可用。
a)我相信高信任的应用程序它不应该寻找Azure ACS。 这个错误是因为一些不正确的配置吗? b)SPAppToken在此处为空。在高信任度app的情况下总是为空吗?
2)假设我已经与用户A登录到sharepoint并尝试启动sharepoint应用。 在应用程序代码中,我想获得登录用户的身份(即A)。从下面的代码我发现Request.LogonUserIdentity给了我用户A的身份。但是我们怎么能确定该请求仅来自sharepoint。我可以复制相同的应用程序URL并粘贴到浏览器窗口并使用窗口凭据登录并获得相同的结果。所以问题是我如何验证其合法请求是否仅来自sharepoint并且没有人伪造请求。 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会发生什么,在这种情况下有什么方法可以获得用户身份吗?
非常感谢任何帮助。
由于
答案 0 :(得分:1)
对于问题#1:在我看来,错过了this section中的步骤#9(配置身份验证设置)(来自您推荐的第一篇MSDN文章),即'ACS Control service'被选中而不是“使用证书”选项。
对于问题#2:TokenHelper.cs中有辅助方法来验证来自HttpRequest的AccessToken,它标识了请求的有效性。