Thanks for the reply. I think I will focus on the most important things to have closed scope ready to merge with trunk:
- leave the current @Secured and @RolesAllowed annotations support based on spring - add a single root resource with 3 dedicated (JAXRS) methods - add support for permissions and scopes (urls) like you described in previous email: > consumer may request a permission to "doSomething" at http://bar. If > authorized it can access http://bar, http://bar/1, http://bar/2) About explicit URI. The client needs to know anyway the resource URI it is > about to access. Perhaps with Facebook the client worl with the facebook > client library/frontend which knows the URI behind 'read_mailbox' ? Yes, client needs to know the 'mailbox' URI to know how to access this resource. Cheers, Lukasz On Mon, Nov 1, 2010 at 3:48 PM, Sergey Beryozkin <[email protected]>wrote: > Hi Łukasz > > On Mon, Nov 1, 2010 at 8:41 PM, Łukasz Moreń <[email protected]>wrote: > >> Hi Sergey, >> >> Yes, I was doing some commits recently and I have some work uncommitted. >> It was mainly support for @Secured and @RolesAllowed annotations and few >> simplifications. >> Support for @RolesAllowed is done with using spring configuration: >> >> <global-method-security secured-annotations="enabled" >> jsr250-annotations="enabled"/> >> >> > ok > > >> I need to look how it can be done without spring. >> >> > I have an interceptor sitting in my local snapshot which is able to > introspect the secure annotations. It's not critical having this done right > now, you may want to look into it as part of the overall no-Spring OAuth > solution at some later stage. > > >> The next thing I was thinking to do is to simplify server configuration. >> Now, user needs to define 3 oauth endpoints and one jaxrs provider. Then >> have to register them into jaxrs server, i.e.: >> >> <jaxrs:server id="oauthServer" address="/oauth/" > >> <jaxrs:serviceBeans> >> <ref bean="temporaryCredentialService"/> >> <ref bean="resourceOwnerAuthorizationEndpoint"/> >> <ref bean="tokenService"/> >> </jaxrs:serviceBeans> >> <jaxrs:providers> >> <ref bean="dispatchProvider"/> >> </jaxrs:providers> >> </jaxrs:server> >> >> > This approach of having 3 root resources, with each one dealing with a > specific OAuth task, is a valid one, but the obvious simplification is to > have a single root resource with 3 dedicated (JAXRS) methods delegating to > relevant utility classes. > > >> Maybe it would be good to use cxf <http:authorization> tag with value >> 'oauth' to automatically define and register oauth endpoints. Hovewer, I am >> not sure how important it is. >> >> > I'd not go there at this stage. I'm not entirely comfortable because OAuth > is many things : authenticating the client in the first place plus enforcing > that the token is valid and using it for making the authorization decisions. > For the same reason I'm not very keen on supporting the container-managed > 'OAuth' authentication... > > >> Saying scope I mean something like permission and requested URI. I've >> added scopes handling, similarly to facebook's extended permissions: >> http://developers.facebook.com/docs/authentication/permissions. >> For example client asks authorization server for the scope: 'read_mailbox', >> which hides information about permission ('read') and requested URI (mailbox >> URI). >> I am not sure if it has any advantages over specifying permission >> (print/read/etc) and URI explicitly . >> >> "read_mailbox" is a custom permission, and similarly, "print" or even > "read" can be a custom permission; so the first thing, I'd really prefer to > call the "permission" what you call "scope" now. IMHO, "client requesting a > 'read_mailbox permission" sounds ok... > > About explicit URI. The client needs to know anyway the resource URI it is > about to access. Perhaps with Facebook the client worl with the facebook > client library/frontend which knows the URI behind 'read_mailbox' ? See > > http://code.google.com/apis/accounts/docs/OAuth.html#prepScope. > > See sometimes we have end user and the client accessing the same resource > and we do not want the client accessing exactly the same space that the end > user can do. If it is possible to avoid for the client to specifying the URI > during the OAuth flow then it is fine, otherwise it should be optionally > supported. > > >> I think if above issues are addressed code is ready to be used in a sample >> project as a basic implementation. >> I agree that there is many options to add new improvements, and add most >> important at first. >> >> Sounds good. > > thanks, Sergey > >> >> Cheers, >> Lukasz >> >> >> On Sat, Oct 30, 2010 at 9:02 AM, Sergey Beryozkin >> <[email protected]>wrote: >> >>> Hi Lukasz >>> >>> You've done some merges recently to the sandbox OAuth project, thanks. >>> I haven't had time to run the latest code yet, so can you please >>> elaborate a bit on what do you >>> think remains to be done before we can start working on preparing a move >>> to the trunk ? >>> >>> I'm not sure about the support for @Secured annotations. I suspect that >>> many users, even when relying on Spring, and when choosing to use >>> security-related annotations, would probably use @RolesAllowed instead. >>> Well, it would be good if both annotations were allowed (vis reflection may >>> be) but @RolesAllowed is the one we need to support. >>> >>> About the scopes. Do you mean "permissions" ("print"/"read"/etc) ? To me >>> the scope means the URI space which a client is trying to access. So if the >>> client requests "http://bar" scope then "http://bar", "http://bar/y", >>> etc should be open, provided the authorization succeeds. I'd defintely like >>> us supporting this restriction (does not have to be 'scope'). >>> >>> I agree this is a complex and potentially a long term project so I don't >>> expect you merging forever :-). I think the test on whether is good to go to >>> the trunk or not is this : can a CXF user come in and read the demo ReadMe >>> and adapt it, without being an OAuth expert, to a basic sample project ? >>> Once we are there I'd really consider that it is a time for the next stage, >>> moving to the trunk, HTTPConduit redirection handlers support, etc... >>> >>> let us know please what you think >>> thanks, Sergey >>> >>> >>> On Thu, Sep 23, 2010 at 3:09 PM, Daniel Kulp <[email protected]> wrote: >>> >>>> On Wednesday 22 September 2010 2:50:17 pm Łukasz Moreń wrote: >>>> > Hi all, >>>> > >>>> > There are still "few" things to do with OAuth module before it can be >>>> easy >>>> > usable for users. >>>> > >>>> > From what I see: >>>> > >>>> > - integration with java role based access control (@RolesAllowed, >>>> @Secured >>>> > annotations). At least show how to configure that in demo. >>>> >>>> Yea. That would definitely be a good example/demo thing. I'd like to >>>> see >>>> it. :-) >>>> >>>> > - simplified configuration i.e. by registering OAuth endpoints >>>> > programmatically >>>> > - some refactorings, i.e. OAuthFilter does not need to have access to >>>> this >>>> > same interface like OAuth endpoints >>>> > - javadocs, wiki at least for most critical areas >>>> >>>> I don't remember, did we get an confluence account setup for you? If >>>> not, >>>> just let me know your user id there and I'll make sure you are setup to >>>> edit >>>> the wiki. >>>> >>>> > I will try to implement them in this order. >>>> > >>>> > Please let me know if you have any other ideas/suggestions for that. >>>> >>>> That all sounds great to me. :-) >>>> >>>> -- >>>> Daniel Kulp >>>> [email protected] >>>> http://dankulp.com/blog >>>> >>> >>> >> >> >
