【发布时间】:2011-06-29 23:56:31
【问题描述】:
我正在构建一个要求似乎是标准问题的应用程序(至少对我而言)...我有一个基于 asp .net mvc 和来自 iphone、andriod 和 blackberry 的客户端的 Web.UI。
因此,明智的做法是将我所有的业务逻辑转移到可以通过 http 访问的服务层中。该服务层必须接受带有用户上下文(身份)的请求,并以某种不错的方式始终如一地执行授权,无论哪种类型的客户端与其通信(我希望如此?)。
一年多来,我做了一个为期 3 个月的演出,聘请了 W.I.F. (Windows Identity Foundation) 在混合的本地和云架构中。我喜欢它。引起共鸣的 3 件事是 (1) 将身份验证外部化而不关心它是如何完成的,(2) 从业务逻辑中删除授权逻辑,(3) 基于声明的授权。
在过去的一年里,我听说并观看了所有关于 Rest Services 的“新酷嬉皮士做事方式”。所以我虽然很棒,让我们试试看。在我开始玩并开始编码之后,我开始变得非常困惑(随后昨天阅读了大约 10 个小时而没有写另一行 c#)。我仍然对所有 SOAP 与 REST、WS.* 与 Http、SAML 与 SWT 喋喋不休感到困惑。我真的不希望这个线程是关于这个的,因为关于 stackoverflow 的发言已经足够多,但我觉得我可以在两个阵营之间做出选择,当我真的不想要一个或另一个时但每个人都有点?
对我来说,我上面提到的关于 WIF 的 3 点似乎不应该与 WS.* 相关联的概念?但我感觉它们,或者至少 WIF 目前是如何产生它们的,没有一些专家的调整(例如,我发现这篇文章是几天前才写的 - http://zamd.net/2011/02/08/using-simple-web-token-swt-with-wif/)。
我不太了解的其他领域是我的客户(iphone、andriod、blackberry)能够使用 WIF,它是否是向他们抛出 SAML 令牌的同一个 STS,它们的行为就像浏览器和就像任何其他客户端一样将它传递回标头?是的,我将不得不找出答案,但如果这是与 W.I.F 的交易破坏者,并且我在发布后立即发现,那么至少我可以专注于它。
最后再加入一件事。我真的不想考虑这些。我想使用第 3 方身份验证/身份提供者 - http://www.janrain.com/products/engage - 我相信它使用 OpenID。这可以融入 W.I.F.还是我只是从 OpenID 创建一个新的 SAML 令牌并从那一刻起使用 WIF。
我想在这段闲聊结束时,我想回到我开始的地方,因为我提出的问题越多,考虑的选项越多,它就会变得越来越复杂。
是否有一个服务层(在 WCF 上)与需要身份上下文和授权的不同非 .net 客户端进行通信,这很奇怪吗?如果你已经构建了这样的东西,你是如何处理它的?
【问题讨论】:
标签: .net wcf architecture soa wif