有以下设计:后端实现为WCF,公共前端站点和两个内部网站点(所有三个都与后端通信)。我认为站点上的身份验证是不够的(即在每个请求中将ClientID作为参数传递给WCF)并且我想通过身份验证来保护我的后端(WCF)以执行双重检查并且PrincipalPermission
开启指定角色的方法。
我确信来自两个提供商的身份名称都不会交叉(公共登录只是数字,内联网就像'DOMAIN \ Login')。前端站点使用表单auth,其提供者返回GenericPrincipal
。 Intranet站点使用Windows身份验证,我WindowsPrincipal
附加了Page.User
。
是否可以将WCF配置为使用两个成员资格提供程序(前端站点使用的自定义提供程序和Windows)开箱即用,而无需编写其他自定义代码?我的WCF托管方式是否重要?目前它的Windows服务。我需要切换到IIS 7吗?
答案 0 :(得分:1)
我不这么认为 - 你只能拥有一个会员提供者。但您可以拥有一个自定义提供程序,可以根据提供的凭据对两个不同的存储进行身份验证。例如,它可以检查用户名是否类似于domain \ login,然后尝试对抗活动目录,否则请尝试针对网站提供商。
另一个想法是为服务提供两个不同的终点。每个都将配置特定的提供商。服务实施将保持不变 - 在内部,您必须进行基于声明的授权。查看此文章以获取更多信息:http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel