将客户端信息通过Web站点传递给WCF Rest服务

时间:2011-06-24 02:42:08

标签: asp.net wcf rest soa

我需要知道通过我的ASP.NET网站将客户端信息(身份,语言环境等)传递给我的后端WCF RESTful Web服务的最佳方法。我希望该解决方案可以移植(可重复使用)到其他应用程序,因为这个模型在我的组织中非常典型。

以下是该方案:

  • ASP.NET网站在网络上运行 位于我们周边的服务器 区。
  • 运行WCF服务应用程序 防火墙后面的应用服务器 我们的内部网络。
  • 客户(用户)可以在我们的 内部网络或在网络上 他/她浏览网站。
  • 网站将网络服务称为 请求各种信息或 执行某些任务。
  • Web服务需要客户端 信息,以执行这些 操作。

注意:网站正在使用表单身份验证,并且不会模拟用户。因此,使用WCF可扩展性(行为,检查员等)传递身份信息或当前文化信息只能为我们提供Web服务器的身份和文化,而不是实际的客户端。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这看起来像联邦安全的情况。

基本上,当用户登录时,您会生成会话票证。这可以是数字或字符串。此票证包含有关用户身份和/或其角色的编码信息以及到期时间戳。

您将此会话票证传递给REST呼叫,接收服务器对票证进行解码以获取所需信息。如果故障单无效(不可解密,过期或没有所需权限),则服务器方法拒绝该操作并返回401 Unauthorized HTTP状态。

要实现这一点,您可以依赖Microsoft的实现(wsFederationHttpBinding)或自己动手,这通常需要更少的工作量。

还有一点需要注意:要生成并验证票证,您可以创建另一个位于第二个防火墙后面的服务,或者您可以使用内存中的DLL ...但请确保生成票证并不容易万一网络服务器受到损害。