Single Sign-On for Integrated Open-Source Apps?
maiden_taiwan asks: "We're constructing a free groupware application by integrating well-known
open source components:
apache webserver,
inn news server,
ircd chat,
scp for file transfer, etc.
Unfortunately, each app has its own incompatible concept of a
'user identity.' Apache has the
htpasswd
module, IRC has nicknames,
scp has public keys, NetNews has the poster's email
address, and so forth. Has anyone managed to integrate a similar
suite of apps using a single sign-on model, where a user has a single
identity that is understood and carried through all these apps?"
... is LDAP. BTW, fp.
LDAP+Kerberos (via GSS-API)
OpenLDAP supports GSS-API natively
iPlanet / Sun One Directory supports GSS-API with a plugin.
Do a couple searches on google. Lotsa good info on this arangement.
10b||~10b -- aah, what a question!
I haven't done it before, but I'm sure you could come up with something centered around LDAP that would accomplish what you're describing. I'm pretty sure there's an apache module for ldap, and I'm betting you'd be able to toss in the public keys for scp and modify the ldap schema with an extra field for irc.
Just a thought...
It might help if you were clear about what you were trying to do. Might the phpGroupWare project be something to base your project on?
Recent post to developers@dotgnu.info from Peter Minten:
a lot is unclear about the DotGNU Common Virtual Identity System (DCVIS or
simply VIS). And with the current amount of active auth coders that's not likely
to change soon. The VIS needs however to be integrated into the DotGNU System. I
therefore propose the following:
* We should create a specification of the VIS.
* These specifications should be used to implement a minimal feature reference
VIS server.
The way I see things there are a number of things to be put into the VIS spec:
* How the VIS server communicates with a webservice
* How a Virtual Identity must be structured (note that this only applies to the
VI send over the connection with the webservice, the VIS server's internal
structure of a VI is unspecified).
* What fields of a VI are mandatory (a field like name should be in all VI's)
After the VIS spec is put up a very basic reference implementation can be
created. The reference implementation can then be used as a testing aid for the
Arch and Auth coders.
My advice is to program a machine to do it for you.
We have a MySQL database that is used for e-mail, RADIUS, and FTP logins, and all those records are kept in MySQL... I'm not familiar with LDAP enough to suggest it, but it is there if you'd like to try... From what I've seen, and what we're doing, here's what I know is possible...
Apache has a mod_auth_mysql which will auth based on a MySQL database already... (http://sourceforge.net/projects/modauthmysql/)
That's trivial... They have a pam_mysql module as well that we use - it works... (http://sourceforge.net/projects/pam-mysql)...
Next on your list is inn, which I have no experience with. You'd most likely need to hack some form of parsing by e-mail address or IP (or password on a secured server) to verify/force identity...
ircd would be very easy to do... Shell account running a slightly modded "dircproxy" (http://www.dircproxy.net) would force identity based on a password, and would "proxy" the connection to the server transparantly.
Scp, if you're not using keys, could just use regular pam, with pam_mysql. Anyway, hope this helps.
LDAP may be a better solution, but I know for a fact this is possible (we're using these tools across apache, proftpd, scp, Courier-pop3/imap, and Exim for an MTA... we run a full ISP off these tools. Best of luck!
-PhaseBurn Welcome to Linux country. On quiet nights, you can hear windows reboot.
virtually everything you mentioned can be plugged up with LDAP one way or another.
11*43+456^2
Someone has... They are called Microsoft and its called Passport authentication.... If you ask nice, you can probably get their specs. They are usually pretty good about sharing their code. ;-)
Life will be much easier when I only have to compromise one password. Instead of one passwored per application.
My former organization (an NGO) attempted an single signon project for inn, rsync, & Apache 2 years ago. This was to be: a newsserver server, a webfrontend of the newsserver, web publishing, authoring tools, etc. We decide that LDAP was probably the best solution for a single signon.
Unfortunately back then, the software wasn't up to snuff, we had limited development experience to improve the existing tools, and we went bankrupt, and handed the project off to some other NGOs.
I've been recently laid off (Different company), and have been researching this project again. I'm amazed at the amount of progress that has been made since 2 years ago. It seems like LDAP is a good solution for single signon projects.
Apache 2.0 has added native support for LDAP, ldap; and there are several low-profile INN+LDAP projects out there (No large formal projects). I hear it's a good solution for remote-transfer users, like your 'scp' project.
Definately check out LDAP.
"Can of worms? The can is open... the worms are everywhere."
that's what it's for.
Ceci n'est pas un post
Kerberos+LDAP, as others have mentioned, is the best way to do it today, but if you'd like to hack on these projects to add single-signon capability, you might want to check out the Liberty Alliance. This is an industry group founded to combat Microsoft's Passport power-play. Being backed by big business, it might be what actually becomes a viable market solution, even if LDAP+Kerberos is more elegant.
Lots of people will sing songs about you if you contribute Liberty Alliance support to all those projects.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
M$N .net PASSPORT!!! Your universal authentication solution!!
Articulos para gente geek: Poleras, linux, libros y mas
Horde. The only hole they have for your project is for IRC, but I'm bet it could be integrated from Jabber readily.
Read my plan to save the Bengals
Today's solution is to use LDAP.
I have, right now, the following systems integrated using LDAP for authentication:
Linux (anything that uses PAM - ssh, ftp, X)
AIX 5.1
Apache (mod_ldap)
IBM HTTP Server (mod_ibm_ldap)
Several internal apps (PHP, Perl, C/C++)
MS Active Directory & Exchange
Lotus SameTime, and Lotus QuickPlace
Nortel Contivity VPN systems
And probably one or two things I've forgotten. So it's probably simple enough to add in the bits (IRC mainly) for the rest.
The Fourth Edition of Plan 9 includes a substantially reworked security architecture, described in the USENIX Security 2002 conference paper by Russ Cox, Eric Grosse, Rob Pike, Dave Presotto, and Sean Quinlan.
/sys/src/cmd/auth, particularly subdirectories factotum and secstore. The libraries /sys/src/libmp and /sys/src/libsec may also interest you.
One particular aspect that other operating systems may wish to adopt is our single-signon solution. A process called factotum is used to hold credentials like passwords and public/private keypairs and perform cryptographic operations. Factotum allows clients to speak a variety of cryptographic protocols and therefore legacy application servers can participate in our single-signon system without change and without even knowing it exists.
The factotum has no direct permanent storage, but rather fetches credentials at startup from a secstore server on the network. To authenticate safely with the secstore, Password Authenticated Key-exchange is used; this implies that the user just has to remember and type one password and passive eavsdroppers or even active malicious intermediaries can not launch even a dictionary attack against the system. The credentials are encrypted for storage on secstore, so even an administrator there would have difficulty reading them.
To see the code for all this, download the Plan 9 distribution and look in
Queries to ehg@lucent.com.
Copyright © 2002 Lucent Technologies. All rights reserved.
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Unfortunately, each app has its own incompatible concept of a 'user identity.'
Is this not the exact problem PAM was designed to fix? Most applications today can be made PAM-aware, then you can any method you want to store security information (names passwords, priviladges, etc.)
Kerberos.
That's it.
Already integrated into solaris and linux.
Lots of apps supports it.
It also support many scheme of authentication, from simple passwd file to NT logon / SecureID / biometrics (ugh).
#include "coucou.h"
Just a quick note:
Single Sign On refers to a system that allows a user to log in once and then have access to a number of subsystems. For instance, I'm an intern at UAB's Academic Computing department. Currently, we have our Bug management system (bugzilla), a CMS (phpWebSite) and a Task management system that all can be used by only logging in once. All applications except the simplest will need modifications to use Pubcookie.
The software we are using is called PubCookie and is developed by the University of Washington. Pubcookie is one of the tools being reviewed by the NSF's Middleware Initiative.
Single Sign On is a very popular and difficult problem right now, especially inter-realm SSO.
On the otherhand, if all you need is a unified username/password for your systems, you are in better luck. Many systems do support LDAP for authentication. Bugzilla has some beta LDAP support, PAM provides LDAP authentication for logging in, some CMS systems are starting to support it. Aside from that I am not sure what your options are.
You can use PKIX (X.509 certificates) with much of this infrastructure - Apache + mod_ssl, innd, ldap, postgresql and mysql, etc. The main hassle is that the different applications don't (yet) have the same view of how certs should work... and many don't yet require checking full certificate chains because the non-crypto core developers don't want to drive away users without a full PKIX intrastructure.
Now if only ssh would use conventional certs....
For every complex problem there is an answer that is clear, simple, and wrong. -- H L Mencken
Right now, at my company we are using OpenLDAP for these applications:
Sendmail >>> e-mail routing
maildap >>> E-mail group expansion
Cyrus >>> IMAP mail/news servers
SAMBA >>> Windows File sharing
Netatalk >>> Apple File sharing
FreeRADIUS >>> RAS and VPN authentication
BackupPC >>> End-user workstation backups
Apache >>> Intranet
include $sig;
1;
Please write HOWTOs.