如何解密自定义URL重写提供程序内的cookie? [英] How to decrypt the cookie inside custom URL rewrite provider?

查看:325
本文介绍了如何解密自定义URL重写提供程序内的cookie?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



问题:解密自定义网址重写提供程序中的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重写b $ b {
string [] val = value.Split('=');
string name =;
if(val!= null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(val [1]);
if(authTicket!= null)
{
name = authTicket.Name;
}
}
返回名称;
}
}

>



在IIS中重写设置--InBound b
$ b

重定向网址





我从以下网站了解到: http://www.iis.net/learn/extensions/url-rewrite-module/developing-a-custom-rewrite-provider- for-url-rewrite-module



注意:此帖子不是 URL重写模块的自定义重写提供者,因为我得到不同的错误。

解决方案

如果有任何其他Cookie的域,他们将作为val [1]的一部分包含在一个长字符串。我有相当的困难使IIS可靠地通过只有一个cookie,所以我把所有的cookie拉到val [1]字符串,然后拆分成一个所有的cookie值的数组,然后只是选择我需要的一个。如果有疑问,您的提供程序会把val [1]字符串作为客户错误,以便您可以看到它看到了什么。

  throw new Exception(val [1]); 

一旦你可以看到实际收到的内容,你就会知道如何分割。


I have a website where I created a custom cookie and I am trying to read the cookie value inside my Custom Rewrite Provider running in IIS

Question in short: How to decrypt the cookie inside custom URL rewrite provider?

Below is the code for creating custom 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);

Below code is to read the cookie value inside my Custom Rewrite Provider running in IIS

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

Error raised as shown below

Rewrite Settings in IIS - InBound

Redirect URL

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

Conditions

I learned this from : http://www.iis.net/learn/extensions/url-rewrite-module/developing-a-custom-rewrite-provider-for-url-rewrite-module

Note: This post is NOT duplicate of Custom Rewrite Provider for URL Rewrite Module because I am getting different error.

解决方案

If there are any other Cookies with that domain they'll be included as part of val[1] in one long string. I had considerable difficulty making IIS reliably pass through just one cookie so I pulled though all the cookies into val[1] string and then split that into an array of all the cookie values then just selected the one I needed. If in doubt get your provider to out put the val[1] string as a customer error so you can see what it's seeing.

        throw new Exception(val[1]);

Once you can see what's actually being received you work out how you need to split it.

这篇关于如何解密自定义URL重写提供程序内的cookie?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆