gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:04:39 27 4
gpt4 key购买 nike

我们有一个身份验证设置,我们禁止除 header 中发送的不记名 token 之外的所有内容。

但是,我有一种情况,我需要为一个 Web API Controller 使用 cookie。

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

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

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

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

最佳答案

我(OP)今天一直在研究这个,我没有找到我正在寻找的确切答案,但确实找到了解决方法。

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

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

由于我可以从我的类中访问 AuthStartup.OAuthOptions.AccessTokenFormat,我决定只将不记名 token 的值放入我自己的 session cookie 中,然后使用 AuthStartup.OAuthOptions.AccessTokenFormat.Uprotect() 来解密它的值。

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

我希望我知道如何更优雅地处理这种情况,但它对我想要完成的事情有效。

关于asp.net - 如何手动获取 .aspnet.cookies Cookie 中的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com