我知道这个问题必须在贵组织中讨论过数百万次。再来一次。
设计将业务操作公开为服务的LOB应用程序。
这些服务将由我们自己的网络应用程序(ASP.Net MVC),智能桌面客户端,移动客户端以及我们的合作伙伴通过其Web应用程序或单个谨慎的呼叫进行访问。
由于其他人正在访问服务而不仅仅是我们的Web应用程序,因此需要对每项服务调用进行身份验证和授权。
什么是最佳和最佳的安全方案?如何在从Web应用程序到服务的每次调用中传递经过身份验证的用户凭据? (Windows Identity Foundation ??)
这是Windows Identity Foundation的情况吗?如果是的话,哪些部分适合哪里?怎么样?
感谢您的帮助。
的问候。
答案 0 :(得分:0)
虽然我冒着明显的风险说明:身份验证和授权是两回事,应该在应用程序的不同位置处理。
在WCF中,您可以使用(不是特别直观命名的)类型IAuthorizationPolicy和ServiceAuthorizationManager来实现身份验证。这应该负责身份验证,但也允许您将经过身份验证的用户映射到IPrincipal实例。您可以将此主体分配给Thread.CurrentPrincipal,以便以后可以从应用程序的实现中访问它。
Windows Identity Foundation(WIF)为您提供了与身份验证相关的新功能。它通过定义IClaimsPrincipal接口构建在IPrincipal之上,但概念保持不变。
如果您需要与联盟合作伙伴实施基于声明的安全性,WIF是正确的选择。如果您只需要对AD中的内部用户进行身份验证和授权,那么这不是我的首选。
但是,如果您只关注Liskov Substitution Principle和针对IPrincipal的代码,那么如果事实证明您需要处理基于声明的身份,则可以稍后改进WIF。