【问题标题】:Send username and password to another site将用户名和密码发送到另一个站点
【发布时间】:2012-08-13 13:18:30
【问题描述】:

我想通过主站点上的一个登录页面连接两个网站。

您登录 example1.com 并在我想选择“自动连接到 example2.net”的设置中输入用户名和密码并将其提交给 example2.net,以便发送用户名和密码

我该怎么做?

接下来,每当我登录 example1.com 并单击访问 example2.net 时,我只想发送用户名和 API 密钥,以便自动登录。

我该怎么做?

【问题讨论】:

  • 将用户名和密码存储在会话变量中,或者您可以将它们存储在 cookie 中并发送过来。
  • 感谢您的回复。您会说其中哪一个最安全?还有我会使用什么样的命令来实际通过站点发送它?
  • 使用 CURL 将登录详细信息发布到 example2.net。阅读 php 文档以获取更多信息。如果您遇到问题,请显示一些代码,我们会解决的
  • This 是一个很好的开始。
  • IMO 最好的办法是在一个主域中处理登录操作。如stackoverflow.com/questions/2510049/… 中所述

标签: php api authentication autologin


【解决方案1】:

这是一个快速算法

  1. 用户登录site1.com 并激活单点登录(可能是一个复选框)。
  2. site1.com 将为该选项创建一个数据库条目。
  3. 用户访问site2.com,如果尚未登录,他将被重定向到site1.com/cross-authenticate.php
  4. site1.com 将有权访问 cookie/会话。
  5. 如果用户激活了单点登录选项,site1.com 将生成一个令牌(base64 可能是一个非常大且安全生成的数字)并将其存储在数据库中。
  6. 例如,site1.com 会将用户重定向到 site2.com/cross-authenticate.php?key=fnapsoufhapoer8hwf9ehrgdosughpa9dhg9aer8gyesrg
  7. site2.com 将检查数据库中的该密钥,对用户进行身份验证,然后启动有效会话。

【讨论】:

  • 谢谢@Adnan。简单易懂。
【解决方案2】:

$_SESSION 等保存在数据库中。然后检查从一个站点到另一个站点的连接选项是否为 SET。如果是这样,当用户使用其他网站时,查询数据库(针对用户名或诸如此类)。如果条目存在,则根据数据库值创建 cookie 和会话,否则将用户重新路由回登录页面。

【讨论】:

  • 坏主意。非常糟糕的主意!您打算如何在第二个站点上对用户进行身份验证?按用户名?
  • @Adnan 我不知道他的网站是如何构建的。显然它不仅仅是username(这只是我能想到的最简单的例子)
  • 我正在通过用户名和 API 密钥进行身份验证。
猜你喜欢
  • 2013-08-10
  • 1970-01-01
  • 2011-02-22
  • 1970-01-01
  • 2014-04-29
  • 2014-07-12
  • 2012-10-20
  • 2014-02-12
  • 1970-01-01
相关资源
最近更新 更多