Если бы я делал это, что у меня фактически было несколько раз в прошлом, я бы использовал комбинацию Kerberos и LDAP. Kerberos обрабатывает аутентификацию и предоставляет пользователям токены. LDAP обеспечивает авторизацию; информация о членстве в группе, контактная информация пользователя и т. д.
Kerberos очень, очень хорошо протестирован и широко развернут. Чтобы защитить веб-приложение с помощью Kerberos, используйте Apache mod_krb5 или такое решение, как Stanford WebAuth. Пользователь проходит аутентификацию один раз в Kerberos, и затем его браузер использует билет через SPNEGO для автоматического входа в веб-приложение. Если у вас есть домен Windows Active Directory, то у ваших пользователей уже есть билеты Kerberos, которые вы можете использовать в сеансе входа в систему на своем компьютере!
Kerberos также поддерживается во многих других программах сетевого сервера, таких как OpenSSH, различные инструменты IPSEC VPN, электронная почта (как SMTP и IMAP), чат XMPP (Jabber) и т. Д. И т. Д.
Инфраструктура Kerberos может быть настолько избыточной, насколько вам угодно, и организована так, как вам нравится. Области могут иметь много серверов, обеспечивающих аутентификацию, и могут доверять друг другу произвольным образом.
Это не просто решение, это решение для единого входа.