Чтение значения cookie: использование модуля провайдера перезаписи URL - невозможно проверить в System.Web.Configuration.MachineKeySection.EncryptOrDecryptData

У меня есть требование, чтобы добавитьUSERNAME на URL на стороне сервера с помощью модуля перезаписи URL.

Зачем?: У меня есть сайтsite1, когда ПОЛЬЗОВАТЕЛЬ входит в систему на site1, он увидит ссылку наsite2.Эта ссылка является URL или отчетами. (Tableau). Аутентифицированный тикет был создан с использованиемFormAuthentication на сайте1. когдаUSER нажимает на ссылку, аутентифицированимя пользователя должен быть передан на сайт2.

Я мог бы добавить имя пользователя со стороны клиента, но из-за проблем с безопасностью я должен добавить имя пользователя к URL на стороне сервера, прежде чем он будет выполнен.

Поэтому я решил использовать провайдер перезаписи URL, который захватываетимя пользователя расшифровывая значение cookie, как показано ниже

     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
          } 
       }
      }

Значения Cookie

        cookievalues [0] =  has the key

        cookievalues [1] =  has the value 

Пример:

        233AWJDKSHFHFDSHFJKDFDKJFHDKJFKDJFHDHFDHFKJHDFKJHDFJHDKJFHDSKJFHDF

Это значение cookie. Но расшифровки не происходит

Я получаю следующую ошибку

        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)

Вот мои настройки в IIS для перезаписи URL

Запрашиваемый URL: соответствует шаблонамИспользование: регулярное выражениеИгнорировать дело - провереноУсловия - ввод: {HTTP_COOKIE} Тип: соответствует шаблону шаблона:. *Тип действия - переписатьПереписать URL -http://11.155.011.123{HTTP_URL} & ИМЯ_ПОЛЬЗОВАТЕЛЯ = {PlatformAnalysisUrlProvider: {С: 0}}

Я также настроил MACHINE KEY, как предложено на этом форуме

Я отправил этот пост на разработку

В одной из публикаций о переполнении стека предполагается, что это может быть проблема с брандмауэром или антивирусом. Но у меня не установлен антивирус или включен Firwall.

Это действительно помогает, если кто-то направит меняпример кода где используется веб-сайт, размещенный в провайдере IIS и URL Rewrite.

Обновление журнала ошибок

MODULE_SET_RESPONSE_ERROR_STATUS Уведомление - «PRE_BEGIN_REQUEST» HttpReason - «Ошибка модуля перезаписи URL»

Обновление сообщения с помощью ключа машины

     <MachineKey Description="AES" validation="SHA1"
      descriptionKey="******"
      validationKey="******" CompatibilityMode="Framework20SP2">

Причина может быть - Сайт, на котором создаются файлы cookie, разработан с использованием .NET Framework 4.5. Провайдер, где мы читаем куки - это Framework 3.5. Это может быть причиной? ИЛИ Нужен ли нам файл конфигурации для проекта провайдера?

Обновления - Я добавил машинный ключ в Machine.config, но он все равно не работал :(

Альтернативное решение

Добавить App.config в библиотеку классов

 <?xml version="1.0" encoding="utf-8" ?>
 <configuration>
 <appSettings>
 <!-- ... -->
    <add key="SecurityKey" value="somevalue"/>
 <!-- ... -->
 </appSettings>
 </configuration>

Скопируйте конфигурацию в GAC.http://techphile.blogspot.in/2007/02/2.html

Зашифровать значение (обратитесь сюда) и создавать собственные куки во время входа

Используйте логику Decrption внутри собственного провайдера перезаписи

Ответы на вопрос(1)

Ваш ответ на вопрос