我有一个连接到IIS中托管的WCF Web服务的asp.net mvc 2 web应用程序。这是在使用Windows身份验证的Intranet环境中。我需要在我的WCF服务中验证连接到Web应用程序的用户,但是WCF无法查看谁连接到Web应用程序。从ASP.Net Web应用程序来WCF验证Web用户的最佳方式是什么?
这不是一个新问题,那么你们有些人怎么解决这个问题?
我有一个连接到IIS中托管的WCF Web服务的asp.net mvc 2 web应用程序。这是在使用Windows身份验证的Intranet环境中。我需要在我的WCF服务中验证连接到Web应用程序的用户,但是WCF无法查看谁连接到Web应用程序。从ASP.Net Web应用程序来WCF验证Web用户的最佳方式是什么?
这不是一个新问题,那么你们有些人怎么解决这个问题?
看看一些下面的链接内网应用场景:
以下Intranet方案都带有安全配置指南和检查清单,你可能会发现有用:
Chapter 9 - Intranet - Web to Remote WCF Using Transport Security (Original Caller, TCP)
Chapter 10 - Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem, HTTP)
Chapter 11 - Intranet – Web to Remote WCF Using Transport Security (Trusted Subsystem, TCP)
Chapter 12 - Intranet – Windows Forms to Remote WCF Using Transport Security (Original Caller, TCP)
共享会话是一个选项吗?
WCF提供了一个属性(AspNetCompatibilityRequirements)(大概等)使会话状态ASP.net兼容。这反过来又允许您使用可以在应用程序之间共享的进程外会话状态管理。
可以使用
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed]
,然后在配置
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
...
</system.serviceModel>
如果你走在SQL Server路由实现这一目标,我写了this而回。它是在asp.net和asmx服务之间共享的,但在SQL Server端,我想事情是一样的。基本上你需要让SQL Server将系统的两个部分都识别为同一个应用程序。
WCF还使用与ASP.net相同的成员资格提供程序,因此您可能能够以某种方式获得某些内容。
这确实不是一个选项,至少不是现在......我一定会记住这一点,虽然未来。 – 2010-07-07 13:56:28
我是否正确地认为“WCF无法看到谁连接到Web应用程序”意味着它无法访问您目前用于身份验证的任何支持? – AlexCuse 2010-07-07 14:10:01
嗯,这意味着它会将运行该Web应用程序的帐户视为经过身份验证的帐户,而不是访问该Web应用程序的原始用户。 – 2010-07-07 19:10:26
如果您使用的是Windows身份验证,则可以使用一个选项将委托身份从Web应用传递给WCF服务。
如何?我一直无法得到这个工作。 – 2010-07-07 13:59:26
此链接到MSDN有一些非常好的信息,您应该可以使用:http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/16d5406f-ebd7-41d2-a323-3530703497cd – ChrisNel52 2010-07-07 14:14:26
是通过TCP获取原始调用者的唯一方法是什么?我想使用HTTP – 2010-07-07 19:09:54