2011-09-13 38 views
0

我有一个使用的业务逻辑的自承载WCF服务(跨域)内部LOB Silverlight客户端。带有自托管WCF服务的Silverlight和ASP.NET AuthenticationService?

我想使用ASP.NET AuthenticationServices的。我将如何使用自托管的WCF服务进行设置?

  • 从Silverlight调用ASP.NET AuthenticationService来验证用户身份?但是,这不会保护我的自我托管服务...

  • 发送用户名/密码,从Silverlight和我的自托管服务调用ASP.NET验证服务的每个请求? (感觉有点向后?)

  • 从Silverlight调用ASP.NET AuthenticationService来验证用户,在Silverlight的每个请求中发送用户名/密码以允许登录等,并使用其他方法来保护我的服务?

有什么方法可以将这些粘在一起,或者ASP.NET AuthenticationService不是意味着在拥有自托管的WCF服务时使用吗?

回答

0

所有的研究,我在WCF验证服务完成的指示它的用途是同域(RIA-等)的应用程序。它设置HttpContext.Current.User并创建一个用户会话,因此您可以将其他WCF端点限制在托管网站的某个子文件夹中,并通过web.config文件控制访问。在这种情况下,您可以使用HttpContext用户的日志。如果您打算跨域进行操作,我想您会发现您需要在WCF绑定配置中使用Transport(HTTPS)和Message安全性的组合。这基本上意味着你的第二个项目符号点是真实的,你就需要设置服务端证书的用户名/密码(使用Windows身份验证或窗体身份验证)和所有WCF向他们发送跨线,每条消息...

+1

好的,所以这可能是在IIS上托管WCF服务的原因;即否则你必须实现自己的IPrincipal,并且可能为每个服务请求执行数据库查询(获取用户和角色)?据我了解,IIS表单身份验证仅使用一些http cookie令牌来避免此DB往返? – Poppert

+1

很好的ASP.NET窗体身份验证提供商命中率达到会话登录分贝,但随后会保留在威望的HttpContext为用户会话的持续时间,所以是它将消除了一堆DB的相比,消息级调用WCF安全的地方你有一个消息检查员检查所有的电话进来。 –