Hello there, Jenkins admins, could you please review my plugin fork request above? it has gone unnoticed for more than a month now... :-) If there is anything preventing it, please let me know.
Thanks, Fabien. Le lundi 30 juillet 2012 10:08:49 UTC+2, Fabien Crespel a écrit : > > Hello, > > It has been a bit more than a couple weeks now and I'd like to move > forward with this. Considering this plugin is separate from the CAS1 > plugin, I don't see an issue with releasing it now even if the CAS1 plugin > isn't immediately marked as deprecated; for the moment a simple notice on > its wiki page could invite users to try the new plugin. > > Jenkins admins, are you fine with this and if so, could you please proceed > with forking the code repo at > https://github.com/fcrespel/jenkins-cas-plugin, giving me access to the > forked one as well as setting up the CI job? > > Thank you in advance, > Fabien. > > > Le jeudi 12 juillet 2012 22:49:48 UTC+2, Fabien Crespel a écrit : >> >> Thanks for your feedback :-) >> >> I merged your pull request and added 2 commits, to fix an extraneous "/" >> character in the logout URL and a problem with SAML 1.1 when running under >> the embedded Jetty from the HPI plugin. So you should be able to test the >> plugin simply by running "mvn hpi:run" from the command line, and >> configuring the CAS Security Realm at localhost:8080/configure. As a side >> note for anyone else interested in testing, you can get a CAS server >> working in no time by dropping the >> cas-server-webapp<http://repo1.maven.org/maven2/org/jasig/cas/cas-server-webapp/3.4.12/cas-server-webapp-3.4.12.war>into >> a servlet container (e.g. Tomcat); the default config allows you to >> login with matching pairs of username/password (e.g. test/test). >> >> Regarding the Jetty jsessionid hack, I haven't seen a need for it during >> testing... it may no longer be an issue, or the way the new plugin works >> simply doesn't trigger the problem..? >> As for the migration path from the CAS1 plugin, I would agree that simple >> deprecation and prominent notices on the wiki are enough; there aren't many >> options to configure so users could simply copy them. >> >> So if you think that this new plugin is ready for publication, could you >> please give your green light here so that Jenkins admins can fork the repo, >> create the CI job, etc. ? >> >> Thanks in advance, >> - Fabien. >> >> >> Le jeudi 12 juillet 2012 06:10:19 UTC+2, J. David Beutel a écrit : >>> >>> This looks like a big improvement! The code looks clean and nicely >>> factored. >>> >>> I haven't worked on the old one for a couple years, and it's the only >>> Jenkins plugin I've done, so I don't know just by looking at the new one >>> whether there are any problems. A code review by an experienced Jenkins >>> developer would still be good to get. But, I'll try out the new one, when >>> I finally get time to update the Jenkins instance I'm using now. >>> >>> I didn't see the jsessionid hack for Jetty; is it not needed anymore? >>> It might only be an issue with the CAS 1 client library, or some old >>> version of one of the other components. >>> >>> I don't know if there are any potential issues with using Spring >>> Security together with Acegi. I guess it's OK, if it works, and they're in >>> separate packages. >>> >>> If it's accepted as an official plugin, I guess we'd just deprecate the >>> existing CAS1 plugin, with a link on the wiki to the new one. I don't >>> think that an automatic migration of the configuration is necessary. To >>> upgrade, can users just install the new one, manually configure it like the >>> old one, and uninstall the old one? The users of the old one will dwindle >>> naturally. You're welcome to look into automating the migration, but I >>> don't think it's worth the effort. >>> >>> The one change I'd make is to an example in a help text, to make the >>> usernames anonymous. I'll send you a pull request with that. >>> >>> Cheers, >>> 11011011 >>> >>> On Wednesday, July 11, 2012 10:03:16 AM UTC-10, Fabien Crespel wrote: >>>> >>>> Hello, >>>> >>>> I would like to contribute a new *CAS SecurityRealm plugin* to >>>> Jenkins. Jasig CAS <http://www.jasig.org/cas> (Central Authentication >>>> Service) is a single sign-on (SSO) service implemented as a web >>>> application, and is commonly used in universities and enterprises to >>>> secure >>>> applications without having to login again and again. >>>> >>>> While looking for a way to login with CAS from Jenkins, I found the CAS1 >>>> plugin <https://wiki.jenkins-ci.org/display/JENKINS/CAS1+Plugin> by J. >>>> David Beutel, but as the plugin name implies it only supports the legacy >>>> CAS 1.0 protocol with custom extensions for role parsing. >>>> >>>> The plugin I have developped currently supports the following features: >>>> >>>> - *CAS protocol version 1.0*, preserving role parsing features from >>>> the existing CAS1 plugin. >>>> - *CAS protocol version 2.0*, with limited attribute support >>>> (custom protocol extensions need to be added to the CAS webapp). >>>> - *SAML protocol version 1.1*, with full attribute support >>>> (groups/authorities, mail and full name sync). >>>> - *Authentication renewal* (if enabled, user will have to input >>>> credentials even if a session already exists at CAS side). >>>> - *Single sign-out* (if enabled, user will be logged out of Jenkins >>>> if he logs out of CAS or from other CAS-enabled applications). >>>> - Fully *configurable*, with inline *help *and *i18n *support >>>> (French translation included, except for help texts). >>>> >>>> There are at least a couple more features that I'd like to try >>>> implementing, when/if I have time: >>>> >>>> - CAS 2.0 proxy support (needs configuration and testing) >>>> - CAS gateway mode (if a CAS session exists, login immediately on >>>> first visit) >>>> >>>> >>>> A few implementation notes: >>>> >>>> - This plugin was developed from scratch, it is not a fork of the >>>> CAS1 plugin and works differently, but it uses some bits of code from >>>> it >>>> for CAS 1.0 role parsing. >>>> - CAS protocols are exposed and configured as *extension points*, >>>> making it easy to add more as CAS evolves (e.g. SAML 2.0 one day?) >>>> - CAS authentication filters are defined in a * >>>> CasSecurityRealm.groovy* script defining Spring beans, and are >>>> executed before the original filters configured by Jenkins. This means >>>> that >>>> *anonymous *access and *API Token auth* still work as expected. >>>> - CAS needs Jenkins' URL to be able to redirect back to it; this >>>> plugin simply uses Jenkins.getInstance().getRootUrl(), unlike the CAS1 >>>> plugin which included a specific configuration option. >>>> - Due to missing features in the Acegi Security CAS support, *Spring >>>> Security* 3.0.7 is used instead and up to successful authentication >>>> - at which point the Spring Security Authentication object is mapped to >>>> an >>>> Acegi one and stored in the Acegi SecurityContext. Unlike Acegi, the >>>> Spring >>>> Security CAS support relies more on the official CAS Client library, >>>> supports more protocols and can use attributes to fill authorities. >>>> >>>> >>>> Now, there are a few things I'd like to get feedback on and discuss: >>>> >>>> - Is the Spring Security dependency a potential issue? AFAIK >>>> Jenkins isn't going to move away from Acegi any time soon, and during >>>> testing I didn't find any negative side effect due to using this >>>> library. >>>> The resulting HPI file is only 3 MB big including dependencies. It's >>>> surely >>>> possible to backport Spring Security CAS code to Acegi if need be, but >>>> it >>>> doesn't feel right to me :-) >>>> - If this new plugin is accepted as an official plugin, what would >>>> happen with the existing CAS1 plugin? would they coexist or the new >>>> plugin >>>> be considered as a replacement, and the old one marked as deprecated? >>>> should automatic configuration migration between the two be considered >>>> and >>>> if so, how? (I guess J. David Beutel should weight in here, if >>>> possible, as >>>> the author and maintainer of the CAS1 plugin). >>>> - Considering this is my first Jenkins plugin, a code review would >>>> be most welcome. :-) >>>> >>>> And talking of *code *- here it is at GitHub (username is fcrespel): >>>> https://github.com/fcrespel/jenkins-cas-plugin >>>> Could you please consider it for forking into the official jenkisci >>>> repos? Note that I prefixed my repo with 'jenkins-' but that's really only >>>> for me, after forking I guess the repo should simply be named 'cas-plugin'. >>>> If accepted, I would of course work on a proper wiki page to describe >>>> how to configure the plugin. >>>> >>>> Please let me know what you think, comments and feedback will be >>>> appreciated :-) >>>> >>>> Best regards, >>>> - Fabien. >>>> >>>