我曾经在一家银行工作,它的内部网有一个非常酷的功能。登录计算机后,会通过 Apache 在 PHP 中设置全局变量,它们包含登录计算机的用户的身份。现在我找到了一份新工作,我想知道这东西是怎么工作的!我想再次实现这种事情。
我在这里使用的是什么:
- FreeBSD 服务器,我不知道版本。
- Apache 2.2 网络服务器
- PHP 5,一些自定义编译,由于各种原因,我无法升级或修改。
- 广告经理
- 登录到他们计算机的所有用户都使用事件目录,都在同一个域中。
我以前的东西是这样的:
echo $_SERVER['username']
这将打印当前登录用户的用户名。
有人可以解释一下,这是如何做到的吗?
附言如果我的任何服务器设置不符合要求,请说出来,因为这样我就有理由要求老板给我一个我自己的,有更多的控制权。
最佳答案
有很多方法可以实现这一点。然而,其中很多都依赖于对客户端和服务器的控制。
明显的数据来源包括:
- NTLM
- Client side certificates
- Ident协议(protocol)(没有加密扩展不是很安全)
- 持久的 cookie(同样,不安全)
- HTTP 身份验证方法
但是这些都没有解释该值如何出现在 session 中 - 这一定是在 PHP 代码中实现的。
因此,在不知道它是如何在您之前的网站上实现的情况下,我们无法告诉您:
- 是否安全且正确实现
- 如何复制行为
鉴于您的资源列表,虽然可以基于直接 LDAP 调用实现身份验证,通过您的应用程序传递用户名和密码,但我强烈建议使用(例如)openId - 但将提供者限制为您的 openid 提供者- 它将使用 MSAD 作为后端。
关于php - 从浏览器获取用户身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6952707/