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

标签 .net wcf architecture soa wif

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

所以明智的做法是将我所有的业务逻辑转移到可以通过 http 访问的服务层。该服务层必须接受具有用户上下文(身份)的请求,并且无论哪种类型的客户端与其通信(我希望?),都必须以某种很好的方式一致地执行授权。

一年多来,我做了一个为期 3 个月的演出,聘请了 W.I.F. (Windows Identity Foundation) 在混合的本地和云架构中。我喜欢它。引起共鸣的三件事是 (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 token 的同一个 STS,它们的行为就像浏览器并将其传回像任何其他客户端一样在标题中?是的,我将不得不找出答案,但如果这是与 W.I.F 的交易破坏者,并且我在发布后立即发现,那么至少我可以专注于它。

最后再加入一件事。我真的不想考虑这些。我想使用第 3 方身份验证/身份提供者 - http://www.janrain.com/products/engage - 我相信它使用 OpenID。这可以融入 W.I.F.还是我只是从 OpenID 创建一个新的 SAML token 并从那一刻起使用 WIF。

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

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

最佳答案

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

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

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

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

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

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

    关于.net n 层身份和服务架构中的授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044585/

    相关文章:

    jquery - 如何使用 jQuery 和 CSS 创建 float 按钮?

    c# - JIT 优化 : Why Is It Slow and How Can I Improve It?

    c# - Web 服务和远程处理有什么区别?

    c# - WCF 服务和线程

    c# - gRPC 相当于 WCF 服务发现

    .net - EF Code First 映射内部关联

    c# - Nuget 安装包成功但未向 csproj 添加引用

    c# - VS.NET 应用程序图

    c# - 使用 SOAP 访问数据库的最佳方式

    asp.net - 多数据库同步 - SignalR 与消息传送背板