OpenID está diseñado de una manera transparente de redireccionamiento. Siempre que se conserven los pares clave/valor necesarios en cada redirección, ya sea por GET o POST, todo funcionará correctamente.
La solución más fácil para lograr la compatibilidad con los consumidores que no funcionan con certificados autofirmados es usar un punto final no encriptado que redirige los mensajes checkid_immediate
y checkid_setup
a uno encriptado.
Hacer esto en el código del servidor es más fácil que con los redireccionamientos del servidor web, ya que el primero puede manejar más fácilmente las solicitudes POST, al tiempo que mantiene el código unido. Además, puede usar el mismo punto final para manejar todas las operaciones de OpenID, independientemente de si debe o no ser servido a través de SSL, siempre que se realicen las verificaciones adecuadas.
Por ejemplo, en PHP, el redireccionamiento puede ser tan simple como:
// Redirect OpenID authentication requests to https:// of same URL
// Assuming valid OpenID operation over GET
if (!isset($_SERVER['HTTPS']) &&
($_GET['openid_mode'] == 'checkid_immediate' ||
$_GET['openid_mode'] == 'checkid_setup'))
http_redirect("https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
medida que el valor openid.return_to
fue generado contra un HTTP plano de punto final, en lo que se refiere al consumidor, es solamente tratar con un servidor no encriptado Asumiendo la operación apropiada de OpenID 2.0 con sesiones y nonces, cualquier información que pase entre el consumidor y su servidor no debe revelar información explotable. Las operaciones entre su navegador y el servidor OpenID, que son explotables (detección de contraseñas o secuestro de cookies de sesión) se realizan a través de un canal encriptado.
Además de mantener ocultos a los intrusos, realizar las operaciones de autenticación a través de SSL le permite utilizar el indicador de cookies HTTP secure
. Esto agrega otra capa de protección para las operaciones checkid_immediate
, si desea permitirlo.
Si no puedo usar un certificado autofirmado, me veo obligado a utilizar una conexión http, en cuyo caso pierdo los beneficios primarios Y secundarios. Preferiría no tener la URL verificada y enviar contraseñas encriptadas para que no se verifique la URL y enviar contraseñas de texto sin formato. –
Puede usar https para la interfaz de usuario sin cambiar el OpenID o punto final. Como ejemplo, trace el flujo que utiliza myOpenID al autenticar identificadores http. Transfiere el navegador del punto final http a una página https. – keturn
Um, * ¿era * lo que necesitabas? Oye, los RP * no deberían * funcionar con https para certs autofirmados en general. Independientemente de los trucos que juegue con los redireccionamientos, no obtendrá la seguridad de usar SSL a menos que tenga un certificado firmado por alguien en quien el RP confía. –