【问题标题】:Authentication and Authorization scheme for an application exposed as WCF Service Layer?公开为 WCF 服务层的应用程序的身份验证和授权方案?
【发布时间】:2011-01-15 16:40:49
【问题描述】:

我知道这个问题在您的组织中一定已经讨论过百万次了。再来一张。

设计一个将其业务操作公开为服务的 LOB 应用程序。

这些服务将由我们自己的 Web 应用程序 (ASP.Net MVC)、智能桌面客户端、移动客户端以及我们的合作伙伴通过他们的 Web 应用程序或单个谨慎调用来访问。

由于其他人正在访问服务,而不仅仅是我们的 Web 应用程序,因此对服务的每次调用都需要经过身份验证和授权。

最佳和最佳的安全方案是什么?如何在每次调用中将经过身份验证的用户凭据从我的 Web 应用程序传递到服务? (Windows 身份基础??)

Windows Identity Foundation 是否属于这种情况?如果是,哪些部件适合放在哪里?以及如何?

感谢您的帮助。

问候。

【问题讨论】:

    标签: .net web-services security wcf-security wif


    【解决方案1】:

    尽管我冒着风险说明这一点:AuthenticationAuthorization 是两个不同的东西,应该在应用程序的不同位置处理。

    在 WCF 中,您可以使用 IAuthorizationPolicyServiceAuthorizationManager 类型(不是特别直观地命名)来实现身份验证。这应该负责身份验证,但也允许您将经过身份验证的用户映射到 IPrincipal 实例。您可以将此主体分配给Thread.CurrentPrincipal,以便您以后可以从应用程序的实现中访问它。

    Windows Identity Foundation (WIF) 为您提供了主要与身份验证相关的新功能。它通过定义一个 IClaimsPrincipal 接口构建在 IPrincipal 之上,但概念保持不变。

    如果您需要与联盟合作伙伴实施基于声明的安全性,WIF 是正确的选择。如果您只需要通过 AD 对内部用户进行身份验证和授权,那将不是我的首选。

    但是,如果您遵循 Liskov Substitution Principle 并仅针对 IPrincipal 编写代码,则您可以在以后证明您需要处理基于声明的身份时对 WIF 进行改造。

    【讨论】:

    • 我也在寻找“如何在每次调用中将经过身份验证的用户的凭据从我的 Web 应用程序传递到服务?”的答案?是否需要额外的 serviceAgent 层?或者有一种设计模式可以在这里提供帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 2022-06-11
    • 2020-06-07
    • 2013-10-02
    • 2021-03-05
    • 1970-01-01
    相关资源
    最近更新 更多