Perfect, it works now. Thanks :-)

- Fabien.

Le mercredi 5 septembre 2012 10:24:22 UTC+2, nicolas de loof a écrit :
>
> You're in the dev team for this plugin : 
> https://github.com/organizations/jenkinsci/teams/239745
>
> 2012/9/4 Fabien Crespel <fab...@crespel.net <javascript:>>
>
>> Thanks Nicolas. It seems that I don't have commit rights over the forked 
>> repo though, could you please double check this and fix it? My GitHub 
>> username is fcrespel.
>>
>> - Fabien.
>>
>>
>> Le mardi 4 septembre 2012 08:00:53 UTC+2, nicolas de loof a écrit :
>>>
>>> Done,
>>> Repo : 
>>> https://github.com/**jenkinsci/cas-plugin<https://github.com/jenkinsci/cas-plugin>
>>> CI job : 
>>> https://jenkins.ci.**cloudbees.com/job/plugins/job/**cas/<https://jenkins.ci.cloudbees.com/job/plugins/job/cas/>
>>>
>>>
>>> 2012/9/3 Fabien Crespel <fab...@crespel.net>
>>>
>>> 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/**je
>>>>> **nkins-cas-plugin <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().**getRootU**rl(), 
>>>>>>>>    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/**je**nkins-cas-plugin<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.
>>>>>>>>
>>>>>>>
>>>
>

Reply via email to