我有两个不同技术的Web应用程序,一个是在ColdFusion中开发的,另一个是在Asp.Net中开发的。
两个应用程序都已实施身份验证。两个应用程序的用户名与密码不同的用户名相同。
所以这就是我想要做的,我登录到我的ColdFusion应用程序,当我点击一个特定的按钮时,它必须导航到Asp.Net应用程序,而不要求我再次登录到该应用程序。 / p>
这是我提出的解决方案;我通过按钮点击将ColdFusion应用程序中的用户名作为查询字符串参数传递给Asp.Net网址,在那里它检查是否有密钥查询字符串,如果存在用户名,则登录Asp.Net应用程序。
它看起来像这样http://xxxxxx.com?username=xxx
但是在查询字符串中传递用户名并不安全,可以采取哪些措施使其安全?我正在考虑加密查询字符串,可以这样做吗?或者我应该使用另一种方法来获取此登录功能吗?
答案 0 :(得分:2)
1)在您的.net应用程序中创建一个名为AuthorizedSessions的表(或对您有意义的任何内容)。
在此表中,存储用户名,随机生成的字符串,即令牌,创建日期和日期字段,以跟踪其是否已被使用。
2)在.net应用程序中创建一个脚本以接受来自CF应用程序的用户名/密码,并首先验证用户是否可以登录,然后在AuthorizedSessions表中生成一条记录,然后返回tokeng回到coldfusion。
3)在.net中生成另一个脚本,该脚本将接受来自coldfusion的用户名/令牌作为链接。此脚本应根据授权会话表验证用户名/令牌,并确保“使用的日期”为空,因为它应该只使用一次。
4)在coldfusion中,单击应用程序中的链接会将您转到coldfusion应用程序中的新页面,该页面使用CFHTTP
服务器标签将用户名/密码等发送给您。在步骤2中生成的网络脚本。如果您有可用的SSL,建议将该信息转移过来。您的.net应该将令牌返回到coldfusion,然后您可以通过cflocation
重定向到.net应用程序,确保包含用户名&授权会话的令牌。确保您的.net应用程序将令牌标记为在authorizedsessions表中使用,以便不能一次又一次地使用令牌。
我过去曾使用这种方法将用户从一个应用程序链接到另一个应用程序,并且它的成功运作。它基本上是您自己的缩小版本的开放式身份验证类型令牌系统。
答案 1 :(得分:1)
我会在两个系统的身份验证表中为每个用户添加一个随机guid。使用第一个系统对它们进行身份验证,然后通过POST将guid传递给第二个系统。使用第二个系统获取guid并验证身份验证并初始化该用户的会话。