首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Spring WSO2刷新断言

Spring WSO2刷新断言
EN

Stack Overflow用户
提问于 2017-02-26 18:03:14
回答 1查看 357关注 0票数 0

我已经用WSO2配置了Spring应用程序。当用户登录时,他将检索有效性等于5分钟的断言。但是,5分钟后,没有刷新断言发生。

如何在断言过期后在页面重新加载上启用调用/saml/sso?也许你知道另一个解决办法吗?一些豆子的特性?

maxAuthenticationAge in org.springframework.security.saml.websso.WebSSOProfileConsumerImpl不起作用。

forceAuthN in org.springframework.security.saml.websso.WebSSOProfileOptions不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-27 10:43:35

首先,断言中的SessionNotOnOrAfter属性不是AuthnStatement中的,因此过期时间是null。在本例中,我从Conditions元素获得NotOnOrAfter属性的过期时间,IMHO与SessionNotOnOrAfter应有的值相同。

第二,为了安全起见

解决方法是在自定义SAMLAuthenticationProvider getExpirationDate方法中重写:

代码语言:javascript
代码运行次数:0
运行
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42472149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档