我需要知道通过我的ASP.NET网站将客户端信息(身份,语言环境等)传递给我的后端WCF RESTful Web服务的最佳方法。我希望该解决方案可以移植(可重复使用)到其他应用程序,因为这个模型在我的组织中非常典型。
以下是该方案:
注意:网站正在使用表单身份验证,并且不会模拟用户。因此,使用WCF可扩展性(行为,检查员等)传递身份信息或当前文化信息只能为我们提供Web服务器的身份和文化,而不是实际的客户端。
有什么建议吗?
答案 0 :(得分:0)
这看起来像联邦安全的情况。
基本上,当用户登录时,您会生成会话票证。这可以是数字或字符串。此票证包含有关用户身份和/或其角色的编码信息以及到期时间戳。
您将此会话票证传递给REST呼叫,接收服务器对票证进行解码以获取所需信息。如果故障单无效(不可解密,过期或没有所需权限),则服务器方法拒绝该操作并返回401 Unauthorized HTTP状态。
要实现这一点,您可以依赖Microsoft的实现(wsFederationHttpBinding)或自己动手,这通常需要更少的工作量。
还有一点需要注意:要生成并验证票证,您可以创建另一个位于第二个防火墙后面的服务,或者您可以使用内存中的DLL ...但请确保生成票证并不容易万一网络服务器受到损害。