Another option that just hit me is to have the perl code implement the authentication interface. This is the target of the <authentication> element in the <handler> element. See "The Authentication Resource" chapter of the auth dev guide. The format of the returned information is:
<authentication> <ID>value</ID> <role>rolename</role> <!-- optional --> <data> ... resource specific data for the user </data> </authentication> So as long as your perl can generate this on a socket, just point the handler at it. This doesn't answer how you would accomplish SSO, but it might be a piece of the puzzle. -b > -----Original Message----- > From: Brian Topping > Sent: Sunday, June 09, 2002 7:05 AM > To: [EMAIL PROTECTED] > Subject: RE: Cocoon and Integration with Apache > Authentication/Authorization System > > > > > > -----Original Message----- > > From: Frank Ridderbusch [mailto:[EMAIL PROTECTED]] > > Sent: Saturday, June 08, 2002 5:30 PM > > To: cocoon > > Subject: Cocoon and Integration with Apache > > Authentication/Authorization > > System > > > > > > Hi folks, > > > > I'm looking for some ideas/suggestions, how I might integrate > > cocoon better > > with Apache's basic authentication system or the other way around. > > > > I plugged a > > mod_auth_samba module into apache. This allowed me to > > additionally authenticate > > a user against the Windows domain controller (with a little > > local DB file for > > groups/roles). > > So if you want to keep SMB as your primary auth, it would > make sense to keep it. Getting a windoze PDC to auth against > anything but another PDC is a PITA. > > > I'm now looking for an idea, how I can connect apache with > > cocoon in terms > > of authentication and authorization. > > > > - Should cocoon redirect to a apache page, which in turn > > feeds the results > > of the basic authentication back into cocoon? What would I > > need to know > > to do this? > > Seems like you could use the RequestGenerator to check the > username that the user has authenticated against in basic > auth, redirecting back to the apache pages when there is no > username. You can take that username and build Cocoon > credentials from there. But you can see that this is not > secure to someone that can forge HTTP headers, since they can > put a known username in the header with any password, and > Cocoon auth has no way of checking it. > > > - Should I use cocoon for authentication and use the > > information in the > > cookie and use the Apache::AuthCookie for the rest of the > > apache/mod_perl > > system. Or the other way around? Start with a basic > > authenticated page, > > stuff the required info into a cookie and use > > Apache::AuthCookie for the > > rest of the apache system and somehow also use the info > > from the cookie > > in the cocoon pipelines. > > If a cookie floating across the network gets cracked and it > contains a password, an attacker has a password that they can > start logging onto windows shares with. But it's trivial to > decrypt the password that comes with every request of a basic > auth protected site, so I'm guessing crackers aren't a > problem on your network. Standard cookie security uses a > session discriminator in the cookie, and the session records > where the connection came from, both address and port. SSL > solves the basic auth, cookie-with-password and > man-in-the-middle problems. > > So given that you have a session discriminator in a cookie > and you are using disparate modules (mod_jk / tomcat in one > and mod_perl in the other), you could solve the dual login > problem with unified session managment. I can't think of a > way you are going to easily get that since sessions are a > function of the module and not the apache server. I could be > wrong on that, but the point is, you need to have a session > state that is available to both Tomcat and Perl to have true > "single sign on". You could write a session manager server, > but it sounds like a pretty nasty single point of failure. > > A very common option is to have the information stored in an > LDAP server, since LDAP is usually the common denominator of > fast and secure key-value repositories. If there was a way > to keep an LDAP repository in sync with your PDC, you could > have both Perl and Cocoon auth talk to the LDAP separately, > keep separate session contexts, and go from there. A login > to one system could generate a browser redirect to the other > system, the cookie could be read on that system, pushing > another login into the second system. Sounds pretty ugly to > me, but it's an option for SSO. And you need to check > availability of LDAP on both platforms. On Cocoon, you would > probably use the LDAP transformer, pipe that into a XSLT > Transformer, turn the LDAP transformer output into something > that the authentication action could work with, and you would > be golden. > > Of course, if you had an LDAP server synchronized to your > PDC, you could leave all your existing perl stuff asis, then > just worry about the Cocoon side. I think there is something > like this available for or as an integral part of W2K server. > > > I guess, this would mean, I would have to fiddle with JAAS > > to connect > > to the Windows domain controller (I tried to make sense > > from the JAAS > > documentation, but haven't yet really succeded). > > JAAS is the future of java authorization and authentication, > but it's really overwhelming to pick up. > > Hopefully this doesn't add more questions than answers... > there's still a ton of gaps here, but hopefully a start. > > -b > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> > > --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>