如何解密自定义URL重写提供程序中的cookie?

时间:2016-01-07 10:49:10

标签: iis cookies url-rewriting

我有一个网站,我在其中创建了一个自定义cookie,我正在尝试读取在IIS中运行的自定义重写提供程序中的cookie值

简而言之:如何解密自定义URL重写提供程序中的cookie?

以下是创建自定义Cookie的代码

     FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
           1,                                    
           model.Email,                          
           DateTime.Now,                          
           DateTime.Now.AddDays(7),          
           true,                         
           "deepak",                             
           FormsAuthentication.FormsCookiePath);  

        string encryptedTicket = FormsAuthentication.Encrypt(ticket);
        HttpCookie fCookie = new HttpCookie("customCookie", encryptedTicket);
        fCookie.Expires = DateTime.Now.AddDays(7);
        fCookie.Path = "/";
        Response.Cookies.Add(fCookie);

下面的代码是读取IIS中运行的自定义重写提供程序中的cookie值

   public class ParseUserNameProvider : IRewriteProvider, IProviderDescriptor
   {
    public IEnumerable<SettingDescriptor> GetSettings()
    {
        throw new NotImplementedException();
    }

    public void Initialize(IDictionary<string, string> settings, IRewriteContext rewriteContext)
    {}

    public string Rewrite(string value)
    {
        string[] val = value.Split('=');
        string name = "";
        if (val != null)
        {
            FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(val[1]);
            if(authTicket!=null)
            {
                name = authTicket.Name;
            }
        }
        return name;
    }
}

出现错误,如下所示 enter image description here

重写IIS中的设置 - InBound

重定向网址

http://1x2.xx.1x8.x8:1111/Report/Report?name= {ParseUserNameProvider:{C:0}}

条件

enter image description here

我是从http://www.iis.net/learn/extensions/url-rewrite-module/developing-a-custom-rewrite-provider-for-url-rewrite-module

了解到的

注意:此帖子与Custom Rewrite Provider for URL Rewrite Module不重复,因为我收到了不同的错误。

1 个答案:

答案 0 :(得分:1)

如果该域中有任何其他Cookie,则它们将作为val [1]的一部分包含在一个长字符串中。我很难让IIS可靠地通过一个cookie,所以我将所有的cookie拉到val [1]字符串中,然后将其拆分成所有cookie值的数组,然后选择我需要的那个。如果有疑问,请让您的提供商将val [1]字符串作为客户错误,以便您可以看到它所看到的内容。

data:'id='+ID,

一旦你可以看到实际收到的内容,你就可以了解如何分割它。