You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Sergey Beryozkin <sb...@gmail.com> on 2015/12/28 17:16:52 UTC

New OAuthDataProvider methods on the trunkk/3.1.x

Hi

I had to update OAuthDataProvider interface and add two methods for 
listing the access and refresh tokens associated with a given OAuth2 
client. Also, AuthorizationCodeDataProvider which extends 
OAuthDataProvider has a new method for listing the pending code grants 
associated with a given Client, so we have

List<ServerAccessToken> getAccessTokens(Client)
List<RefreshToken> getRefreshTokens(Client)
and
List<ServerAuthorizationCode> getCodeGrants(Client)

The reason I've done it is that it has become obvious OAuthDataProvider 
interface supports managing the existing tokens/grants in a very limited 
way. It is really important from a management point of view to show all 
the access and/or tokens associated with a given client or user.

I could've introduced new interfaces and made only the utility 
(AbstractOAuthDataProvider) provider shipped with CXF implement them but 
I did not because:
- I felt like that it would add an extra 'noise' into an already complex 
OAuth2 runtime/API - after all, listing the existing tokens is quite a 
fundamental thing which would not be a new 'challenge' for the existing 
provider implementations - they store the tokens, can extract them by 
their ids, so obviously they can get them listed too

I had to do it for 3.1.5-SNAPSHOT because the OIDC module we do in Fediz 
does depend on 3.1.5-SNAPSHOT and we can not wait till 3.2.0 gets 
released (which is quite far away at this point of time).

Hope those who are working with CXF 3.1.4 and doing some custom OAuth2 
servers will not find it difficult to migrate. However if someone thinks 
it can pose some problems for their productions (and this is why I send 
this mail to users) then I can revisit the idea of getting the above 
methods added to dedicated interfaces. Let me know in this thread or 
contact me privately if you prefer

FYI, besides the above changes I've deprecated
OAuthDataProvider.removeAccessToken but will remove it only in 
3.2.0-SNAPSHOT (master). The reason being is that OAuthDataProvider also 
has a revokeToken accepting a token hint which is part of the standard 
oAuth2 token revocation API.
Removing OAuthDataProvider.removeAccessToken will make this interface a 
bit more minimalistic

Thanks Sergey