Observations:
1) I've noticed that JpaTicketRegistry#deleteTicket(String ticketId) deletes 
child service tickets when ticketId corresponds to a TGT, but that the same 
method in BerkeleyDbTicketRegistry, JBossCacheTicketRegistry, and 
MemCacheTicketRegistry do not.

2) JBossCacheTicketRegistry#needsCallback() and 
MemCacheTicketRegistry#needsCallback() both return true, but 
BerkeleyDbTicketRegistry#needsCallback() returns false.

3) CentralAuthenticationServiceImpl#validateServiceTicket(String ticketId, 
Service service) retrieves the granting ticket in order to extract the 
authenticated principal like so:
     serviceTicket.getGrantingTicket().getChainedAuthentications()....

So, a couple of problems result, I think:

A) For those using JBossCacheTicketRegistry or MemCacheTicketRegistry, it looks 
like a NullPointerException is possible in 
CentralAuthenticationServiceImpl#validateServiceTicket(...) if a user logs out 
before a service validates a corresponding service ticket, because 
AbstractDistributedTicketRegistry$TicketDelagator#getGrantingTicket() will 
return null.

B) For those using BerkeleyDbTicketRegistry, it looks like a service ticket 
could validate even after the TGT is deleted.

No big deal, probably.

I'm scrutinizing this race condition because I'm working on 
RiakTicketRegistry#deleteTicket(String ticketId), trying to improve my 
implementation of deleteTicket()--specifically the quite expensive task of 
deleting unused child service tickets, which requires a map-reduce query. 
(Originally, I did needsCallback()-->false, for some reason.) My first approach 
was to expose a new method, TicketGrantingTicketImpl#getServiceTicketIds(), so 
I can iterate and delete ones that still exist without querying the registry. 
Now I notice it'd be much simpler to return true from needsCallback() and just 
leave service tickets orphaned. Our TGT's and ST's are stored in Riak buckets 
which auto-expire objects anyway.


-Nate


-- 
You are currently subscribed to cas-dev@lists.jasig.org as: 
arch...@mail-archive.com
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-dev

Reply via email to