Could you please check the new (Java 8 based) implementation of 
TicketGrantingTicketExpirationPolicy.isExpired?

To my opinion the timeToKill check (sliding window) is not correct:

    public boolean isExpired(final TicketState ticketState) {
        final ZonedDateTime currentSystemTime = ZonedDateTime.now(ZoneOffset
.UTC);
        final ZonedDateTime creationTime = ticketState.getCreationTime();

        // Ticket has been used, check maxTimeToLive (hard window)
        // ...

        // Ticket is within hard window, check timeToKill (sliding window)
        expirationTime = creationTime.plus(this.timeToKillInMilliSeconds, 
ChronoUnit.MILLIS);
        if (ticketState.getLastTimeUsed().isAfter(expirationTime)) {
            LOGGER.debug("Ticket is expired because the time since last use 
is greater than timeToKillInMilliseconds");
            return true;
        }

        return false;
    }


Looking at the 4.2.2 implementation it should be something like this

    public boolean isExpired(final TicketState ticketState) {
        final ZonedDateTime currentSystemTime = ZonedDateTime.now(ZoneOffset
.UTC);
        final ZonedDateTime creationTime = ticketState.getCreationTime();

        // ...

        /* 4.2.2
        final long currentSystemTimeInMillis = System.currentTimeMillis();

                ...
        // Ticket is within hard window, check timeToKill (sliding window)
        if (currentSystemTimeInMillis - ticketState.getLastTimeUsed() >= 
timeToKillInMilliSeconds) {
            LOGGER.debug("Ticket is expired because the time since last use 
is greater than timeToKillInMilliseconds");
            return true;
        }

         */
        
        // Ticket is within hard window, check timeToKill (sliding window)
        expirationTime = ticketState.getLastTimeUsed().plus(this.
timeToKillInMilliSeconds, ChronoUnit.MILLIS);
        if (currentSystemTime.isAfter(expirationTime)) {
            LOGGER.debug("Ticket is expired because the time since last use 
is greater than timeToKillInMilliseconds");
            return true;
        }

        return false;
    }


Thx!

Best regards
Axel

-- 
CAS gitter chatroom: https://gitter.im/apereo/cas
CAS mailing list guidelines: https://apereo.github.io/cas/Mailing-Lists.html
CAS documentation website: https://apereo.github.io/cas
CAS project website: https://github.com/apereo/cas
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/a/apereo.org/group/cas-user/.
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/1ecb8a15-d8ff-4283-9eee-1ad7ba2da2aa%40apereo.org.
For more options, visit https://groups.google.com/a/apereo.org/d/optout.

Reply via email to