Lendo o valor do cookie: Usando o módulo URL Rewrite Provider - Não é possível validar em System.Web.Configuration.MachineKeySection.EncryptOrDecryptData
Tenho requisito para acrescentarUSERNAME para o URL no lado do servidor usando o módulo URL Rewrite.
Por quê?: Eu tenho sitesite1, quando USER fizer login no site1, ele verá um link parasite2., Este link é URL ou relatórios. (Quadro). O ticket autenticado foi criado usandoAutenticação de Formulário no site1. QuandoDO UTILIZADOR clica no link, autenticadonome de usuário deve ser passado para o site2.
Eu poderia acrescentar o nome de usuário do lado do cliente, mas devido a problemas de segurança, tenho que acrescentar o nome de usuário ao URL no lado do servidor antes de ser executado.
Decidi usar o provedor de reescrita de URL, que agarra onome de usuário descriptografando o valor do cookie, como mostrado abaixo
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
Exemplo:
233AWJDKSHFHFDSHFJKDFDKJFHDKJFKDJFHDHFDHFKJHDFKJHDFJHDKJFHDSKJFHDF
É um valor de cookie. Mas descriptografar não está acontecendo
Estou recebendo o seguinte erro
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)
Aqui estão minhas configurações no IIS para regravação de URL
URL solicitado: corresponde aos padrõesUsando: Expressão RegularIgnorar maiúsculas e minúsculas - verificadoCondições - Entrada: {HTTP_COOKIE} Tipo: Corresponde ao Padrão:. *Tipo de Ação - ReescreverReescrever URL -http://11.155.011.123{HTTP_URL} & USERNAME = {PlatformAnalysisUrlProvider: {C: 0}}Também configurei a MACHINE KEY conforme sugerido por este fórum
Eu indiquei este post para desenvolvimento
Uma das postagens de estouro de pilha sugeriu que poderia ser um problema de firewall ou antivírus. Mas não tenho antivírus instalado nem o firewall habilitado.
Realmente ajuda se alguém me indicaramostra de código onde o site hospedado no IIS e o provedor de reconfiguração de URL são usados.
Atualizando log de erros
Notificação MODULE_SET_RESPONSE_ERROR_STATUS - "PRE_BEGIN_REQUEST" HttpReason - "Erro no módulo de reconfiguração de URL"
Atualizando postagem com as informações principais da máquina
<MachineKey Description="AES" validation="SHA1"
descriptionKey="******"
validationKey="******" CompatibilityMode="Framework20SP2">
O motivo pode ser - O site em que o cookie foi criado é desenvolvido usando o .NET Framework 4.5. O provedor em que estamos lendo o cookie é o Framework 3.5. Esta pode ser a causa? OU Precisamos do arquivo de configuração para o projeto Provider?
Atualizações - Adicionei a chave da máquina ao Machine.config, mas ainda não funcionou :(
Solução alternativa
Adicione App.config à classe Library
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="SecurityKey" value="somevalue"/>
<!-- ... -->
</appSettings>
</configuration>
Copiar configuração para o GAC Siga este blog -http://techphile.blogspot.in/2007/02/2.html
Criptografar o valor (consulte aqui) e crie um cookie personalizado durante o Login
Use a lógica de decodificação dentro do provedor de reescrita personalizado