作为WCF服务层公开的应用程序的身份验证和授权方案?

时间:2010-02-11 11:48:55

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

我知道这个问题必须在贵组织中讨论过数百万次。再来一次。

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

这些服务将由我们自己的网络应用程序(ASP.Net MVC),智能桌面客户端,移动客户端以及我们的合作伙伴通过其Web应用程序或单个谨慎的呼叫进行访问。

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

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

这是Windows Identity Foundation的情况吗?如果是的话,哪些部分适合哪里?怎么样?

感谢您的帮助。

的问候。

1 个答案:

答案 0 :(得分:0)

虽然我冒着明显的风险说明:身份验证授权是两回事,应该在应用程序的不同位置处理。

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

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

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

但是,如果您只关注Liskov Substitution Principle和针对IPrincipal的代码,那么如果事实证明您需要处理基于声明的身份,则可以稍后改进WIF。