Si desea que el proveedor de OpenID regrese a una url diferente, debe usar el método OpenIdRelyingParty.CreateRequest(Identifier userSuppliedIdentifier, Realm realm, Uri returnToUrl)
al crear la solicitud de autenticación.
Sin embargo, generalmente no desea que el proveedor de OpenID redireccione a la url que inició la secuencia de inicio de sesión dentro de su aplicación. Desea volver al punto donde inició la autenticación de OpenID para procesar correctamente la respuesta. Ayuda a encapsular la capa OpenID del resto de la lógica en su aplicación.
He aquí un ejemplo:
En mi aplicación ASP.NET MVC, tengo un controlador User
con Authenticate
acción que maneja las solicitudes de inicio de sesión.
La acción Authenticate
comprueba OpenIdRelyingParty.Response
. Si es null
, la acción llama al RedirectToProvider
. El proveedor vuelve a la misma acción, donde verifico el Respons.Status
. Si es AuthenticationStatus.Authenticated
utilizo FormsAuthentication.RedirectFromLoginPage
(openid.Response.ClaimedIdentifier, true)
para volver a la página desde la que el usuario inició la sesión de seqeuencia.
Sin embargo, si el estado es AuthenticationStatus.Failed
o 'AuthenticationStatus.Canceled', puedo ofrecer los pasos del usuario para resolver este problema. Puedo ofrecerles que corrijan su OpenID si están mal escritos o que inicien sesión con un nombre de usuario/contraseña en su lugar. (Admito OpenID y la autenticación de nombre de usuario/contraseña para las mismas identidades)
Mi casilla de acceso está en cada página. Si el proveedor de OpenID me redirigió a la página que inició la solicitud de inicio de sesión, es probable que la página no pueda procesar la falla correctamente.
Debería ser AddCallbackArgument ** s ** –
Sí, gracias. He corregido mi respuesta. –
No es tan simple: "Los argumentos de devolución de llamada solo se admiten cuando se proporciona IRelyingPartyAssociationStore a OpenIdRelyingParty". – Perry