Necesito compartir información de SSO entre dos dominios diferentes con una cookie, ¿se puede hacer esto en PHP y cómo?¿Cómo utilizo las cookies en dos dominios diferentes?
Respuesta
En ambos dominios, coloque una imagen u otro elemento web extraído del otro dominio. Use la URL para notificar al otro dominio que el usuario X está en el dominio A, y permita que el dominio B asocie ese ID de usuario con ese usuario en su sistema.
Es un poco complejo de llevar a cabo correctamente, pero si lo hace funcionará muy bien.
Vinko señala en un comentario (¡gracias!) Que no debería dar por sentado que comprende los riesgos de seguridad involucrados. Si esta información es de algún valor para cualquier persona, entonces debe asegurarse de utilizar el cifrado, la autenticación, etc. apropiados para evitar la divulgación de información confidencial y evitar varios ataques (repetición, hombre en el medio, etc.). Esto no debería ser demasiado oneroso ya que usted controla ambos sitios web y puede seleccionar una clave secreta segura para ambos, ya que la comunicación solo va entre los dos servidores a través de esta URL especial. Sin embargo, tenlo en cuenta.
-Adam
Tendría que agregar algo de encriptación y evitar repetir los ataques. Puedes hacer eso haciendo que A y B compartan un secreto. –
Depende. Si la información es de poco o ningún valor, entonces no hay necesidad, pero si está compartiendo algo importante, entonces necesita involucrar autenticación, encriptación, etc. Esto complica un poco las cosas, pero como usted controla ambos sistemas no es difícil tener un secreto compartido. –
No es difícil, pero tiene que ser considerado. Y no olvides hacer esos URI por única vez. –
no lo hace, las cookies están unidos a un dominio. Hay restricciones en esto y se conoce como cross scripting scripting.
Ahora, para algo de ayuda a su problema. Lo que puedes hacer es crear una secuencia de comandos que ayude a unirlas.
Puede reescribir globalmente todos los enlaces a su segundo sitio que necesitarán información de cookies desde el primer sitio.
Guardará todas las cookies del sitio-a en una base de datos que ambas pueden leer, luego agregará programáticamente la cadena de consulta de cookie-id en todos los enlaces al sitio-b, luego buscará esa identificación de cookie y volverá establecer las cookies bajo el nuevo dominio.
Hay una muy buena biblioteca de abstracción de bases de datos PHP (PHP ADODB) y tiene un plugin para compartir sesiones que hace que todo esto sea mucho más fácil.
Bueno, si sus dominios son solo subdominios diferentes, podría hacerlo de una manera fácil creando una cookie .yourdomain.com
. Luego, la cookie se pasa junto con todas las solicitudes en todos los subdominios.
No es tan simple si desea compartir cookies entre diferentes dominios, ya que los navegadores lo consideran un riesgo de seguridad.
¿Cuál es el ejemplo exacto?
En el caso de algún software como Google Analytics y otras imágenes de seguimiento, etc. es posible que deba utilizar encabezados P3P para que el navegador sepa que no le importa la seguridad al enviar las cookies. Luego, una imagen que solicita el navegador obtiene una cookie como parte de la respuesta y también inspecciona P3P. Si todo está bien, guarda la cookie en el disco duro y la próxima vez que solicite una imagen en su sitio web (pero es parte de la página de otros dominios) el navegador enviará la cookie. Pero supongo que esto no ayuda ;-)
Nunca he usado un valor de cookie entre dominios en un sentido directo de ello.
No estoy seguro acerca de las implicaciones de seguridad, pero hay una configuración de Apache que le permite cambiar el dominio de una cookie.
# in httpd.conf (or equivalent)
php_value session.cookie_domain mydomain.com
He utilizado con éxito este método para los subdominios, pero nunca he intentado para diferentes dominios.
También hay un método para establecer la dirección de las variables en PHP descrito en http://us.php.net/manual/en/function.session-set-cookie-params.php. La documentación no hace referencia a la capacidad o incapacidad de establecer cookies en un dominio diferente.
Hay un Stack Overflow thread diferente sobre este mismo tema, pero no creo que haya sido suficientemente respondido.
Si tiene dos sitios utilizando el mismo dominio y le gustaría compartir las galletas entre ellos, establecer algo como esto en su archivo settings.php
para cada dominio: ''
ini_set('session.cookie_domain', '.EXAMPLE.com');
Asegúrese de incluir el líder antes del nombre de dominio, o no funcionará.
Esto permite a los usuarios mantener el estado de inicio de sesión entre los sitios configurados para las cookies de todo el dominio.
Esto también puede tener efectos secundarios negativos, por lo tanto, no lo haga a menos que esté familiarizado con todas las cookies involucradas para los sitios donde desea compartir las cookies.
- 1. Cookies entre dominios
- 2. ¿Cómo comparto las cookies en 2 dominios con javascript?
- 3. PHP Cookies para dominios múltiples
- 4. diferentes dominios a diferentes páginas en IIS7
- 5. dominios para diferentes protocolos
- 6. .htaccess, YSlow, y "Usar dominios sin cookies"
- 7. Obtener cookies de configuración en diferentes dominios, con javascript u otro
- 8. htaccess: redirige todas las solicitudes a diferentes dominios
- 9. Rails - Dominios de cookies dinámicos usando Rack
- 10. ¿Cómo funcionan las cookies?
- 11. Leer cookies entre dominios (Cross-Sub-Domain) en ColdFusion (HTTPS)
- 12. ¿Cómo configuro las cookies desde dominios externos dentro de iframes en Safari?
- 13. (Django) Compartir la autenticación en dos sitios que están en dominios diferentes
- 14. jQuery AJAX con dos dominios
- 15. Cómo usar robocopy para copiar directorios en diferentes dominios
- 16. Cookies que no funcionan en diferentes páginas
- 17. Pregunta sobre el CNAME para diferentes dominios
- 18. enrutamiento mvc3 con 2 dominios diferentes
- 19. Especificación de diferentes servidores DNS para dominios diferentes
- 20. Las cookies dentro de secuencia de comandos incluyen en dominios cruzados
- 21. Cómo leer las cookies locales
- 22. Cómo matar las cookies zombie
- 23. Glassfish 3.1.1 - ¿Cómo habilitar el administrador seguro para diferentes dominios?
- 24. ¿Cómo puedo mostrar las cookies en Codeigniter?
- 25. ¿Cómo utilizar las cookies en Zend?
- 26. Cómo borro las cookies en urllib.request (python3)
- 27. cómo desarmar las cookies en PHP?
- 28. ¿Cómo verificar las cookies en umbraco?
- 29. cómo eliminar las cookies en asp.net
- 30. ¿Cómo acceder a los valores de las cookies en diferentes rutas del mismo dominio utilizando PHP?
Ambos dominios están en el mismo servidor web? –
No necesariamente. – danielrsmith