{"id":294,"date":"2026-06-15T17:12:41","date_gmt":"2026-06-16T00:12:41","guid":{"rendered":"https:\/\/www.mariatech.com.mx\/blog\/?p=294"},"modified":"2026-06-15T17:12:42","modified_gmt":"2026-06-16T00:12:42","slug":"como-solucionar-la-discrepancia-de-protocolos-http-vs-https-en-integraciones-oauth-2-0","status":"publish","type":"post","link":"https:\/\/www.mariatech.com.mx\/blog\/laravel-php\/como-solucionar-la-discrepancia-de-protocolos-http-vs-https-en-integraciones-oauth-2-0\/","title":{"rendered":"C\u00f3mo solucionar la discrepancia de protocolos (HTTP vs HTTPS) en integraciones OAuth 2.0"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Si est\u00e1s integrando una API externa en tu aplicaci\u00f3n web y te has topado con mensajes de error como <strong>&#8220;La aplicaci\u00f3n no puede conectarse&#8221;<\/strong>, <strong>&#8220;Invalid redirect URI&#8221;<\/strong> o errores del navegador como <code><strong>ERR_CONNECTION_REFUSED<\/strong><\/code> al intentar autenticar usuarios mediante OAuth 2.0, no est\u00e1s solo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este es uno de los problemas m\u00e1s frecuentes durante el desarrollo local y suele estar relacionado con una causa muy espec\u00edfica: <strong>la discrepancia de protocolos en la URI de redirecci\u00f3n (<\/strong><code><strong>redirect_uri<\/strong><\/code><strong>)<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, veremos por qu\u00e9 ocurre este problema y c\u00f3mo solucionarlo para que tu flujo de autenticaci\u00f3n funcione correctamente tanto en desarrollo como en producci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El origen del problema: la seguridad en OAuth 2.0<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">OAuth 2.0 es el est\u00e1ndar utilizado por numerosas plataformas y servicios para permitir que aplicaciones externas accedan a recursos protegidos de forma segura. Durante la configuraci\u00f3n de una aplicaci\u00f3n, normalmente se debe registrar una o m\u00e1s URI de redirecci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estas direcciones son utilizadas por el proveedor de autenticaci\u00f3n para devolver al usuario a tu aplicaci\u00f3n una vez que ha iniciado sesi\u00f3n y autorizado el acceso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El conflicto suele aparecer debido a la diferencia entre los requisitos de seguridad de la plataforma y las caracter\u00edsticas de un entorno local de desarrollo:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Las plataformas exigen HTTPS:<\/strong> Muchos proveedores requieren que la <code>redirect_uri<\/code> utilice un protocolo seguro (<code>https:\/\/<\/code>) para proteger el intercambio de informaci\u00f3n sensible.<\/li>\n\n\n\n<li><strong>Los entornos locales suelen usar HTTP:<\/strong> Herramientas de desarrollo como Laragon, XAMPP, WAMP o configuraciones locales de servidores web suelen funcionar inicialmente mediante <code>http:\/\/<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando la aplicaci\u00f3n genera una URL con HTTPS pero el servidor local no est\u00e1 preparado para responder mediante ese protocolo, el navegador no puede establecer la conexi\u00f3n. Por otro lado, si se utiliza HTTP, muchos proveedores rechazar\u00e1n la solicitud por razones de seguridad o porque la URL no coincide exactamente con la registrada.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La soluci\u00f3n en 3 pasos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La clave consiste en lograr que tu entorno local soporte HTTPS y que las URLs generadas por tu aplicaci\u00f3n coincidan exactamente con las registradas en el proveedor de autenticaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 1: Habilitar HTTPS en tu entorno local<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Configura un certificado SSL local para que tu aplicaci\u00f3n pueda responder mediante HTTPS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunas opciones comunes son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Laragon:<\/strong> Permite habilitar certificados SSL locales de forma autom\u00e1tica.<\/li>\n\n\n\n<li><strong>Laravel Valet:<\/strong> Puede generar certificados locales seguros mediante comandos espec\u00edficos.<\/li>\n\n\n\n<li><strong>mkcert:<\/strong> Herramienta ampliamente utilizada para crear certificados confiables en entornos de desarrollo.<\/li>\n\n\n\n<li><strong>Docker o servidores personalizados:<\/strong> Configura certificados SSL dentro del contenedor o servidor correspondiente.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez configurado, tu aplicaci\u00f3n deber\u00eda ser accesible mediante una URL similar a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#047;&#047;miaplicacion.local<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 2: Generar URLs seguras desde la aplicaci\u00f3n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Es importante que la URI de redirecci\u00f3n se genere utilizando HTTPS para garantizar que coincida con la configuraci\u00f3n registrada en el proveedor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, en Laravel:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$redirect_uri = secure_url(route('oauth.callback', &#091;], false));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El objetivo no es utilizar una funci\u00f3n espec\u00edfica, sino asegurarse de que la URL enviada al proveedor tenga exactamente el protocolo HTTPS esperado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 3: Verificar la configuraci\u00f3n del proveedor<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La URI configurada en el panel del proveedor debe coincidir exactamente con la generada por tu aplicaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ejemplos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Correcto:<\/strong> <code>https:\/\/miaplicacion.local\/oauth\/callback<\/code><\/li>\n\n\n\n<li><strong>Incorrecto:<\/strong> <code>http:\/\/miaplicacion.local\/oauth\/callback<\/code><\/li>\n\n\n\n<li><strong>Incorrecto:<\/strong> <code>https:\/\/miaplicacion.local\/oauth\/callback\/<\/code><\/li>\n\n\n\n<li><strong>Incorrecto:<\/strong> <code>https:\/\/www.miaplicacion.local\/oauth\/callback<\/code> (si el dominio registrado no incluye <code>www<\/code>)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Las plataformas suelen realizar comparaciones estrictas, por lo que cualquier diferencia en protocolo, dominio, ruta, may\u00fasculas o barras finales puede provocar errores de autenticaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Buenas pr\u00e1cticas adicionales<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s de corregir el problema inmediato, es recomendable seguir estas pr\u00e1cticas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mantener la misma estructura de URLs entre desarrollo, pruebas y producci\u00f3n.<\/li>\n\n\n\n<li>Utilizar variables de entorno para configurar dominios y rutas de autenticaci\u00f3n.<\/li>\n\n\n\n<li>Evitar construir manualmente las URLs de redirecci\u00f3n cuando el framework puede generarlas autom\u00e1ticamente.<\/li>\n\n\n\n<li>Verificar peri\u00f3dicamente la configuraci\u00f3n registrada en los proveedores externos.<\/li>\n\n\n\n<li>Probar el flujo completo de autenticaci\u00f3n antes de desplegar cambios en producci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La mayor\u00eda de los problemas relacionados con OAuth 2.0 en entornos de desarrollo no provienen de errores en el c\u00f3digo, sino de diferencias entre la configuraci\u00f3n local y los requisitos de seguridad exigidos por los proveedores de autenticaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al habilitar HTTPS localmente, generar URLs seguras desde la aplicaci\u00f3n y asegurarte de que las URIs registradas coincidan exactamente con las utilizadas en el c\u00f3digo, podr\u00e1s evitar errores de autenticaci\u00f3n y contar con un flujo de integraci\u00f3n mucho m\u00e1s estable y seguro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estos mismos principios aplican a cualquier integraci\u00f3n basada en OAuth 2.0, independientemente del proveedor o servicio externo con el que est\u00e9s trabajando.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si est\u00e1s integrando una API externa en tu aplicaci\u00f3n web y te has topado con mensajes de error como &#8220;La aplicaci\u00f3n no puede conectarse&#8221;, &#8220;Invalid redirect URI&#8221; o errores del navegador como ERR_CONNECTION_REFUSED al intentar autenticar usuarios mediante OAuth 2.0, no est\u00e1s solo. Este es uno de los problemas m\u00e1s frecuentes durante el desarrollo local [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":295,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,40],"tags":[],"class_list":["post-294","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel-php","category-aplicaciones-moviles"],"_links":{"self":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/posts\/294","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=294"}],"version-history":[{"count":0,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/posts\/294\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/media\/295"}],"wp:attachment":[{"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mariatech.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}