自动登录用户到第三方网站而不向他显示密码

时间:2009-12-07 17:15:02

标签: authentication login

背景

我们正在将第三方电子邮件解决方案集成到我们的网站中当用户转到Mail页面时,必须在Mail站点自动进行身份验证。

目前,Mail链接指向我们的页面,该页面会自动使用用户的登录名和密码提交表单。点击submit后,用户将被重定向到具有身份验证Cookie的Mail网站。

这种方法的问题在于我们不希望用户看到他的Mail密码,因为我们会自动为他生成密码,并且有一些理由不显示它。

问题

有没有办法接收邮件身份验证cookie而无需将登录信息发送到客户端并从客户端的浏览器执行form.submit操作?有没有更好的方法来做我想做的事情?

修改

当然“我试图以编程方式进行”。看起来没有合理的解决方案,除了将这些登录/密码传递给客户端。看起来我们必须接受用户可以看到他的邮件密码,并以某种方式确保他不能使用此信息将密码更改为我们不知道的其他值。

3 个答案:

答案 0 :(得分:2)

编辑:我没有正确阅读帖子,我以为他试图登录远程邮件应用程序,而不是在自己的服务器上托管。忽略这个答案。

当您登录到远程第三方邮件网站时,他们将创建一个cookie(因为HTTP是无状态的,这是它知道用户被验证的唯一方式,除非他们在URL中存储某种会话ID)。当您将用户发送到该站点时,该站点需要知道如何对用户进行身份验证。即使您从应用程序登录并抓取了cookie,也可以在用户浏览器上为其他网站设置cookie。这种方法的唯一方法是,如果您可以在第三方网站上找到某种开发API,或者它们允许您在URL中使用会话ID。

可能的解决方案,但存在安全风险 如果它们允许您在URL中设置session_id(例如,PHP中的PHPSESSID),那么您可以获取会话ID并在将其发送给用户时将其附加到URL。我真的不喜欢这个想法,因为如果用户点击电子邮件中的链接,新页面将能够检查引荐来源并在URL中查看他们的会话ID。这可能会成为巨大的安全风险。

答案 1 :(得分:1)

查找与您的邮件供应商和“传递身份验证”相关的主题。您没有提到您为Web邮件解决方案使用的供应商/软件,因此我无法帮助您。除了将用户的信息(在post请求中)转发给登录处理程序。

答案 2 :(得分:0)

在发送电子邮件之前生成唯一ID,并将其作为隐藏而不是用户名/密码放入表单中。使它们成为一次性的(在成功进入现场之前只能使用一次或使用一次)