在经典asp中集成asp.net中的FormsAuthentication

本文关键字:asp 中的 FormsAuthentication net 经典 集成 | 更新日期: 2023-09-27 18:03:18

最近我的任务是创建两个网站之间的单一登录,具有不同的域。一个在ASP下运行。NET和其他经典的ASP。因为我很少有ASP的经验。. NET(我是一个Java爱好者)和零经验的ASP(加上是过时的,我讨厌它),我遇到了很多困难。第一个问题是:如何传递来自ASP的身份验证cookie。NET web到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

但问题是,它假设了很多关于web开发的知识,以及它使用的工具(例如,COM互操作性包装器,API等),并且很难从中找出一些东西。然而,我喜欢提取FormsAuthentication实用程序并在遗留ASP中使用它们的核心思想。

所以我需要的是一些指导方针,以实现在上面的链接中所描述的,以便创建至少一个功能测试(与功能的含义,我可以发送凭据从一个虚拟ASP的cookie。. NET web并以经典的ASP形式接收cookie),或者在这两个站点之间实现单点登录的其他方法。

在经典asp中集成asp.net中的FormsAuthentication

需要注意的一点是,我不能通过通配符映射来完成这个操作,因为我无法访问IIS配置。

您将永远无法将从一个域收到的身份验证cookie发送到另一个域的网站。浏览器的同源策略会阻止这种情况。

要做到这一点,你需要研究一个单点登录(SSO)解决方案,其中两个web应用程序从相同的安全令牌服务(STS)获得他们的身份验证cookie。

这对于ASP.NET来说很容易。查看System.IdentityModel名称空间。我不知道这是否也适用于经典ASP。

好运。

这可能看起来很糟糕,但是我会在登录到任何一个域时生成一个GUID,并在它们在站点之间穿越时将该GUID发送到header或post中的其他站点。当未经身份验证的站点看到GUID时,查找将允许它确定预期的帐户。实际上,将其设置为AccountID和DateTime的MD5,您将得到一个不太可能被误认为是其他用户的值。

嗯,这并不是我想要的,但我发现了一篇很好的文章,解释了如何在asp.net和asp之间传输会话状态,反之亦然。它很简单,不是那么优雅,但可以完成工作。我已经能够迅速实施它并创造奇迹。实际上,我找到了两个链接:

  • 一个解释一个简单的方法,不是很安全,但容易和实用:http://www.nullskull.com/articles/20021207.asp
  • 另一个实现安全性并使用XML共享数据的协议。它很有趣,但只解释了如何从ASP到ASP.NET实现这一点。可能对许多人有用:http://www.nullskull.com/articles/20041017.asp

我使用了第一个,因为我很着急,然后添加了一个基于令牌的身份验证来提高安全性。到目前为止,一切顺利。