受SAML保护的资源

人气:486 发布:2022-10-16 标签: security saml-2.0 saml protected-resource

问题描述

我正在尝试使用SAML保护资源。有三个参与者在起作用:身份提供者(IdP,不在我的控制范围之内)、服务提供者(SP,我碰巧使用了Spring-Security-SAML,但这个问题并不特定于此),以及受保护的资源(PR,SP之外的服务中的某个受保护的端点)。

我需要支持两个场景:

用户首次尝试访问PR,没有任何类型的会话。 当用户以前访问过PR时,他们尝试再次访问PR。

有很多关于场景1应该如何工作的指导,因为从我所看到的来看,这是使用SAML的标准方式。然而,场景2似乎不那么标准,我还没有找到任何关于如何处理它的权威文档。

在场景1中,流程似乎是标准的:

用户尝试访问请购单 PR将用户定向到SP SP使用IdP执行正常的SAML断言,然后重定向用户使用IdP登录 用户成功登录IdP 用户被重定向回SP,其中包含有关该用户的信息 SP重定向回PR(可能带有某种生成的令牌以供将来使用或有关用户的其他信息) 将PR中的信息提供给用户

我不太清楚的是场景2,我的想法如下:

用户尝试使用上一场景中提供的令牌访问PR PR使用SP检查令牌的有效性 SP确定令牌是否有效(这是如何完成的?SAML标准中似乎没有任何内容用于检查会话是否处于活动状态) PR允许根据SP的响应访问资源

我的问题是:

我对场景2的理解正确吗?这就是SAML的用法吗? 如何与IdP检查会话的有效性? PR是否需要针对每个请求检查会话的有效性?由于SAML不需要过期(如OAuth访问令牌),因此似乎没有任何方法来缓存用户的会话。

推荐答案

访问PR可以有两种情况。

PR在需要续订之前指定时间创建的有效应用程序会话。 应用程序会话所基于的有效SAML令牌。 PR可以认为,只要SAML令牌有效,应用程序会话就有效。或者它可以决定每10分钟创建一个新会话,这意味着重定向到IdP以获取新的SAML令牌,新的应用程序会话基于该令牌。这取决于受保护的资源。在敏感资源中,可能是医疗数据,应该相应地管理会话。

在SAML令牌有效性方面,IdP使用Response/Conditions/NotBeforeResponse/Conditions/NotOnOrAfter发布令牌一段设定的时间,如examples所示。还有Response/AuthnStatement/SessionNotOnOrAfter可用于检查有效性。此:

获取或设置 由主题和SAML颁发机构标识的主体 此语句必须视为已结束

来自here。这实际上限制了公关会话,因为在此时间之后,IdP与用户断绝关系。例如,一小时访问PR的公共步行访问请求。NotOnOrAfter指断言,SessionNotOnOrAfter指用户。在SessionNotOnOrAfter之后,IdP可能不会根据策略等对用户进行身份验证。

如果PR需要续订应用会话,它可以要求SP验证SAML令牌,这可能涉及确定NotOnOrAfter是否为过去。如果是,则SP将再次启动与IdP的进程以获得新的SAML令牌。如果IdP正在处理敏感的PR,它可能会在有限的时间内释放属性,具体取决于其结束时授予访问权限的方式。

628