WS-Trust、WS-Fed 和 SAML 1.1/2.0 协议之间有什么区别?
当 SAML 在 WS-Trust 和 WS-Fed 协议中用作安全令牌时,我对这些协议的理解会变得混乱。
有兴趣了解这些协议在哪种情况下使用以及它们有何不同。如果不使用商业产品/技术参考,您的答案将很容易理解。
WS-Trust、WS-Fed 和 SAML 1.1/2.0 协议之间有什么区别?
当 SAML 在 WS-Trust 和 WS-Fed 协议中用作安全令牌时,我对这些协议的理解会变得混乱。
有兴趣了解这些协议在哪种情况下使用以及它们有何不同。如果不使用商业产品/技术参考,您的答案将很容易理解。
在较高级别上,微软传统上使用 WS-* 协议。
SAML-P(P 表示协议)被开源运动和 Java 使用。
WS-Fed 有两个配置文件 - 主动和被动。Active 用于 WCF (WS-Trust),passive 是基于浏览器的(WS-Fed 通过登录页面)。
这两个都使用 SAML 令牌。
在功能上,WS-Fed 和 SAML 都做同样的事情。联邦
如果将两个 ADFS (Microsoft IDP) 联合在一起,则使用 WS-Fed。如果添加 Sharepoint,它也使用 WS-Fed。传递的令牌采用 SAML 令牌格式。
如果您有一个使用 Spring 的 Java 应用程序,那么它将通过 SAML-P 连接到 ADFS。传递的令牌采用 SAML 令牌格式。
这个问题很老,但我很难在网上找到正确的答案。
许多在线帖子说,“被动/浏览器”客户端使用 WS-Fed,“主动/智能”客户端使用 WS-Trust。这可能是因为活动用例默认使用像“/ws-trust/2005”或“/ws-trust/v1.x/”这样的url。这似乎不是 100% 准确的。伟大而免费的书:基于声明的身份,第二版帮助我解决了这个问题,我终于找到了一个令人满意的答案:
许多这些架构的目标是启用与浏览器或智能客户端的联合。与智能客户端的联合基于 WS-Trust 和 WS-Federation Active Requestor Profile。
这些协议描述了智能客户端(例如基于 Windows 的应用程序)和服务(例如 WCF 服务)之间的通信流,以从颁发者请求令牌,然后将该令牌传递给服务进行授权。
与浏览器的联合基于 WS-Federation Passive Requestor Profile,它描述了浏览器和 Web 应用程序之间的相同通信流。它依靠浏览器重定向、HTTP GET 和 POST 来请求和传递令牌。
SAMLP 只是一种不同的协议,当涉及到诸如重定向 URL 等事物的通信方式时,它们之间的差异并不相关(在大多数情况下),只是取决于客户端支持的内容(例如 Java 将使用 SAML)。在我看来,最大的区别是 SAMLP 允许身份提供者启动用例(我认为这是最安全的用例),其中用户从身份提供者开始(例如,您的 ADFS 服务器的 Web 代理,=Claims Provider in MS 术语),而不是从 Web 服务开始,然后重定向到服务提供商(= MS 术语中的中继方)。此外,当我们谈论 SAML 时,我们通常指的是 SAML 2.0,而 WS-Fed 使用 SAML 1.x 令牌(MS 称它们为令牌,SAML 称它们为断言......它只是一个签名且可能加密的 XML,