我已经用WSO2配置了Spring应用程序。当用户登录时,他将检索有效性等于5分钟的断言。但是,5分钟后,没有刷新断言发生。
如何在断言过期后在页面重新加载上启用调用/saml/sso?也许你知道另一个解决办法吗?一些豆子的特性?
maxAuthenticationAge in org.springframework.security.saml.websso.WebSSOProfileConsumerImpl不起作用。
forceAuthN in org.springframework.security.saml.websso.WebSSOProfileOptions不起作用。
发布于 2017-02-27 10:43:35
首先,断言中的SessionNotOnOrAfter属性不是AuthnStatement中的,因此过期时间是null。在本例中,我从Conditions元素获得NotOnOrAfter属性的过期时间,IMHO与SessionNotOnOrAfter应有的值相同。
第二,为了安全起见
解决方法是在自定义SAMLAuthenticationProvider getExpirationDate方法中重写:
protected Date getExpirationDate(SAMLCredential credential) {
List<AuthnStatement> statementList = credential.getAuthenticationAssertion().getAuthnStatements();
DateTime expiration = null;
for (AuthnStatement statement : statementList) {
DateTime newExpiration = statement.getSessionNotOnOrAfter();
if (newExpiration != null) {
if (expiration == null || expiration.isAfter(newExpiration)) {
expiration = newExpiration;
}
}
}
if (expiration == null) {
Conditions conditions = credential.getAuthenticationAssertion().getConditions();
expiration = conditions.getNotOnOrAfter();
}
return expiration != null ? expiration.minusMinutes(1).toDate() : null;
}https://stackoverflow.com/questions/42472149
复制相似问题