Jasig/cas — pull request #32 by leleuj (2012-01-17 14:09:29+00:00)
Title: Add support for OAuth

Hi,

I think OAuth protocol has become a mainstream protocol and it would be a great feature to add support for OAuth in CAS.
I'll make a first try in september 2011 with the JIRA CAS-1041. I reuse a prototype I created to integrate OAuth in CAS server.
The idea was to delegate the authentication to Facebook, Yahoo... I didn't get much success with it. I confess the JIRA was not easy to undestand as I deliver 7 patches.

This pull request is a more complete and proper try to add support for OAuth protocol in CAS.
It's a complete module : cas-server-support-oauth. The module allows two modes of OAuth support in CAS :
– CAS server can support OAuth protocol as an OAuth client : in this case, CAS authentication can be delegated to an identity provider like Facebook, GitHub, Google, LinkedIn, Twitter, Yahoo or even an another CAS server using OAuth wrapper
– CAS server can support OAuth protocol as an OAuth server : in this case, CAS uses the OAuth wrapper and acts as an OAuth server, communicating through OAuth protocol version 2.0 with OAuth clients.

I've made many tests and succeed in authenticating in Facebook, GitHub, Google, LinkedIn, Twitter and Yahoo. I also test with two CAS servers, one acting as an OAuth client and the other one acting as an OAuth server : the first one delegates the authentication to the other one and after authentication, you are authenticated in the first server, communication happens only through OAuth protocol.

To help understanding and integration, I write a complete documentation (12 pages) which explains how to configure the two modes of support and how technically they work. However I didn't find how to attach my documentation to this pull request.

I hope you, CAS core developpers (and more generally the CAS community) get interested by this module and the OAuth support in CAS.

Don't hesitate to ask me if you have any questions...

Thanks.
Best regards,
Jérôme