WS-Trust、OpenID和SAML Passive有什么区别?

7
似乎微软ADFSv2支持WS-Trust和SAML Passive,但其构建的WIF堆栈不支持SAML。
WS-Trust和SAML-P有什么区别?它们是否共享相同的安全漏洞,如果是,那么它们是什么?
注意:这里有一个类似但不同的问题:SAML vs OAuth
3个回答

7

我假设您所指的是[最新发布的]ADFS v2?

是的,ADFS v2支持WS-Trust(和WS-Federation)以及SAML2被动式,并且WIF仅支持WS-Trust(和WS-Federation),而不支持SAML2(无论是被动式还是主动式)。

WS-Federation使用WS-Trust执行[基于浏览器的]被动联合,许多方面与SAML2被动式相似,但也有许多不同之处。 WS-Federation和SAML2被动式之间的一个重要区别是,WS-Federation v1.1(ADFS v2支持的新版本)支持自动元数据发现。您只需要在WS-Federation中提供元数据终结点(URL),而在SAML中,您必须通过某种选择方法(USB存储器,邮件等)交换元数据文档。

我不知道任何协议中实际存在的安全漏洞,但对于元数据交换的方法可以争论很久。 WS-Federation方法使许多事情变得更加容易,例如证书滚动,自动更新,“免费”自动提供联合中的新成员等。然而,在SAML2中的“手动”交换过程至少从理论上讲可以更加安全。

至于为什么WIF不包括SAML支持,我只能猜测。一个合理的猜测可能是有人希望使用WIF的站点与ADFS联合,而不是直接与其他[第三方] IdP联合:-)


SAML/WS-Fed之间的基础加密是否相同?将SAML2与WS-Fed进行比较是否比将SAML2与WS-Trust进行比较更好?哪个更像是“苹果对苹果”的比较? - makerofthings7
鉴于ADFS也支持SAMLP,WIF团队更可能是没有时间添加(和测试)该功能。WIF确实具有添加其他协议/令牌格式的可扩展性点。即使是微软也没有无限的资源 :-) - Eugenio Pace
@makerofthings7 SAML2的被动模式可以与WS-Fed相比,而SAML2的主动模式可以与WS-Trust相比(至少在较高层面上)。至于加密方面,这取决于协议配置。一般来说,它们支持相同的算法,在实际情况中,平台(.Net、Java等)通常是限制因素,因为它们经常不支持规范允许的所有选项。但是,尽管加密在某些情况下是一个好主意(例如用于证明令牌或如果隐私是一个问题),但没有协议“需要”加密。 - Martin Strandbygaard
@Eugenio Pace可能会这样认为,但我怀疑 :-) 然而,微软似乎正在向在WIF中添加SAML2支持的想法开放,正如Vittorio多次暗示可能会有未来的支持(甚至在他的Programming WIF书中)。鉴于oiosaml.net OSS项目在.Net中提供了出色的SAML2支持,这种可能性已经存在(还有几个付费选项)。 - Martin Strandbygaard

3

以下内容来自SSO学院,讲解OpenID、SAML和OAuth的简单区别:

Many people are confused about the differences between SAML, OpenID and OAuth, but it’s actually very simple. Although there is some overlap, here is a very simple way of distinguishing between the three.

OpenID – single sign-on for consumers
SAML – single sign-on for enterprise users
OAuth – API authorization between applications

3

2015年更新和更正的答案

  • OpenID-Connect (或OIDC) - 新的单点登录协议
    • 是OpenID版本3,不向后兼容
    • 基于OAuth技术构建
    • 使用JWT(用于令牌,以及其他JSON Web技术和定义)
  • WS-Federation (或WS-Fed) - 旧的单点登录协议
    • 使用SAML作为其令牌

定义:

  • JWT - JSON定义的安全令牌(在OAuth和OIDC中)
    • 发音类似于单词“jot”。
  • SAML - 安全令牌的XML模式和定义(在WS-Fed中)

OAuth

  • OAuth - 是一组规范,用于将授权从请求应用程序(客户端)委派给授权服务。
    • 授权使用在"范围"中给出
    • 范围由一组安全"声明"和所需的"资源"组成
    • 授权的范围在JWT资源令牌中返回
    • 令牌可以以多种方式返回。最常见的是:
      • 直接返回令牌:在隐式流程中-用于基于浏览器(JavaScript)的应用程序
      • 在收到"访问代码"后分两个阶段返回令牌-用于基于服务器(REST或Web API)的调用。
    • 在某些情况下,人类用户会显示UI以同意授权所有或部分请求的"资源"。
    • 令牌可以包含实际信息,也可以是指向包含信息的服务器的引用

OIDC (Open ID Connect)

  • 通过请求带有 OpenID-Connect 类型声明的 OAth 范围来启动。
  • OP - OIDC 提供者是符合 OIDC 协议的 OAuth 服务器。
  • Identity Token 是由 OP - OIDC 提供者返回的。
    • 身份令牌包含有关用户的信息(声明)。
    • 在某些情况下,人类用户将被显示一个 UI,以授权所请求的部分或全部信息和资源。

请参阅 Travis Spenscer 的 OAuth 和 OIDC 文章 - 这是一篇易于阅读的文章。

如果没有更正,请将其标记为答案。谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接