在SAML2规范中,断言中有几个地方可以指定生命周期。
<SubjectConfirmationData>
元素包含NotOnOrAfter
属性。<Conditions>
元素包含NotOnOrAfter
属性。<AuthnStatement>
元素包含SessionNotOnOrAfter
属性。他们每个人的意义是什么?它们如何相互关联?
具体来说,在......时必须检查哪一个
每个NotOnOrAfter都在SAML2 core specification中描述。我在这里列出了可以找到描述这些属性的部分。
无法再确认对象的时刻。时间值以UTC编码,如第1.3.3节中所述。
请注意,可选的NotBefore和NotOnOrAfter属性指定的时间段(如果存在)应该落在元素的NotBefore和NotOnOrAfter属性指定的整个断言有效期内。如果两个属性都存在,则NotBefore的值必须小于(早于)NotOnOrAfter的值。
指定断言到期的时刻。时间值以UTC编码,如第1.3.3节中所述。
NotBefore和NotOnOrAfter属性在其使用的配置文件的上下文中指定断言有效性的时间限制。他们不保证声明中的陈述在整个有效期内是正确或准确的。 NotBefore属性指定有效期间隔开始的时刻。 NotOnOrAfter属性指定有效期间隔结束的时刻。如果省略NotBefore或NotOnOrAfter的值,则认为它未指定。如果未指定NotBefore属性(并且如果提供的所有其他条件评估为有效),则断言对于在由指定的时间点之前的任何时间的条件有效。 NotOnOrAfter属性。如果未指定NotOnOrAfter属性(并且如果提供的所有其他条件评估为有效),则断言对于NotBefore属性指定的时间段内的条件是有效的,没有到期。如果两个属性都未指定(并且如果提供的任何其他条件评估为有效),则断言在任何时候都是有效的。
如果两个属性都存在,则NotBefore的值必须小于(早于)NotOnOrAfter的值。
表示与封闭断言派生的主题的会话的上限。时间值以UTC编码,如第1.3.3节所述。此属性与断言中可能存在的NotOnOrAfter条件属性之间没有必需的关系。它留给配置文件根据此属性为依赖方提供特定的处理规则。
答案 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),当且仅当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在该链接中,他们还讨论了主题和条件的有效期,其中条件通常具有比主题更长的寿命。