[Openid-specs-ab] User Profile liveness
jricher at MIT.EDU
Thu Feb 4 16:05:37 UTC 2016
One of the good things in OIDC is the fact that the claims about a user are split between the ID Token (things that are needed for the authN transaction) and the user info endpoint (things that are needed for the profile and other functions of the app). Theoretically it cuts down on sending redundant and unchanging information with each authentication. However, the tension of whether and when an RP should pull from the IdP’s UserInfo Endpoint is an age old question of cache consistency. Should the RP call on each transaction? After a time out? When it really really wants to?
Anyway, I think there’s a simple way that the IdP can signal to the RP whether it’s worth pulling information. If the IdP always includes the “last_updated” claim in the ID token, the RP can decide whether its cache of UserInfo is fresh enough or not by doing a simple comparison on that value and its local cache. It’s coarse grained, because you don’t know if you care about whatever claim was updated or not, but it’s at least *some* signal that can be used inside an already existing structure.
We’re considering just implementing this in our server and client, but I’d like to see what others thought of this idea and if it would be worthwhile propagating this pattern. I feel it’s very low overhead in the ID Token for a potentially big benefit of live data and lower network traffic from the RP.
More information about the Openid-specs-ab