SAML简介

 

SAML认证

一、SAML简介

1.1  SAML的基本概念

SAML即安全声明标记语言,英文全称是Security Assertion Markup Language。它是一个基于XML的标准,用于在不同的安全域(security domain)之间交换认证和授权数据。

断言, SAML中的”A”,是整个SAML协议中出现的最多的字眼,我们可以将断言看作是一种判断,并且我们相信这种判断,因此,做出断言的一方必须被信赖。校验来自断言方的断言必须通过一些手段,比如数字签名,以确保断言的确实来自断言方。

1.2  SAML的目标

SAML目标是让多个应用间实现联邦身份(Identity Federation),提起联邦,大家可以想象一下欧盟,欧盟国家之间的公民都具有一个联邦身份,比如Peter是法国公民,John是比利时公民。法国的Peter进入比利时,他如何证明自己的身份呢?

SAML就是解决该问题的。在联邦环境中,通常有下面的三种实体:

l  Subject(主题) :Subject是SAML实体中的第一个重要的概念,Subject包括了User、 Entity、 Workstation 等能够象征一个参与信息交换的实体。

l  Relying Party(信任方) :SAML中的Service Provider角色,也就是提供服务的一方。

l  Asserting Party(断言方) :SAML中的Identity Provider角色,用于提供对主题的身份信息的正确的断言,类似一个公证机构。

 

 Peter(Subject)访问比利时(Service Provider),他在比利时机场被要求提供身份信息,Peter提供了欧盟(Federation)的通行证件,随即,这个通行证件在比利时机场被审核,或通过计算机送到欧盟身份认证中心(Identity Provider),该中心有一个由所有欧盟国家共同建立的公民数据库,中心审核了Peter的身份信息,并断言“Peter来自法国,他是合法欧盟成员。”,于是,Peter得到礼貌的回应“欢迎光临比利时”。

 

    在联邦环境下,任何需要授权访问的服务都需要知道服务请求方的身份主题信息(Who are you),服务提供方(Service Provider)不负责审核用户的身份信息,但它依赖于1个甚至多个Identity Provider来完成此任务。

    1个Idnetity Provider可以被多个Service Provider共享,当然,共享的前提是建立信任关系(即Service Provider要信任Idnetity Provider),就好比如,如果比利时(Service Provider)需要开放对欧盟国家成员访问,它信任欧盟的Idnetity Provider,它信任欧盟的Idnetity Provider的任何判断,包括” Peter来自法国,他是合法欧盟成员。”。至于是否让Peter入境,那是受权限策略的控制 。

 

1.3 SAML的2种典型模式

根据Service Provider(以下简称SP)和Identity Provider(以下简称IDP)的交互方式,SAML可以分为以下几种模式:一种是SP拉方式,一种是IDP推方式。

在SAML中,最重要的环节是SP如何获取对Subject的断言,SP拉方式是SP主动到IDP去了解Subject的身份断言,而IDP推方式则是IDP主动把Subject的身份断言通过某种途径告诉SP。

1.3.1 SAML 的 POST/Artifact Bindings 方式(即 SP 拉方式)

SP获得客户端的凭证(是IDP对Subject的一种身份认可)之后,主动请求IDP对Subject的凭证的断言。如下图:

 

  1. Subject向IDP请求凭证(方式是提交用户名/密码)
  2. IDP通过验证Subject提供的信息,来确定是否提供凭证给Subject
  3. 假如Subject的验证信息正确,他将获取IDP的凭证以及将服务请求同时提交给SP。
  4. SP接受到Subject的凭证,它是提供服务之前必须验证次凭证,于是,它产生了一个SAML请求,要求IDP对凭证断言
  5. 凭证是IDP产生的,它当然知道凭证的内容,于是它回应一个SAML断言给SP
  6. SP信任IDP的SAML断言,它会根据断言结果确定是否为Subject提供服务。

1.3.2 SAML  Redirect/POST Bindings 方式 (  IDP 推方式 )

该方式的主要特点是,IDP交给Subject的不是凭证,而是断言。如下图:

 

  1. Subject访问SP的授权服务,SP重定向Subject到IDP获取断言。
  2. IDP会要求Subject提供能够证明它自己身份的手段(Password,X.509证书等)
  3. Subject向IDP提供了自己的帐号密码。
  4. IDP验证密码之后,会重订向Subject到原来的SP。
  5. SP校验IDP的断言(注意,IDP会对自己的断言签名,SP信任IDP的证书,因此,通过校验签名,能够确信从Subject过来的断言确实来自IDP的断言)。
  6. 如果签名正确,SP将向Subject提供该服务。

 

posted @ 2023-04-18 09:20  彼扬  阅读(123)  评论(0)    收藏  举报

感谢您的阅读,如果有了您的奉献系统会更加完善