1

我有两个不同技术的 Web 应用程序,一个是在 ColdFusion 中开发的,另一个是在 Asp.Net 中开发的。

两个应用程序都实现了身份验证。两个应用程序的用户名相同,而密码不同。

所以这就是我想要做的,我登录到我的 ColdFusion 应用程序,当我单击特定按钮时,它必须导航到 Asp.Net 应用程序,而不要求我再次登录到该应用程序。

这是我想出的解决方案;我在单击按钮时将来自 ColdFusion 应用程序的用户名作为查询字符串参数传递给 Asp.Net url,它在其中检查是否已键入查询字符串,如果用户名存在,则登录到 Asp.Net 应用程序。

它看起来像这样http://xxxxxx.com?username=xxx 但是在查询字符串中传递用户名并不安全,可以做些什么来确保它的安全?我正在考虑加密查询字符串,可以这样做吗?或者我应该按照另一种方法来获取此登录功能?

4

2 回答 2

2

1)在您的.net 应用程序中创建一个名为 AuthorizedSessions 的表(或任何对您有意义的表)。

在此表中,存储用户名、随机生成的字符串(又名令牌)、创建日期和用于跟踪是否使用的日期字段。

2) 在您的 .net 应用程序中创建一个脚本以接受来自您的 CF 应用程序的用户名/密码,并首先验证用户是否允许登录,然后在您的 AuthorizedSessions 表中生成一条记录,然后将令牌返回给冷融合。

3) 在.net 中生成另一个脚本,该脚本将接受用户名/令牌作为来自coldfusion 的链接。此脚本应根据授权会话表验证用户名/令牌,并确保“使用日期”为空,因为它只能使用 1 次。

4)在coldfusion中,单击应用程序中的链接应将您引导到coldfusion应用程序中的一个新页面,该页面使用CFHTTP服务器标签将用户名/密码等发送到您在步骤2中生成的.net脚本。如果您有可用的 SSL,建议将其用于传输信息。您的 .net 应该将令牌返回给 Coldfusion,然后您可以从那里重定向cflocation到您的 .net 应用程序,确保包含授权会话的用户名和令牌。确保您的 .net 应用程序将令牌标记为已在授权会话表中使用,这样令牌就不会被反复使用。

我过去曾使用此方法将用户从一个应用程序链接到另一个应用程序,并且成功运行。它基本上是您自己的开放式身份验证类型令牌系统的缩小版本。

于 2013-05-23T13:27:14.513 回答
1

我会在两个系统的身份验证表中为每个用户添加一个随机 guid。使用第一个系统对它们进行身份验证,并通过 POST 将 guid 传递给第二个系统。使用第二个系统获取 guid 并验证身份验证并初始化该用户的会话。

于 2013-05-23T19:55:14.053 回答