Lectura del valor de la cookie: uso del módulo URL Rewrite Provider: no se puede validar en System.Web.Configuration.MachineKeySection.EncryptOrDecryptData
Tengo el requisito de agregarNOMBRE DE USUARIO a la URL en el lado del servidor usando el módulo URL Rewrite.
¿Por qué?: Tengo sitio websitio1, cuando el USUARIO inicia sesión en el sitio1, verá un enlace asitio2., Este enlace es URL o informes. (Cuadro). El ticket autenticado se ha creado usandoAutenticación de formulario en el sitio 1. CuandoUSUARIO hace clic en el enlace, autenticadonombre de usuario debe pasarse al sitio2.
Podría agregar un nombre de usuario desde el lado del cliente, pero debido a problemas de seguridad tengo que agregar el nombre de usuario a la URL en el lado del servidor antes de que se ejecute.
Así que decidí usar el proveedor de reescritura de URL, que toma elnombre de usuario descifrando el valor de la cookie como se muestra a continuación
namespace PlatformAnalysisUrlProvider.PlatformAnalysisProvider
{
class AnalysisRewriteProvider: IRewriteProvider, IProviderDescriptor
{
public void Initialize(IDictionary<string, string> settings,
IRewriteContext rewriteContext)
{
}
public string Rewrite(string value)
{
string[] cookievalues = value.Spli('=');
FormAuthentication ticket = FormAuthentication.Decrypt(cookievalues[1]);
//Decrypt throws error as shown below
}
}
}
Valores de cookies
cookievalues [0] = has the key
cookievalues [1] = has the value
Ejemplo:
233AWJDKSHFHFDSHFJKDFDKJFHDKJFKDJFHDHFDHFKJHDFKJHDFJHDKJFHDSKJFHDF
Es un valor de cookie. Pero descifrar no está sucediendo
Me aparece el siguiente error
Unable to validate data.
at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(
Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start,
Int32 length, IVType ivType, Boolean useValidationSymAlgo,
Boolean signData)
Aquí está mi configuración en IIS para reescribir URL
URL solicitada: coincide con los patronesUso: expresión regularIgnorar caso - MarcadoCondiciones: entrada: {HTTP_COOKIE} Tipo: coincide con el patrón de patrón:. *Tipo de acción: reescribirReescribir URL -http://11.155.011.123{HTTP_URL} & USERNAME = {PlatformAnalysisUrlProvider: {C: 0}}También configuré MACHINE KEY como lo sugiere este foro
He referido esta publicación para desarrollo
Una de las publicaciones de desbordamiento de pila sugirió que podría tratarse de un problema de firewall o antivirus. Pero no tengo antivirus instalado o firwall habilitado.
Realmente ayuda si alguien me dirige amuestra de código donde se utiliza el sitio web alojado en IIS y el proveedor de reescritura de URL.
Actualización del registro de errores
Notificación MODULE_SET_RESPONSE_ERROR_STATUS - "PRE_BEGIN_REQUEST" HttpReason - "Error de módulo de reescritura de URL"
Actualización de publicación con información de clave de máquina
<MachineKey Description="AES" validation="SHA1"
descriptionKey="******"
validationKey="******" CompatibilityMode="Framework20SP2">
La razón puede ser - El sitio web donde se crean las cookies se desarrolla utilizando .NET Framework 4.5. El proveedor donde leemos la cookie es Framework 3.5. ¿Es esta la causa? O ¿Necesitamos un archivo de configuración para el proyecto del proveedor?
Actualizaciones - He agregado la clave de máquina a Machine.config, pero aún no funcionó :(
Solución alternativa
Agregue App.config a la biblioteca de clases
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="SecurityKey" value="somevalue"/>
<!-- ... -->
</appSettings>
</configuration>
Copiar config a GAC Sigue este blog -http://techphile.blogspot.in/2007/02/2.html
Cifrar el valor (consulte aquí) y crear cookies personalizadas durante el inicio de sesión
Use la lógica de descifrado dentro del proveedor de reescritura personalizado