【问题标题】:Getting user identity from browser从浏览器获取用户身份
【发布时间】:2011-08-05 07:10:56
【问题描述】:

我曾经在一家银行工作,该银行的内部网有一个非常酷的功能。登录计算机后,通过 Apache 在 PHP 中设置了全局变量,它们包含登录计算机的用户的身份。现在我在一份新工作,我想知道,这东西是如何工作的!我想再次实现这种东西。

我在这里的工作:

  • FreeBSD 服务器,我不知道版本。
  • Apache 2.2 网络服务器
  • PHP 5,一些自定义编译,由于各种原因无法升级或修改。
  • MS AD
  • 所有登录到其计算机的用户都使用活动目录,都在同一个域中。

我以前是这样的:

echo $_SERVER['username']

这将打印当前登录用户的用户名。

谁能解释一下,这是怎么做到的?

附:如果我的任何服务器设置不符合要求,请说出来,因为那样我就有理由要求老板给我一个我自己的,拥有更多控制权。

【问题讨论】:

  • 我能告诉你的是,这称为单点登录,通常涉及到一个kerberos 服务器。我还可以告诉你个人经验,让 SSO 工作是 @$$ 中的一个痛苦。祝你好运。
  • adLDAP 会帮助你,但你需要重新编译。

标签: php apache active-directory


【解决方案1】:

有很多方法可以实现这一点。然而,其中很多依赖于对客户端和服务器的控制。

明显的数据来源包括:

然而,这些都没有解释值是如何出现在会话中的——这一定是在 PHP 代码中实现的。

因此,如果不知道它是如何在您之前的网站上实现的,我们无法告诉您:

  • 是否安全且正确实施
  • 如何复制行为

鉴于您的资源列表,虽然可以基于直接 LDAP 调用实现身份验证,通过您的应用程序传递用户名和密码,但我强烈建议使用(例如)openId - 但将提供程序限制为您的 openid 提供程序- 它将使用 MSAD 作为后端。

【讨论】:

  • 谢谢,我正在寻找的信息。
【解决方案2】:

我没有正确理解这个问题,所以我编辑了我的帖子......

您可以使用 apache auth,您可以通过 ip 或主机名进行身份验证

http://httpd.apache.org/docs/2.0/en/howto/auth.html

【讨论】:

  • 这不是我真正要问的。这意味着,用户必须在某个地方登录,手动将他们的身份传递给浏览器。我想要完全自动化。
  • 那么你需要 apache auth 或 mod_auth_ldap 之类的东西。
猜你喜欢
  • 1970-01-01
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2019-06-28
  • 2023-04-04
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
相关资源
最近更新 更多