net implementar google applicationoauthprovider c# oauth-2.0 dotnetopenauth

c# - implementar - oauth2 java



Cambio de sesiĆ³n entre solicitud y autorizaciĆ³n de usuario de proceso (2)

Estoy tratando de implementar una página de inicio de sesión simple que redirige a un usuario a un servidor de inicio de sesión OAuth2.0 y luego a una URL de devolución de llamada después de que haya iniciado sesión correctamente.

Sin embargo sigo recibiendo excepciones con un mensaje de error:

Respuesta inesperada de autorización OAuth recibida con devolución de llamada y estado del cliente que no coincide con un valor esperado.

De la depuración noté que la identificación de la sesión antes de llamar a "RequestUserAuthorization ()" y después son diferentes.

Leí algunas respuestas de SO que de alguna manera debo evitar el cambio de sesión, pero no estoy seguro de cómo lograrlo en este escenario.

¡Cualquier ayuda será apreciada, gracias!

Mi implementación destilada es la siguiente:

private readonly WebServerClientCustomImpl _oauthClient = new WebServerClientCustomImpl(); public ActionResult Login() { IAuthorizationState auth = null; auth = _oauthClient.ProcessUserAuthorization(); if (auth == null) { _oauthClient.RequestUserAuthorization(returnTo: _redirectUrl); } else { // Save authentication information into cookie. HttpContext.Response.Cookies.Add(auth.CreateAuthCookie()); return RedirectToAction("Index", "Home"); } ViewBag.Message = "Future login page..."; return View(); }


Si tiene un problema con el cambio de SessionId, en la mayoría de los casos significa que no hay nada en el objeto Session para este usuario. Simplemente agregue algo a la sesión y SessionId debe permanecer igual para el usuario:

Session["UserIsHere"] = true;


Tenía el mismo mensaje pero un problema diferente.

La url (origen y redirección) que registré en el panel de google oauth comenzó con www.

Algunos usuarios iban a la web sin www y tenían el mensaje de error.

ie Google cpanel conf: http: // www.somesite.com, redirigir a http: // www.somesite.com/oauth2

Algunos usuarios van a http: // somesite.com.

Solución: Restrinja a los usuarios usar solo la versión www o redirigir el dominio desnudo a www, de modo que la solicitud de autenticación siempre provenga del dominio registrado en el panel Oauth.

¡Espero eso ayude!