Distributed authentication system (different domains, separatate databases) We got multiple small websites (microsites) and one main high traffic one with big users base. Right now the requirement is to build authentication system which should allow users to loign with the same identity across the network.

All website are running on different domains, powered by Drupal 6 CMS and have separate databases (so sharing tables with prefix is not an option + it creates a huge mess in the db).

Here is the set of core requirements I came up with:


Users should be able to login with the same credentials to all sites within the network
User’s data sharing between Main site (storage) and all micro sites within the network
Data synchronization across the network when user changes the data (update email or password for example)
The login/registration process should be seamless and consistent
Register on any of the sites across the network and use that identity to login later on.


In the future there might be a need to add openid authentication options.

Basically we are looking at something similar stackexchange does, but not sure if they have central users base on not.

I was thinking about custom solution which will include 2 parts (modules), one will be stored on the Main site for users data storing and responding to requests from clients. Second part (module) will be placed on each microsite, which is going to send requests to the Master. Some kind of client - server setup.

One of the complications I see right away is #3. Data Synhcronization across the network.

I just don't want to reinvent the wheel and maybe some work is already done in this direction.

Looking forward to your ideas on how to approach this project.

EDIT:

Recently I've found couple related threads on the topic:

http://groups.drupal.org/node/24916 
http://drupal.org/node/744400
This might be overkill, but have you considered using something like LDAP? 

There is an LDAP integration module and an LDAP provisioning module. Both of which work quite well.