asp.net: problema de CORS con oauth si se redirige a Cuenta/Inicio de sesión desde [Autorizado]

CorePress2024-01-25  8

public class AccountController : Controller
{
    public IActionResult Login(string returnUrl)
    {
        return new ChallengeResult(
            GoogleDefaults.AuthenticationScheme,
            new AuthenticationProperties
            {
                RedirectUri = Url.Action(nameof(LoginCallback), new { returnUrl })
            });
    }
...

Tengo el controlador que se muestra arriba. Si escribo https://localhost:44378/Account/Login en la barra de direcciones del navegador, funciona bien; me redirigen a la página de autorización de Google, pero si me redirigen a este punto final presionando [Autorizar] o un atributo similar en otro punto final. Recibo un error como el siguiente:

Acceso a XMLHttpRequest en 'https://accounts.google.com/o/oauth2/v2/auth?...' (redireccionado desde 'https://localhost:44378/api/some-action') desde el origen 'http://localhost:3000' ha sido bloqueado por la política CORS: respuesta a La solicitud de verificación previa no pasa la verificación de control de acceso: No El encabezado 'Access-Control-Allow-Origin' está presente en el archivo solicitado recurso.

JIC, agregué http://localhost:3000 tanto a los orígenes de JavaScript autorizados como a AuURI de redireccionamiento autorizados en la página de Google de registro de la aplicación.

¿Por qué es así y cómo solucionarlo?

EDITAR: Red:

EDITAR2:

Creé un proyecto de prueba con frontend y backend en el mismo puerto, el problema persiste

(redireccionado desde 'https://localhost:44336/weatherforecast') desde el origen 'https://localhost:44336' ha sido bloqueado por la política CORS



------------------------------------

El servidor HTTP local (el que sirve https://localhost:[Puerto]/... debe configurarse para responder a la solicitud de OPCIONES HTTP con Access-Control-Allow-Origin: '*' en el encabezados de respuesta.

En caso de solicitudes entre dominios, los navegadores (eespecialmente Chrome) realice una solicitud de OPCIONES HTTP para el mismo punto final antes de HTTP GET o HTTP POST

1

Creo que recibo este error de Accounts.google.com. Mi servidor backend está configurado para aceptar solicitudes CORS desde mi frontend.

- Yola

9 de abril de 2021 a las 14:43



------------------------------------

Prueba con esto en tu archivo Startup.cs.

esto dentro del class -> cadena de solo lectura MyAllowSpecificOrigins = "_myAllowSpecificOrigins";

y esto dentro del método ConfigureServices

services.AddCors(options =>
        {
           options.AddPolicy(name: MyAllowSpecificOrigins,
                              builder =>
                              {
                                  builder.WithOrigins("http://localhost:4200");
                              });
         });

cambia la dirección y el puerto con el tuyo

También puede consultar este enlace: https://learn.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-5.0

1

Tengo una línea similar para localhost:3000 que funciona bien entre el frontend y el backend. El problema ocurre cuando ocurre la redirección a cuentas.google.com.

- Yola

9 de abril de 2021 a las 17:48

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare