加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何手动获取.aspnet.cookies Cookie中的信息?

发布时间:2020-12-16 06:27:50 所属栏目:asp.Net 来源:网络整理
导读:我们有一个身份验证设置,我们不允许除标头中发送的承载令牌之外的所有内容. 但是,我有一种情况,我需要使用cookie代替一个Web API控制器. 我可以看到已经在名为“.aspnet.cookies”的请求中发送了一个cookie,其中填充了加密值. 如果我能找到解密值的方法,它会
我们有一个身份验证设置,我们不允许除标头中发送的承载令牌之外的所有内容.

但是,我有一种情况,我需要使用cookie代替一个Web API控制器.

我可以看到已经在名为“.aspnet.cookies”的请求中发送了一个cookie,其中填充了加密值.

如果我能找到解密值的方法,它会解决我的问题,但我不清楚如何这样做.

遗憾的是,我不能只是将身份验证配置为出于技术原因自动使用cookie.

有谁知道我可以使用哪个类来调用手动解密cookie值?

解决方法

我(OP)今天一直在研究这个问题,我找不到我想要的确切答案,但确实找到了解决方法.

我非常确信OWIN中间件在内部以某种方式使用ISecureDataFormat来保护/取消保护我看到的cookie(名为“.aspnet.cookies”).我无法弄清楚框架使用了哪个ISecureDataFormat,但我确实找到了我们使用它来处理AJAX请求头中传递的承载令牌的位置.

基本上,在AuthStartup类中,我有一些OAuthAuthorizationServerOptions,并发现我们使用其AccessTokenFormat属性(它是一个ISecureDataFormat)来处理承载令牌.

因为我可以从我的类访问AuthStartup.OAuthOptions.AccessTokenFormat,所以我决定只将持有者令牌的值放入我自己的会话cookie中,然后使用AuthStartup.OAuthOptions.AccessTokenFormat.Uprotect()来解密它的值.

这给了我一个AuthenticationTicket,其身份我可以填入GenericPrincipal,然后我将其分配给自定义FilterAttribute / IAuthorizationFilter中的System.Threading.Thread.CurrentPrincipal和HttpContext.Current.User,我将其应用于需要使用cookie的控制器.

我希望我知道如何更优雅地处理这种情况,但它对我想要实现的目标起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读