在经典的asp

时间:2015-07-17 13:34:02

标签: c# asp.net security asp-classic session-cookies

最近,我的任务是在两个网站之间创建一个单独的标志,wuth不同的域名。一个在ASP.NET下运行,另一个在经典ASP下运行。由于我对ASP.NET(我是一名Java爱好者)的经验很少,并且在ASP中经历过ZERO经验(加上过时了,我讨厌它),我遇到了很多困难。第一个是:如何将来自ASP.NET Web的身份验证cookie传递给ASP Web?

我发现这篇文章似乎正好描述了我的需要:

http://www.santry.com/Blog/tabid/90/ID/1156/Creating-a-Single-Sign-on-for-ASPNET-Application-and-Legacy-ASP-Application-Part-II.aspx

但问题在于,它假设使用它所使用的工具(例如,COM互操作性包装器,API等)在Web开发方面有很多先前的知识,并且很难从中找到一些东西。但是,我喜欢提取FormsAuthentication实用程序并在旧版ASP中使用它们的核心思想。

所以我需要一些指导来实现上面链接中描述的内容,以便至少创建一个功能测试(具有功能意义我可以从虚拟ASP.NET Web发送cookie中的凭据并接收cookie在经典的ASP表单中),或者在这两个站点之间实现单点登录的替代方法。

需要注意的一件重要事情是我无法通过通配符映射执行此操作,因为我无法访问IIS配置。

3 个答案:

答案 0 :(得分:2)

您永远无法将从一个域收到的身份验证Cookie发送到另一个域的网站。浏览器same origin policy会阻止此操作。

为了实现这一目标,您需要查看单点登录(SSO)解决方案,其中两个Web应用程序都从相同的安全令牌服务(STS)获取其身份验证Cookie。

这对ASP.NET很容易。查看System.IdentityModel命名空间。如果这也适用于经典ASP,我不知道。

祝你好运。

答案 1 :(得分:0)

它可能看起来很糟糕,但我在登录任一域时生成GUID,并将该GUID发送到标题中的其他站点或在站点之间交叉时发布。当未经身份验证的站点看到GUID时,查找将允许它确定预期的帐户。事实上,将其设为AccountID和DateTime的MD5,您将拥有一个不太可能被误认为是其他用户的价值。

答案 2 :(得分:0)

嗯,这不是我所要求的,但我发现了一篇很好的文章,解释了如何在asp.net和asp之间转换会话状态。它很简单,不是那么优雅,但完成工作。我已经能够快速实现它并创造奇迹。实际上,我发现了两个链接:

我使用了第一个,因为我很匆忙,然后添加了基于令牌的身份验证以提高安全性。到现在为止还挺好。希望它有所帮助。