Proposal Declined
Details
Assignee
UnassignedUnassignedReporter
Wilko KempaWilko Kempa(Deactivated)Components
Priority
Minor
Details
Details
Assignee
Unassigned
UnassignedReporter
Wilko Kempa
Wilko Kempa(Deactivated)Components
Priority
Created January 27, 2014 at 7:54 PM
Updated July 15, 2014 at 7:10 AM
Resolved July 15, 2014 at 7:10 AM
TicketGrantingTicketImpl contains a hashmap of services (service by id). This references are used to logout from all services which have been used in case the TGT expire(s). Only in case of the expire these pairs (id, service) are released.
Problem is that the id used to store a service in the hashmap is the service ticket id. It is generated in CentralAuthenticationServiceImpl.grantServiceTicket
... final ServiceTicket serviceTicket = ticketGrantingTicket .grantServiceTicket(serviceTicketUniqueTicketIdGenerator .getNewTicketId(ServiceTicket.PREFIX), service, this.serviceTicketExpirationPolicy, credentials != null); this.serviceTicketRegistry.addTicket(serviceTicket);
That means the TGT services hashmap contains one entry per Service Ticket which was created during the live time of the TGT. With long RememberMe times this causes TGT to consume substantial memory. In our case with web page = service we end up with approx. 1MByte per TGT after 10-20days.
I propose to introduce an explicit logout url per service and use it instead of the ST id to store the service. This would allow to have one logout per service e.g. webapp in our case.