在SubjectConfirmationData和Conditions以及SessionNotOnOrAfter中的NotOnOrAfter

时间:2015-04-08 07:50:28

标签: saml saml-2.0

在SAML2规范中,断言中有几个地方可以指定生命周期。

  • <SubjectConfirmationData>元素包含NotOnOrAfter属性。
  • <Conditions>元素包含NotOnOrAfter属性。
  • <AuthnStatement>元素包含SessionNotOnOrAfter属性。

他们每个人的意义是什么?它们如何相互关联?

具体来说,在......时必须检查哪一个

  • ...使用Web SSO消耗传入的Saml2Response
  • ...在SP中建立应用程序会话
  • ...刷新(扩展)SP中的应用程序会话
  • ...将声明转发给网络服务,代表主题行事(如@Thuan所述)
  • ...向idp发出一个注销请求,以确保idp仍然知道会话?

每个NotOnOrAfter都在SAML2 core specification中描述。我在这里列出了可以找到描述这些属性的部分。

SubjectConfirmationData / @ NotOnOrAfter

  

无法再确认对象的时刻。时间值以UTC编码,如第1.3.3节中所述。

     

请注意,可选的NotBefore和NotOnOrAfter属性指定的时间段(如果存在)应该落在元素的NotBefore和NotOnOrAfter属性指定的整个断言有效期内。如果两个属性都存在,则NotBefore的值必须小于(早于)NotOnOrAfter的值。

条件/ @ NotOnOrAfter

  

指定断言到期的时刻。时间值以UTC编码,如第1.3.3节中所述。

     

NotBefore和NotOnOrAfter属性在其使用的配置文件的上下文中指定断言有效性的时间限制。他们不保证声明中的陈述在整个有效期内是正确或准确的。 NotBefore属性指定有效期间隔开始的时刻。 NotOnOrAfter属性指定有效期间隔结束的时刻。如果省略NotBefore或NotOnOrAfter的值,则认为它未指定。如果未指定NotBefore属性(并且如果提供的所有其他条件评估为有效),则断言对于在由指定的时间点之前的任何时间的条件有效。   NotOnOrAfter属性。如果未指定NotOnOrAfter属性(并且如果提供的所有其他条件评估为有效),则断言对于NotBefore属性指定的时间段内的条件是有效的,没有到期。如果两个属性都未指定(并且如果提供的任何其他条件评估为有效),则断言在任何时候都是有效的。

     

如果两个属性都存在,则NotBefore的值必须小于(早于)NotOnOrAfter的值。

AuthnStatement / @ SessionNotOnOrAfter

  

表示与封闭断言派生的主题的会话的上限。时间值以UTC编码,如第1.3.3节所述。此属性与断言中可能存在的NotOnOrAfter条件属性之间没有必需的关系。它留给配置文件根据此属性为依赖方提供特定的处理规则。

2 个答案:

答案 0 :(得分:20)

我将这个问题交叉发布到SAML-dev mailing list并得到了Scott Cantor的回答,他是规范的编辑。

  • <SubjectConfirmationData>中的时间表示断言可以与主题绑定多长时间。在Web SSO中,通常使用主题确认方法“bearer”,这意味着在这段时间内我们可以相信断言适用于提供断言的断言。断言可能在更长的时间内有效,但我们必须在此时间范围内创建会话。 Web SSO Profile部分4.1.4.3对此进行了描述。 <SubjectConfirmationData>中的时间必须落在<Conditions>中的时间间隔内。

  • <Conditions>中的时间是整个断言的有效性。在此之后不应该消耗它。没有什么能阻止SP上的用户会话延伸到这个时间点之外。

  • SessionNotOnOrAfter是完全不同的东西,与断言或主题的生命周期没有直接关系。它是idp可用于控制SP会话可能长度的参数。请注意,此参数定义为SP应根据SAML2Core规范处理,但远非所有SP实现。像往常一样执行Shibboleth的实现示例始终会尊重此参数的出现。使用Single Logout时,此参数更为关键,因为它会同步SP和Idp上的会话超时,以确保SP不会为Idp不再知道的会话发出注销请求。

答案 1 :(得分:4)

在我看来,只有Saml2规范的作者才能清楚地回答这个问题。我也猜他们可以写一本10000页的书来解释很多&#34;为什么&#34;关于人们多年来要求的规范的问题。无论如何,基于我有限的知识和我经历过的用例,我对这些属性的解释是:

让我们看一个例子:

  1. SSO:SP从IdP接收断言并将用户登录。
  2. 引导令牌:SP将断言保存为引导令牌供以后使用。
  3. SP使用引导令牌交换ActAs令牌,以便可以使用它来访问其他Web服务。它还会缓存令牌以供进一步使用,以避免经常交换新令牌,只要该令牌仍然有效。
  4. 对于(1),当且仅当SubjectConfirmationData.NotOnOrAfter和Conditions.NotOnOrAfter都有效时,断言才有效。由于断言有效,SP将为用户创建登录会话。会话应该在多长时间由SessionNotOnOrAfter值指定。

    3怎么样?我会说当Conditions.NotOnOrAfter仍然有效时,令牌被认为是有效的。根据Scott Cantor的说法:&#34;处理规则特定于配置文件和使用环境。&#34;资料来源:https://lists.internet2.edu/sympa/arc/mace-opensaml-users/2011-05/msg00007.html在该链接中,他们还讨论了主题和条件的有效期,其中条件通常具有比主题更长的寿命。