安全模型 - 调用 WCF 服务的 SharePoint 2010 Silverlight Web 部件

Posted

技术标签:

【中文标题】安全模型 - 调用 WCF 服务的 SharePoint 2010 Silverlight Web 部件【英文标题】:Security model - SharePoint 2010 Silverlight web part calling WCF service 【发布时间】:2012-01-22 08:54:43 【问题描述】:

我有一个有趣的情况,我无法破解。这是我的 Silverlight 应用程序运行的环境。

我们有一个 SharePoint 2010 Intranet,它是应用程序的主要宿主。在 Web 部件页面上,我们有一个包含应用程序的 Silverlight Web 部件。我们使用客户端对象模型来推断登录的 SharePoint 用户是谁。此应用程序的用户访问他们用于登录的 AD 域之外的 SharePoint 站点;这意味着他们有一个 AD 帐户,但他们的计算机属于不同的域。 Silverlight 应用程序通过 SOAP 协议通过 https 调用 WCF 服务。

问题是,当从登录的 SharePoint 用户的上下文中调用时,我如何保护服务,以便唯一有效的请求者是 Silverlight 应用程序?

每个最终用户都有一个为他们创建的 AD 帐户。 SharePoint 网站是一个外联网,要求每个用户使用其 AD 凭据登录。但是,没有最终用户从属于域的计算机访问站点。

我已尝试使用 Windows 身份验证,但我们要求在用户登录 SharePoint 后,不得提示他们登录(Web 服务)。我尝试使用客户端对象模型将身份验证/凭据“传递”到服务,但没有运气。

我们必须在上线之前禁用匿名身份验证,所以我必须想出一种方法来保护服务,但不要让用户在应用程序中第二次登录。

【问题讨论】:

【参考方案1】:

出于安全原因,您不能开箱即用,silverlight 不能委托给任何外部服务。您可以做的是通过其他方法(例如基于证书)保护您的 WCF 通道并手动发送当前用户名。然后,您可以在 SharePoint 端模拟用户。

这将是一件相当繁琐的事情:)

【讨论】:

以上是关于安全模型 - 调用 WCF 服务的 SharePoint 2010 Silverlight Web 部件的主要内容,如果未能解决你的问题,请参考以下文章

从 .Net 2.0 客户端调用 WCF 服务时如何配置安全性

在特定服务器上调用 WCF 服务时,“无法为具有权限的 ssl/tls 建立安全通道”

面向公众的服务器安全性上的内部 WCF 服务

iPhone Web 服务通过证书身份验证调用 WCF 服务

WCF--安全小见解...

在哪里存储当前 WCF 调用的数据? ThreadStatic 安全吗?