Intento implementar Autenticación y Autorización de ASP.NET sobre nuestra base de datos existente. Tenemos un sitio web que llama a un servicio web para buscar sus datos. Para usar el servicio web, necesito proporcionar el nombre de usuario y la contraseña. Sabiendo eso, decidí implementar IIdentity e IPrincipal para almacenar la contraseña encriptada y poder proporcionarla al realizar llamadas al servicio web. En el futuro, es posible que deseemos utilizar más de la seguridad incorporada de asp.net, así que implemento la membresía y el proveedor de funciones y anulo justo lo que necesito (ValidateUser y GetRoles) Aunque, después de validar al usuario gracias a Implementación del proveedor de membresía Aún estoy configurando mi propia CustomIdentity en Context.User para poder recuperar su contraseña cuando sea necesario.SerializationException en 'CustomIdentity' cuando se deniega el usuario en ASP.NET
Funciona perfectamente siempre que el usuario tenga permiso para visitar la página. pero cuando se deniega al usuario, en lugar de arrojar una excepción AccessDeniedException, el marco arroja una excepción de serialización en mi CustomIdentity. Encontré un perfectly similar behaviour with more details described on this link, pero no se ha publicado ninguna respuesta.
Mi excepción es exactamente el mismo que en el enlace anterior
Type is not resolved for member'CW.CustomAuthentication.CWIdentity,CW.CustomAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Runtime.Serialization.SerializationException: Type is not resolved for member 'CW.CustomAuthentication.CWIdentity,CW.CustomAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[SerializationException: Type is not resolved for member 'CW.CustomAuthentication.CWIdentity,CW.CustomAuthentication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.]
Microsoft.VisualStudio.WebHost.Connection.get_RemoteIP() +0
Microsoft.VisualStudio.WebHost.Request.GetRemoteAddress() +65
System.Web.HttpRequest.get_UserHostAddress() +18
System.Web.HttpRequest.get_IsLocal() +13
System.Web.Configuration.CustomErrorsSection.CustomErrorsEnabled(HttpRequest request) +86
System.Web.HttpContext.get_IsCustomErrorEnabled() +42
System.Web.Configuration.UrlAuthFailedErrorFormatter.GetErrorText(HttpContext context) +16
System.Web.Security.UrlAuthorizationModule.WriteErrorMessage(HttpContext context) +29
System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) +8777783
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
¿Es correcto usar la pertenencia y la costumbre IIdentity y IPrincipal al mismo tiempo? Si no, ¿dónde agregar propiedades como la contraseña u otros datos de usuario si utilizo la membresía y los proveedores de funciones?
Saludos,
Stephane Erbrech
@serbrech: si amablemente vuelve a leer su pregunta, seguramente se dará cuenta de que no ha publicado la excepción. De hecho, tómese el tiempo para publicar la excepción * complete * atrapándola, y luego publique el resultado de 'ex.ToString()'. –
acaba de agregar la excepción que recibo, si ayuda –
@serbrech: gracias. ¿Es su 'CW.CustomAuthentication.CWIdentity' serializable? ¿Has probado que se puede serializar usando 'BinaryFormatter'? –