2

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

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

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

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

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

Windows Identity Foundation 是这种情况吗?如果是,哪些部件适合放在哪里?如何?

谢谢你的帮助。

问候。

4

1 回答 1

0

尽管我冒着风险说明了这一点:身份验证授权是两件不同的事情,应该在应用程序的不同位置处理。

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

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

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

但是,如果您遵循Liskov 替换原则和仅针对 IPrincipal 的代码,则您可以稍后在需要处理基于声明的身份时改造 WIF。

于 2010-02-11T12:03:29.300 回答