我正在尝试使用SAML保护资源。有三个角色在起作用:身份提供者(IDP,我无法控制),服务提供者(SP,我碰巧正在使用spring-security-saml,但这个问题并不专门针对此问题)以及受保护的资源(PR ,即SP之外的服务中某些受保护的终结点)。
我需要支持两种情况:
对于场景1的工作方式,有足够的指导,因为这是我所看到的使用SAML的标准方法。场景2似乎还不太标准,我还没有找到有关如何处理它的权威文档。
在方案1中,流程似乎是标准的:
我不太清楚场景2,我的想法是:
我的问题是:
答案 0 :(得分:2)
访问PR可能有两个条件。
PR可以认为,只要SAML令牌有效,则应用程序会话就有效。或者,它可以决定要每10分钟创建一个新会话,这意味着重定向到IdP以获得新的SAML令牌,新的应用程序会话将基于该令牌。这取决于受保护的资源。在敏感的资源中,也许应该对医疗数据进行相应的管理。
就SAML令牌有效性而言,IdP使用examples中显示的Response/Conditions/NotBefore
和Response/Conditions/NotOnOrAfter
在设定的时间段内发行令牌。还有Response/AuthnStatement/SessionNotOnOrAfter
可用于检查有效性。这个:
获取或设置之间的会话时间 主题和SAML颁发机构确定的主体 该声明必须视为已结束
来自here。这有效地限制了PR会话,因为IdP在此时间之后“放弃”了用户。例如一个公共的步入式访问请求,用于一个小时的PR访问。 NotOnOrAfter
引用断言,而SessionNotOnOrAfter
引用用户。 SessionNotOnOrAfter
之后,IdP可能无法根据策略等对用户进行身份验证。
如果PR需要续签应用程序会话,则可以要求SP验证SAML令牌,这可能涉及确定过去是否NotOnOrAfter
。如果是,则SP将再次使用IdP开始该过程以获取新的SAML令牌。如果IdP正在处理敏感PR,则它可能会在有限的时间内释放属性,具体取决于在其末端如何授予访问权限。