高信任S2S提供商托管应用程序与“App +用户”政策

时间:2015-02-10 22:48:25

标签: sharepoint sharepoint-2013 sharepoint-apps

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

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

对于问题#1:在我看来,错过了this section中的步骤#9(配置身份验证设置)(来自您推荐的第一篇MSDN文章),即'ACS Control service'被选中而不是“使用证书”选项。

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