2017-02-26 12 views
0

WSO2でSpring SAMLアプリケーションを設定しました。ユーザーがログインすると、有効性5分のアサーションを取得します。しかし、5分後にはリフレッシュアサーションは発生しません。Spring SAML WSO2リフレッシュアサーション

アサーションの有効期限が切れた後にページリロードで/saml/ssoを呼び出す方法を教えてください。多分あなたは別の解決策を知っていますか?いくつかの豆の味は?

maxAuthenticationAgeorg.springframework.security.saml.websso.WebSSOProfileConsumerImplは機能しません。

forceAuthNorg.springframework.security.saml.websso.WebSSOProfileOptionsは機能しません。

答えて

1

まず、アサーションではAuthnStatementSessionNotOnOrAfterというプロパティがないため、有効期限はnullでした。この場合、有効期限は要素からNotOnOrAfterまでですが、IMHOの値はSessionNotOnOrAfterと同じです。

第2に、有効期限からマイナス1分を確実にするために、そのアサーションは常に生きています。

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; 
} 

回避策は、カスタムでSAMLAuthenticationProvidergetExpirationDateメソッドをオーバーライドすることです

関連する問題