Authentication 自动登录用户到第三方网站而不向其显示密码 背景

Authentication 自动登录用户到第三方网站而不向其显示密码 背景,authentication,login,Authentication,Login,我们正在将第三方电子邮件解决方案集成到我们的网站中。当用户进入邮件页面时,必须在邮件站点对其进行自动身份验证 现在,Mail链接指向我们的页面,该页面会自动提交一个包含用户登录名和密码的表单。单击submit后,用户将被重定向到带有身份验证cookie的Mail站点 这种方法的问题是,我们不希望用户看到他的邮件密码,因为我们会自动为他生成密码,并且有一些合理的理由不显示密码 问题: 是否有任何方法可以接收邮件身份验证cookie,而无需将登录信息发送到客户端并从客户端浏览器执行form.subm

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

现在,
Mail
链接指向我们的页面,该页面会自动提交一个包含用户登录名和密码的表单。单击
submit
后,用户将被重定向到带有身份验证cookie的
Mail
站点

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

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

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

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

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

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

查找与您的邮件供应商和“通过身份验证”相关的主题。您没有提到您在web邮件解决方案中使用的供应商/软件,因此在这方面我帮不了您多少忙。除了将用户信息(在post请求中)转发给登录处理程序之外。

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

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

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

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

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

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

您正在尝试哪种邮件解决方案。这似乎是ServerFault用户更了解的问题。如果您不想通过编程来实现,那么您想实现什么样的邮件解决方案。这似乎是ServerFault用户更熟悉的问题。如果你不想通过编程来实现,那么我应该用这个唯一的ID做什么呢?我必须传递用户名/密码,因为这是我登录网站(界面)的唯一方式。邮件提供商对我的唯一ID一无所知。好吧,我的想法是(据我当时所知):1。生成存储在数据库中并确定用户的唯一ID。2.向用户发送电子邮件,将此ID作为隐藏在表单中或(更好)作为URL中的参数(例如“)3。用户收到电子邮件并单击此链接后,应用程序将分析参数并验证会话(并在数据库中将此ID标记为无效或已使用)当然,这需要修改邮件提供商的代码…我该如何使用唯一的ID?我必须传递用户名/密码,因为这是我登录网站(界面)的唯一方式。邮件提供商对我的唯一ID一无所知。好的,我的想法是(据我所知)