我已经用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 02: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
复制相似问题