比较SSO协议: WS-Fed, SAML, and OAuth

真实比喻

在我们获得技术之前,让我们用完全非技术性的东西来解决这个问题。作为工程师,我们非常注重将事情分解为组件和流程。这有助于我们了解事情,以便我们可以排除故障或构建复杂的系统。当你去机场登机时,你的登录协议,身份验证协议和令牌类型是什么?这三个组件将成为整个博客的焦点。我将如何定义它们:

  • 什么是登录协议(Sign-in protocol)?去了其中一个值机亭,然后打印我的登机牌,然后通过TSA线,然后去登机口,最后登上飞机。我希望我能以这种方式与机场互动并按顺序执行这些动作,否则,我将无法登机。
  • 什么是身份验证协议(Authentication protocol)?虽然我的登机牌是其中的一部分,但我必须提供身份证或护照来证明我是谁。
  • 什么是令牌类型(Token Type)?我的登机牌是我登机的令牌。

现在,当我们谈论WS-Fed或SAML时,总是问自己同样的问题:什么是登录协议,什么是身份验证协议,什么是令牌类型。无论您是否理解这些概念,询问这些问题都会产生影响。

WS-FED

WS-Fed是一种登录协议,用简单的英语表示当你试图获得访问权限的应用程序将你重定向到ADFS服务器时,它必须以特定的方式(WS-Fed)处理。

作为登录协议的典型的请求

https://sts.cloudready.ms/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fclaimsweb.cloudready.ms&wctx=rm%3d0%26id%3dpassive%26ru%3d%252f&wct=2014-10-21T22%3a15%3a42Z

  • Wa = signin1.0:这告诉ADFS服务器为用户调用登录。
  • Wtrealm:这告诉ADFS我想要的应用程序是什么。这必须与ADFS中列出的其中一个信赖方信任的标识符相匹配。
  • Wctx:这是应用程序希望在用户进行身份验证后发送回的一些会话数据。
  • wct:这是我尝试访问应用程序的确切时间。

令牌类型

最后,在输入我的凭据后,ADFS让我发送回原始应用程序的令牌类型是什么:当使用WS-Fed登录协议时,ADFS将始终向您的浏览器发出SAML 1.1令牌然后,您将自动POST回应用程序

SAML

SAML是登录协议和令牌类型。关于登录协议,SAML和WS-Fed实现了同样的目的,但处理方式却截然不同。

作为登录协议的示例

https://sts.cloudready.ms/adfs/ls/?SAMLRequest=jZFRT4MwFIX%2FCun7KC3OjWaQ4PbgkqlkoA%2B%2BmAKdNCkt9hZ1%2F14GmkwfFl%2Fv%0APfc7p6cr4K3qWNq7Ru%2FFWy%2FAeZ%2Bt0sDGRYx6q5nhIIFp3gpgrmJ5erdj1A9Y%0AZ40zlVHISwGEddLotdHQt8Lmwr7LSjzudzFqnOuAYQyNLP1Kmb62gtdHvwWc%0AD6PSKOEaH8DgE5ni7CEvkLcZokjNT9AzhIM%2FBF4fACvAyNtuYvRSRSIiZXlN%0AwrlY0CriSxKGhNLDFeXhYjkfZAC92GpwXLsY0YCEM0JnQVQESxaEjCyekZd9%0AP%2BxG6lrq18stlJMI2G1RZLMp%2FJOwMAYfBChZnbpko7E9a%2Fcylv9UipJ%2FFbjC%0AZy6TZcfuB%2Bx2kxklq6OXKmU%2B1sOpEzEiCCfTye%2FfT74A%0A&RelayState=cookie%3A29002348&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=M0xoWQfcN3Yp94T2HiqIdJzEkxYqGc6hhopqi8xOI%2B2BtPSLufFDdQIF7z6Xjm6XdLq1MH9Av5xz2QWYs84ZYhlG3fHtZCjjaoI2wZqplRszHla%2BjtZoW20NGDepDsCRT0AKNkhe%2B4Yj3LshrM6EX5O3obx2Mypy8EcsoURkTF3kf1dwKqsGA3ka7ehbRmUQGJUXD0u4iFBog7YgkL4Q9FYMTanZeRo2X4%2FkAeNxT8ormKWJfYnAzg0F4Ku60zDd5N7jYu4XeyOsXDthEFI5H4WYucAprREl2hgSUI21J782kKzrslalIaJ5BKPIO50NPCIb5Sf6Zw4maLpZrFEfrw%3D%3

让我们分解这些参数:

  • SAMLRequest:这实际上是一个Base64编码的XML文档。您实际上可以将此值减去SAMLRequest =粘贴到此处以对其进行解码并以纯文本格式查看@https://idp.ssocircle.com/sso/toolbox/samlDecode.jsp
  • RelayState:在我针对ADFS进行身份验证后,应用程序希望将其发送回的会话数据。
  • SigAlg:使用哪种签名算法对请求进行签名。
  • 签名:上述请求的数字签名。

令牌类型

ADFS将始终为使用SAML登录协议配置的应用程序发出SAML 2.0令牌。

OAuth

虽然有一些关于OAuth是登录协议或身份验证协议的争论,虽然它确实在不断发展,但在ADFS 2012 R2领域,OAuth是另一种登录协议。

作为登录协议的示例

https://sts.cloudready.ms/adfs/oauth2/authorize?response_type=code&client_id=3fb2a37f-4ced-409c-937c-dddd776f4dfd&redirect_uri=https://www.davetestapp.com&resource=https://www.davetestapp.com

让我们分解这些参数:

  • response_type:  告诉我想要执行OAuth并获得授权代码的ADFS服务器。
  • client_id:我想要访问的应用程序的ID。
  • 资源:我正在尝试访问的应用程序的URL / URI。
  • redirect_uri:告诉ADFS将授权代码发回的人

原文链接:https://blogs.technet.microsoft.com/askpfeplat/2014/11/02/adfs-deep-dive-comparing-ws-fed-saml-and-oauth/

原文地址:https://www.cnblogs.com/imust2008/p/11229215.html

时间: 2024-10-18 02:08:53

比较SSO协议: WS-Fed, SAML, and OAuth的相关文章

SAML - SSO(转)

http://baike.baidu.com/view/758527.htm?fr=aladdin SAML即安全断言标记语言,英文全称是Security Assertion Markup Language.它是一个基于XML的标准,用于在不同的安全域(security domain)之间交换认证和授权数据.在SAML标准定义了身份提供者(identity provider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域. SAML是OASIS组织安全服务技

(转)OAuth 2.0授权协议详解和流程

这篇文章主要介绍了OAuth 2.0授权协议详解,本文对OAuth协议做了详解讲解,对OAuth协议的各个方面做了分解,读完本文你就会知道到底啥是OAuth了,需要的朋友可以参考下 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版.本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为RFC 6749. 一.应用场景 为了理解OAuth的适用场合,让我举一个假设的例子.有一个"云冲印"的网站,可

企业级应用身份认证管理扫盲篇——协议

最近为国内银行客户设计新系统与现有系统的集成.关键之一在于登录认证.在了解现有系统的非标接口过程中不出意外地遇到了些困难. 类比个例子,现有系统是个插线板,要求新系统插头标准如下: 三平头,头长18mm宽9mm厚2mm, 三头中心点距圆心10mm, 上头平行圆心到头心线,下二头垂直圆心到头心线. 上述接口是美标,欧标,英标,或者中国标准? "什么?都不是?嗯--" 如此的例子在企业级应用的登录认证集成过程中总是会遇到的.IT发达的国家整体情况好很多,因为大多数实现都采用了业界通行的标准

SSO 单点登录解决方案

转自:http://www.blogjava.net/Jack2007/archive/2014/03/11/191795.html 1 什么是单点登陆      单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.      较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务.例如财务系统为财务人员提供财务的管理.计算和报表服务:人事系统为人

单点登录 SSO

1 什么是单点登陆       单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.       较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服务.例如财务系统为财务人员提供财务的管理.计算和报表服务:人事系统为人事部门 提供全公司人员的维护服务:各种业务系统为公司内部不同的业务提供不同的服务等等.这些系统的目的都是让计算机来 进行复杂繁琐的

Oauth2.0协议 http://www.php20.com/forum.php?mod=viewthread&tid=28 (出处: 码农之家)

概要     OAuth2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0. OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限.同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程.2012年10月,OAuth 2.0协议正式发布为RFC 6749 OAuth 1.0已经在IETF尘埃落定,编号是RFC5849这也标志着OAuth已经正

单点登录SSO的实现原理 (转)

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任.单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉.实现单点登录说到底就是要解决如何产生和存储那个信任,再就是其他系统如何验证这个信任的有效性,因

基于SAML的单点登录介绍

http://blog.csdn.net/csethcrm/article/details/20694993 一.背景知识: SAML即安全断言标记语言,英文全称是Security Assertion Markup Language.它是一个基于XML的标准,用于在不同的安全域(security domain)之间交换认证和授权数据.在SAML标准定义了身份提供者(identity provider)和服务提供者(service provider),这两者构成了前面所说的不同的安全域. SAML

编写自己的单点登录(SSO)服务

王昱 [email protected]   博客地址http://yuwang881.blog.sohu.com 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统其中. 本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,而且给出Web-SSO和桌面SSO的实现.源码和具体解说.还从安全和性能的角度对现有的实现技术进行进一步分析.指出对应的风险和须要改进的方面.本文除了从多个方面和角度给出了对单点登录(SSO)的全面分析,