.net服务架构中的n层身份和授权

Jon*_*ner 18 .net architecture wcf soa wif

我正在构建一个应用程序,其中需求似乎是标准问题(至少对我来说)...我有一个基于asp .net mvc的Web.UI和来自iphone,andriod和blackberry的客户端.

因此,明智的做法是将我的所有业务逻辑移动到可以通过http访问的服务层.此服务层必须接受具有用户上下文(身份)的请求,并且以一种不错的方式执行授权,无论哪种类型的客户端与之通信(我希望?).

在一年多的时间里,我做了一个3个月的演出,在混合的内部部署和云架构中使用了WIF(Windows Identity Foundation).我喜欢它.引起共鸣的三件事是(1)外化认证而不关心如何完成,(2)从业务逻辑中删除授权逻辑,(3)基于声明的授权.

在过去的一年里,我听说并关注Rest Services的所有"酷炫的嬉皮士做事方式".所以我虽然很棒,但试试吧.在我开始玩游戏并获得编码之后,我开始变得非常困惑(并且随后在没有编写另一行c#的情况下阅读了大约10个小时).我仍然对所有SOAP vs REST,WS.*vs Http,SAML vs SWT babble感到困惑.我真的不希望这个线程是关于那个,因为有足够的说法在stackoverflow,但我觉得我有两个阵营之间的选择,当它不是真的感觉我想要一个或另一个但每个位?

对我来说,我上面提到的关于WIF的3点似乎并不像应该与WS绑定的概念.*?但是我感觉到他们,或者至少WIF现在是如何产生的,没有一些专家调整(例如我几天前才发现这篇文章 - http://zamd.net/2011/ 02/08/using-simple-web-token-swt-with-wif /).

我不太了解的其他领域是我的客户端(iphone,andriod,blackberry)能够玩WIF,是否是向他们抛出SAML令牌的STS,它们的行为就像浏览器一样并传回去在标题中就像任何其他客户端一样?是的,我必须要找出来,但如果这是WIF的交易破坏者,我发布后直接发现,那么至少我可以把注意力从它上面移开.

最后还要再加一点.我真的不想考虑这些.我想使用第三方身份验证/身份提供商 - http://www.janrain.com/products/engage - 我认为它使用OpenID.这可以适用于WIF还是我只是从OpenID创建一个新的SAML令牌并从那时起使用WIF.

我想在这个喋喋不休的结尾,我想回到我开始的地方,因为越来越复杂,我问的问题越多,我考虑的选择就越多.

是否有一个服务层(在WCF上)与不同的非.NET客户端进行通信,这些客户端需要身份上下文和授权如此奇怪?如果你已经建立了这样的东西,你是如何接近它的?

Shi*_*iji 2

当您拥有许多设备时,让相同的解决方案在所有设备上运行的一种方法是瞄准最低公分母。

假设您的所有客户端都支持 cookie。这样做的一种方法是:

  • 拥有基于 cookie 的身份验证系统。
  • 在服务器端缓存所有授权信息,链接到cookie中的会话或密钥
  • 对于每个请求检查授权

不像使用 SAML 令牌那么优雅,但它确实可以跨平台/设备工作。

iPhone 支持 cookies http://support.apple.com/kb/HT1675

黑莓支持 cookie http://docs.blackberry.com/en/developers/deliverables/11844/feature_cookie_storage_438273_11.jsp