【问题标题】:WCF authentication with multiple providers使用多个提供程序进行 WCF 身份验证
【发布时间】:2010-10-15 06:59:11
【问题描述】:

有以下设计:后端实现为 WCF、公共前端站点和两个 Intranet 站点(所有三个都与后端通信)。我认为网站上的身份验证是不够的(即在每个请求中将 ClientID 作为参数传递给 WCF),我想通过身份验证来保护我的后端 (WCF) 以执行双重检查并在方法上使用 PrincipalPermission指定角色。

我确信来自两个提供商的身份名称不会交叉(公共登录名仅是数字,Intranet 将类似于“DOMAIN\Login”)。前端站点使用表单身份验证,其提供者返回GenericPrincipal。 Intranet 站点使用 Windows 身份验证,我将 WindowsPrincipal 附加到 Page.User

是否可以将 WCF 配置为使用两个开箱即用的成员资格提供程序(前端站点使用的自定义成员和 Windows),而无需编写另一个自定义代码?我的 WCF 的托管方式是否重要?目前它是windows服务。我需要切换到 IIS 7 吗?

【问题讨论】:

    标签: .net asp.net wcf security authentication


    【解决方案1】:

    我不这么认为 - 您只能拥有一个会员资格提供商。但是您可以拥有一个自定义提供程序,该提供程序可以根据提供的凭据对两个不同的商店进行身份验证。例如,它可以检查用户名是否类似于 domain\login 然后尝试针对活动目录,否则尝试针对网站提供商。

    还有一个想法是为服务设置两个不同的端点。每个都将配置特定的提供程序。服务实现将保持不变 - 在内部,您必须进行基于声明的授权。查看这篇文章了解更多信息:http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel

    【讨论】:

    • 优秀的文章,迄今为止我读过的最好的!我不知道每个端点都可以配置为使用特定的提供者,所以你的想法对我来说看起来是个不错的解决方案。谢谢!
    • @UserControl,还有文章的part2,才发现part1没有链接。这是它:theserverside.net/tt/articles/…
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2011-05-01
    • 1970-01-01
    • 2017-02-21
    • 2020-09-17
    • 2021-12-23
    相关资源
    最近更新 更多