Me interesa cómo implementar un sistema de inicio de sesión compartido entre dominios, así como las mejores prácticas y precauciones de seguridad. Si está familiarizado con 37Signals, probablemente esté acostumbrado a su uso de tener un mecanismo de autenticación universal compartido por el cual no tiene que iniciar sesión posteriormente si usa el nivel superior de navegación para un producto diferente. Me gustaría implementar algo de manera similar.¿Cómo crear un Servicio de inicio de sesión compartido en varios dominios?
Lo más parecido que he encontrado en línea es la entrada de Wikipedia en un Central Authentication Service y la respuesta a Cross Domain Login - How to login a user automatically when transfered from one domain to another, que puede ser ligeramente diferente en este caso.
He inspeccionado sus cookies de sesión para obtener una idea de lo que están haciendo en el proceso. Inicialmente, cada eslabón producto tiene una uristub "goto", es decir:
https://MY_COMPANY.campfirenow.com/id/users/[int_identifier]/goto
Usando Firecookie y la lengüeta de NET en Firebug, soy capaz de ver las cookies que se establecen y las redirecciones eso ocurre en el proceso. La url goto
dispara una redirección 302 a:
https://MY_COMPANY.basecamphq.com/login/authenticate?sig=[BASE64_ENCODED_AND_ENCRYPTED_DATA]
se vuelve a crear el identificador de sesión, lo más probable para los propósitos CSRF. Algunos de los datos en las galletas, así como la sig parámetro GET se descifra parcialmente usando base64_decode a lo siguiente:.
// sig GET param
array(2) {
[0]=>
���ף�:@marshal_with_utc_coercionT7�z��<k��kW"
[1]=>
string(18) "���k�<kn8�f���to��"
}
// _basecamp_session cookie session param
string(247) {
:_csrf_token"1Sj5D6jCwJKIxkZ6oroy7o/mYUqr4R5Ca34cOPNigqkw=:session_id"%060c0804a5d06dafd1c5b3349815d863"
flashIC:'ActionController::Flash::FlashHash{:
@used{: auth{"
MY_COMPANY{:
user_idi�3
:identity_idi�W����������s�]��:�N[��:
߾"
La codificación se está rompiendo el bloque de código Gracias por su ayuda!
¿Funcionaría para usted un servicio de inicio de sesión compartido preempaquetado como OpenID, Facebook, OAuth o Google? ¿O necesita absolutamente su propio servicio de inicio de sesión compartido? – Flipster