当前位置: 首页 > 科技观察

科普SAML:SecurityStatementMarkupLanguage

时间:2023-03-18 14:08:12 科技观察

随着互联网的普及,物联网的临近,数字时代的真正到来,身份认证和访问授权的重要性日益凸显。SAML(安全断言标记语言)标准定义了供应商如何提供身份验证和授权服务。那么关于SAML,我们需要了解什么?首先,SAML是一种开放标准,用于在网络上的多台计算机之间共享安全凭证。该标准描述了一个框架,该框架使一台计算机能够代表多台其他计算机执行某些安全功能。身份验证:确定用户是否是他们声称的身份授权:确定用户是否有权访问特定系统或内容标准的各种协议消息和数据。SAML2.0于2005年推出,目前仍是该标准的最新版本。以前的1.1版本现在已基本弃用。SAML是实现单点登录(SSO)的一种方式,实际上SSO是SAML最常见的用例。我们可以从SSO开始讨论SAML的使用,然后深入到SAML的组件和操作。什么是单点登录?它能做什么?单点登录(SSO)允许用户提供一次安全凭证(例如用户名/密码对)以访问多个系统、平台、应用程序或其他资源。这种方法将用户从记住多组登录名和密码的负担中解放出来,它还使IT团队不必将多项服务整合到一台服务器上,从而使事情变得容易得多。例如,公司可以使用SSO允许用户登录运行在内部服务器上的专用Web应用程序和托管在SaaS上的ERP(企业资源规划)系统。要发挥SSO的作用,用户必须在通过身份验证后才能获得授权。根据他们经过验证的身份,获得对多台其他计算机的访问权限。或者换一种方式:1台计算机为在其他多台计算机上获得授权的用户提供服务。SAML标准定义了所有这些计算机之间安全通信的方式。什么是SAML提供商?在SAML术语中,提供商是系统中的实体,通常是服务器或其他计算机,可帮助用户访问所需的服务。提供或使用SAML服务的系统通常称为服务提供者;最重要的服务提供者类型是身份提供者。什么是身份提供者?身份提供者是系统中的一个实体,可确保用户确实是他们所说的人-提供身份验证。身份提供者还负责识别用户可以访问系统中各个实体上的哪些服务。有许多实现可以根据SAML标准提供身份验证服务。例如,Salesforce可以充当身份提供者和此角色,就像LDAP、RADIUS或ActiveDirectory(AD)一样。什么是SAML断言?SAML断言是XML文档,我们正在讨论的所有信息都通过它从计算机传递到计算机。一旦身份提供者确认您就是您所说的那个人,并且您有权访问您感兴趣的内容或服务,它就会向实际提供这些服务的服务器发出SAML断言。出于安全原因,可以对SAML断言进行加密。SAML身份验证如何工作?这可能看起来有点抽象,所以请看下面SAML身份验证事务的高级视图。在大多数情况下,用户代理是网络浏览器。假设您是SSO环境中的用户,并且您正在尝试访问服务器上的资源。所涉及的事件顺序如下:您尝试访问服务器上的资源,即SAML术语中的服务提供商。服务提供商会检查您是否是系统上经过身份验证的用户。如果是,直接跳到第7步;如果不是,服务提供商将开始身份验证过程。服务提供商为您确定合适的身份提供商并将您重定向到该提供商,即SSO服务。您的浏览器向单点登录服务发送认证请求;该服务识别您。SSO服务返回一个XHTML文档,其中包含服务提供商在SAMLResponse参数中所需的身份验证信息。SAMLResponse参数传递给服务提供商。服务提供商处理该响应并为您创建安全上下文——基本上,让您登录并告诉您您请求的资源在哪里。有了这些信息,您可以再次请求您感兴趣的资源。资源最终返回给您!您会注意到流程中的许多步骤都是抽象的。例如,没有解释SAML如何知道合适的身份提供者,或者身份提供者如何确定您是您所说的那个人。这不是疏忽:SAML标准没有明确定义如何实施它,给IT留下了很大的余地。如前所述,有许多技术可用于实际的身份验证过程;无论您选择Salesforce、LDAP还是其他,SAML断言都会在提供商之间传输您的经过身份验证的信息。如果您想了解有关SAML事务中消息传递的更多详细信息,您可以深入研究上述场景中从??身份提供者传递到服务提供者的各种声明的完整XML代码。SAML与OAuth:有什么区别?OAuth(https://oauth.net/)是一个比SAML稍新的标准,由Google和Twitter于2006年联合开发。该标准的开发部分是为了补充移动平台上的SAML,它不是基于XML,而是基于JSON.除了SAML不太吸引人的移动支持之外,两者之间还有什么区别?正如我们所见,SAML标准定义了提供商如何提供身份验证和授权服务。另一方面,OAuth只处理授权。OpenIDConnect(http://openid.net/connect/)是2014年制定的更新标准,提供认证服务,处于OAuth的上层。另一个主要区别是它们的用例。SAML理论上是在开放的互联网上使用,但实际上它最常部署在企业内部网上,目的是为了单点登录。相比之下,OAuth是Google和Twitter为整个互联网设计的。