I have EE integrated with phpCAS and LDAP. Would anyone be interested in this code? It’s not a simple EE hookable code since some of the hooks do not exist for EE as it stands right now. It is fairly easy to install and implement, assuming you can get your LDAP server to work. It really just entails modifying cp/cp.login.php and has been working great for us so far.
Based on the Active Directory membership, it will generate and/or update the user based on LDAP information and associate it to the right membership level and then login the user.
Even though we have CAS to run authentication, CASified apps are still responsible for making sure access rights are available., we have EE checking our LDAP server (Active Directory) to make sure the user is a member of the CMS group to enter new items. We do this by running sAMAccountName filter and the group:
e.g,
$result = ldap_search($ad, "DC=ad,DC=companyname,DC=com", "(&(objectClass=person)(sAMAccountName=$username)(memberOf=CN=Company CMS,OU=Web Services,OU=Groups,DC=ad,DC=companyname,DC=com))");CAS is called “Central Authentication Service,” which enables single sign-in and sign-out by issuing tickets similar to Kerberos. Many universities and companies are using to reduce login overhead as well as implement safer security.
The major benefit for us is that if an employee’s relationship with the company is terminated, our accounting system will disable the AD account and the former employee no longer has access to anything, making authentication simple.
It will also enforce single sign off, so if you sign off from any one service, the CAS server will issue callbacks to log all other sessions out. We’ve been using the rubycas module for our Salesperson frontend database (we don’t want them to have direct posting access to our accounting system, so we built a web-based Sales Order Processing interface). It is also hookable with e-mail servers such as Zimbra. We have CASified Highrise (internal Highrise URL + OpenID), Zimbra, Dynamics GP, Wiki, as well as a few other internal apps.
The other huge benefit with CAS is that if your company operates multiple domain names in a totally different namespace (e.g, abc.com and def.com) and cannot have cookie sharing, CAS makes it easy for you to make authentication seamless. So-called unified authentication systems are incapable of maintaining single sign-on through different namespaces. CAS requires either Java or Ruby. No implementation is available in PHP yet. Chances are, if your company doesn’t run Java, you probably don’t need it yet. If you have Peoplesoft apps like we do, you probably will have access to Java EE.
I’ll make this code available under BSD. Let me know what you think and if you think it would be useful for this kind of thing to be maintained. I’ll also see if I can make it hookable as a plugin or something.
Jason
Moved to HowTo by Moderator