2017-02-26 2 views
0

Ich habe Spring SAML-Anwendung mit WSO2 konfiguriert. Wenn sich der Benutzer anmeldet, ruft er eine Bestätigung mit einer Gültigkeitsdauer von 5 Minuten ab. Aber nach 5 Minuten ist keine Refresh Assertion aufgetreten.Spring SAML WSO2 Refresh Assertion

Wie kann der Aufruf von /saml/sso beim erneuten Laden der Seite aktiviert werden, nachdem die Assertion abgelaufen ist? Vielleicht kennst du eine andere Lösung? Einige Bohnen Eigenschaften?

maxAuthenticationAge in org.springframework.security.saml.websso.WebSSOProfileConsumerImpl funktioniert nicht.

forceAuthN in org.springframework.security.saml.websso.WebSSOProfileOptions funktioniert nicht.

Antwort

1

Zunächst war in Behauptung nicht SessionNotOnOrAfter Eigenschaft in AuthnStatement, so Ablaufzeit war null. In diesem Fall bekomme ich Ablaufzeit von Conditions Element von NotOnOrAfter Eigentum, IMHO hat es gleichen Wert wie SessionNotOnOrAfter sollte.

Zweitens, um sicher zu sein, ich minus 1 Minute von Ablaufzeit, um sicher zu sein, wird diese Behauptung immer am Leben sein.

Behelfslösung ist in benutzerdefinierten SAMLAuthenticationProvidergetExpirationDate Methode außer Kraft zu setzen:

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