2.5.1.5 元素<OneTimeUse>
本博客采用知识共享署名 4.0 国际许可协议进行许可
通常情况下,依赖方可能会选择保存断言,或者是以其他形式保存断言中包含的信息,以方便进行重用。<OneTimeUse>条件元素允许断言方提示断言中的信息可能很快就会改变,依赖方应该在每次使用时获取新的断言信息。举个例子,对于一个包含<AuthzDecisionStatement>元素的断言,该元素的值是根据每天的时间进行访问控制的结果。
如果分布式环境中的系统时钟可以精确同步,那么可以通过仔细使用有效间隔来满足这一要求。但是,由于系统之间总是存在一些时钟偏差,而且会与可能的传输延迟相结合,因此,断言方找不到便利的方法来适当地限制断言的生命周期,同时又能保证断言不会在它到达之前就已经过期。
<OneTimeUse>元素指明了依赖方在收到断言之后应该立刻使用它,一定不能保存它以便将来使用。依赖方总是可以自由地为每次使用请求新的断言。但是,选择保留断言以便将来使用的实现方必须遵守<OneTimeUse>元素。此条件是独立于NotBefore
和NotOnOrAfter
条件信息的。
为了支持单次使用的约束,依赖方应该维护一个已经处理过的包含此类条件的断言的缓存。不论何时处理包含此类条件的断言,都应该检查缓存以确保依赖方先前没有接收和处理过相同的断言。
SAML断言机构一定不能在一个断言的一个<Conditions>元素中包含超过一个的<OneTimeUse>元素。
在确定<Conditions>元素的有效性时,我们认为<OneTimeUse>元素始终是合法的。也就是说,<OneTimeUse>元素不影响<Conditions>元素的合法性,而仅仅是一个使用条件。
下列的schema片段定义了<OneTimeUse>元素以及它的OneTimeUseType
复杂类型:
<element name="OneTimeUse" type="saml:OneTimeUseType"/>
<complexType name="OneTimeUseType">
<complexContent>
<extension base="saml:ConditionAbstractType"/>
</complexContent>
</complexType>
Last updated
Was this helpful?