Hola Buen día!
Estamos realizando pruebas de guaraní 3.20 y kola 4.71 , realizamos la configuración pero a la hora de ingresar como
alumno a contestar una encuesta tenemos problemas con los protocolos https.
Los 2 sistemas están configurados como https hacia afuera , pero están detrás de un proxy reverse, por lo que no me carga el
el formulario en el iframe. De que manera lo podemos solucionar?
gracias
Hola Nicolás,
Seguramente es un problema de “mixed-content”!!!
¿como son las URLs de Kolla y Guaraní Autogestión?
¿como tenes configurada la directiva url_kolla en el archivo instalacion/config.php?
¿que errores te muestra la consola del navegador y los logs?
Te dejo unos foros similares:
https://foro.comunidad.siu.edu.ar/index.php?topic=22434
https://foro.comunidad.siu.edu.ar/index.php?topic=23514
https://foro.comunidad.siu.edu.ar/index.php?topic=16779
https://foro.comunidad.siu.edu.ar/index.php?topic=17916
saludos.
2
Hola Leonel! te adjunto lo que me decis! tenemos configurados los 2 sistemas por https
KOLLA:
en proyecto.ini ->protocolo_url_post_form_externo = ‘https’
URLS
https://guarani-desarrollo.unicen.edu.ar/kolla/
https://guarani-desarrollo.unicen.edu.ar/autogestion/humanas/
url_kolla en el archivo instalacion/config.php
https://guarani-desarrollo.unicen.edu.ar/kolla/
ERROR DE CONSOLA
Mixed Content: The page at ‘https://guarani-desarrollo.unicen.edu.ar/autogestion/humanas/encuestas_kolla/bb6d6dc7351a879785e52d25d260f3ca14e15c56’ was loaded over HTTPS, but requested an insecure frame ‘http://guarani-desarrollo.unicen.edu.ar/kolla/?ai=kolla||40000112&tm=1&h=1&t=fPAXo7zdXcHnAx0tTHlEL8yySh04cIH4mc73EXV7v3PquIXjCyTLpr5mX9%2Fp5A0bD368a9s1HN3lburAwQT97w%3D%3D’. This request has been blocked; the content must be served over HTTPS.
log autogestion
– kolla_url -----------------------------------------------------------------
1, 3242, bb6d6dc7351a879785e52d25d260f3ca14e15c56, 8edec93df3075eee7b0600953f1e04b8
– url_encuesta --------------------------------------------------------------
– === protocolo_guarani === -------------------------------------------------
http
– === protocolo_kolla === ---------------------------------------------------
https
Hola Nicolás,
Es extraño que en los logs diga que el protocolo de Guaraní sea http .
¿como tenes la directiva ssl en instalacion/config.php?
A Kolla no puedo acceder desde mi PC, me da un 403 Forbidden.
En el error de consola dice que Guaraní esta con https y Kolla con http, en instalacion/config.php lo tenes con https así que para mi esta haciendo un redireccionamiento extraño.
saludos.
2
Como es de desarrollo esta para dentro de la UNICEN
no accesible desde afuera
‘alcance’ => ‘all’
redirigir_ssl’ => false’
Es extraño que en los logs diga que el protocolo de Guaraní sea http .
Puede ser porque esta dentras de un proxy reverse?
La instalacion es en kubernetes
saludos
Hola Nicolás,
Te dejo otros foros que seguramente te sirvan:
https://foro.comunidad.siu.edu.ar/index.php?topic=23514
https://foro.comunidad.siu.edu.ar/index.php?topic=22434
https://foro.comunidad.siu.edu.ar/index.php?topic=16779
Vas a tener que ver el tema del NGINX, porque parece que la URL de Kolla la esta redirigiendo a http. Fíjate que en instalacion/config.php tenes ‘url_kolla’ => ‘https://guarani-desarrollo.unicen.edu.ar/kolla/’, pero en consola te da el error de Mixed Content con la url [b]http://guarani-desarrollo.unicen.edu.ar/kolla/[/b].
¿si entras a https://guarani-desarrollo.unicen.edu.ar/kolla te redirige a http? En tal caso revisa mejor el parametro protocolo_url_post_form_externo = ‘https’ de Kolla, quizás tengas que reiniciar el servidor para que tome el cambio.
saludos.
2
Hola ! lo podimos sulucionar. el tema es que al tener el sistema destras de un proxy reverso la función siempre devuelve http
vendor/onelogin/php-saml/lib/Saml2/Utils.php
public static function isHTTPS()
{
$isHttps = (!empty($_SERVER[‘HTTPS’])
&& $_SERVER[‘HTTPS’] !== ‘off’
|| (isset($_SERVER[‘SERVER_PORT’]) && $_SERVER[‘SERVER_PORT’] == 443)
);
return $isHttps;
}
por lo que forzamos la función es protocolo compatible a true!
Hola Nicolás, me alegro que les funcione!!!
Claro, la función es_protocolo_compatible de src/siu/modelo/entidades/encuestas_kolla.php llama a la función isHTTPS de vendor/onelogin/php-saml/lib/Saml2/Utils.php.
Probemos con la siguiente solución:
https://www.designcise.com/web/tutorial/how-to-check-for-https-request-in-php#identifying-the-https-protocol-when-using-a-load-balancer
En src/siu/modelo/entidades/encuestas_kolla.php quedaría de la siguiente forma:
static function es_protocolo_compatible() {
if (static::isHTTPS()) {
$protocolo_guarani = 'https';
} else {
$protocolo_guarani = 'http';
}
kernel::log()->add_debug("=== protocolo_guarani ===", $protocolo_guarani);
static::$url_kolla = kernel::proyecto()->get_url_kolla();
$protocolo_kolla = strtolower(parse_url(static::$url_kolla, PHP_URL_SCHEME));
kernel::log()->add_debug("=== protocolo_kolla ===", $protocolo_kolla);
return ($protocolo_guarani == $protocolo_kolla);
}
static function isHTTPS()
{
$isHttps = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https');
return $isHttps;
}
Decime si con eso funciona así lo incorporamos al core.
saludos.
2
Gracias Leonel! si funciona con la modificación en la function isHTTPS()
saludos
Hola Nicolás, gracias por el feedback!!!
Te voy a molestar una vez mas, probemos con esta función que es mas completa según dice aquí:
static function isHTTPS()
{
$isHttps = $_SERVER['HTTPS'] ?? $_SERVER['REQUEST_SCHEME'] ?? $_SERVER['HTTP_X_FORWARDED_PROTO'] ?? null;
$isHttps = $isHttps && (strcasecmp('on', $isHttps) == 0 || strcasecmp('https', $isHttps) == 0);
return $isHttps;
}
Me harías un gran favor ya que no tengo proxy reverso para probarlo.
Avísame si sigue funcionando, saludos.
2
Leonel lo probe y no funciona!
cualquier cosa me pasas y pruebo otra cosa!
saludos
Hola Nicolás, gracias por probar!!!
Proba con esta ultima:
static function isHTTPS()
{
$isHttps =
(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on')
|| (isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] === 'https')
|| (isset($_SERVER['SERVER_PORT']) && (int) $_SERVER['SERVER_PORT'] === 443)
|| (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https')
;
return $isHttps;
}
saludos.
2