我正在为web应用程序构建基于SAML 2.0的身份验证。身份验证是针对WSO2 Identity Server(WSO2-is)进行的。我已经设法使用HTTP重定向实现了实际的身份验证。但是,现在我在尝试从Identity Server"刷新"身份验证信息时遇到问题。
问题是WSO2-is返回的断言的生存期只有5分钟。因此,基于此,我应该每5分钟从WSO2-IS获得一个新的断言。然而,我没有找到其他方法来对抗WSO2-IS,只能做另一轮重定向。每隔五分钟将用户重定向到其他地方对用户来说不是很友好。
SAML2.0指定了一个AuthnQuery请求,该请求应该使用SOAP over HTTP来完成。如果我理解正确的话,AuthnQuery正是我为用户重新请求断言信息所需要的,但对我来说,WSO2-IS似乎不支持这个请求。
因此,问题是,我如何能够刷新(或重新请求)WSO2 Identity Server的断言信息,而不必将用户重定向到他们当前访问的页面之外?
答案可以在Web浏览器SSO配置文件->使用和消息处理规则下的SAML产品规范中找到。
上述承载元素必须包含包含Recipient的元素包含服务提供者的断言使用者服务的属性URL和限制窗口的NotOnOrAfter属性断言可以通过传递
NotOnOrAfter是必须传递消息的时间。
您应该考虑的是AuthnStatement
中的属性SessionNotOnOrAfter
(如果存在)。
如果用于为主体包含SessionNotOnOrAfter属性,安全性一旦达到这个时间,就应该丢弃上下文,除非服务提供商通过重复来重新建立主体的身份使用此配置文件。
SAML配置文件规范
我不确定你是否可以使用它。这是来自SAML规范
message元素用于生成查询"What包含身份验证语句的断言可用于此主题?"成功将包含一个或多个断言包含身份验证语句。
消息MUST不要用作使用凭据进行新身份验证的请求请求中提供的。是对语句的请求关于在以前的交互中发生的身份验证行为在所指示的主体和认证机构之间。
你说的是关于断言的NotOnOrAfter限制,对吧?据我所知,这只是为了当你不再相信这条信息的时候。如果你在时间结束之前阅读了它,你可以认为用户已经通过了身份验证。这通常是为了防止重放攻击。