【问题标题】:Emulate ASP.NET Session with Keys Using Alternate Stack使用备用堆栈模拟带有键的 ASP.NET 会话
【发布时间】:2012-06-24 06:36:14
【问题描述】:

更新 2

通过查看 .NET 源代码,我能够找到一些有用的信息,但最终似乎在截止日期之前进行逆向工程需要太长时间,所以我选择使用第一个选项让网络服务为我生成 .ASPXAUTH cookie。我在下面找到了一些更有用的链接,以防有人想更多地从头开始生成自己的 cookie。感谢所有回复的人!

链接

更新 1

我能够从.netlibrarysource 找到源代码。看起来 setauthcookie 的源代码包含在此源代码中。我会看看我是否可以通过查看它来弄清楚如何生成 cookie。

原帖

我看到另一个帖子 [1] 可能有类似的问题,但我无法从措辞中确切地看出张贴者想要什么,所以我正在写自己的。

我有一个用 ASP.NET 编写的 Web 应用程序,并引入了另一种语言/堆栈(我们会说 RoR)来对网站的某些功能进行整容。由于 .NET 是第一个,所有会话优先级都围绕使用身份验证票证(cookie 中的 ASPXAUTH 字段)来验证用户是否经过身份验证。这个字段是在许多 ASP 站点中生成的,用于处理会话,我无法通过 not 使用它。

这通常不会有问题,但我希望用户能够使用 RoR 页面登录网站,并能够在整个网站上保留身份验证状态,无论他们访问的是 ASPX 页面还是 RoR 页面.所以,我觉得我有两个选择:

  1. 创建一些 .NET Web 服务,RoR 向其发出请求,以便使用 SetAuthCookie() 从机器密钥 [2] 生成适当的令牌(cookie 的 ASPXAUTH 数据),或者
  2. 找到一种方法让 RoR 模拟 .NET 用来生成令牌的任何方法,这样我就可以在 cookie 中设置值,而不必在用户访问 ASPX 页面时重新验证用户身份。

数字 2 更可取,但在 Google 上搜索 3-4 小时后,我找不到任何关于如何做到这一点的信息,那么现在这里有人如何完成数字 2 吗?否则,我会做前者或尝试其他方法。提前感谢您提供我尚未考虑的建议、cmets 或替代选项。

[1]how to create .ASPXAUTH cookie on python [2]http://msdn.microsoft.com/en-us/library/ff649308.aspx

【问题讨论】:

  • 我怀疑 [1] 会有所帮助,因为他在 2 年内没有得到答案!
  • 我在我的工作中为一个使用 SetAuthCookie 的 MVC 项目制作了一个自定义身份验证提供程序;我回去工作看看能不能给你源代码。
  • 谢谢@RussC!我刚刚更新了我的发现。我想我将使用 .NET 网络服务进行登录/注册,该服务将由备用堆栈调用。我想我还将在该 Web 服务中生成 .ASPXAUTH 会话并将其传递回响应中。以防万一我遇到任何相关的事情,看看代码会很好。

标签: asp.net session


【解决方案1】:

ASP.NET 设置授权 cookie。您还可以创建自己的安全 cookie,您可以将其与 ASP.NET cookie 一起设置(只是劫持登录代码)。然后你可以访问这个cookie来检查用户是否登录。

【讨论】:

  • 但是如果网站的第一个点击是 Ruby 生成的页面呢?不会有 cookie。
  • 您可以创建一些 Ruby 可以访问的 Web 服务(最好是 wcf)以将授权传递给 .NET 代码。
  • @fenix2222,这就是数字 1 的含义。我可能会走那条路,但我试图弄清楚我是否可以改为执行第 2 项(这意味着在登录时完全使用没有 .NET 的 RoR 设置 cookie)。
【解决方案2】:

这不是一个完整的答案,所以请不要太苛刻,但这也不是评论,所以这里是:

您如何托管 RoR 内容,您是在 IIS 下使用它还是以其他方式使用它?

如果两个内容都可以从 IIS 中的同一个站点/虚拟目录运行并通过全局 ASP 处理程序使用身份验证,然后将查询传递给正确的处理程序,我会调查什么。

可以创建一个通用的处理程序来捕获所有流量,并且您可以通过这种方式实现您的身份验证;其机制取决于您使用的 II 版本以及您的 RoR 内容的提供方式。

【讨论】:

  • RoR 内容将位于同一子域下的不同 Unix 服务器上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
相关资源
最近更新 更多