我们有大约 10 台 iMac 连接到 mac mini 服务器。服务器上启用了 php 和 Apache。我正在使用 php 开发 Intranet 网站。我的要求是让客户端的用户名连接到服务器。$_SERVER['REMOTE_USER'] 不工作。我不知道为什么。请帮帮我。是不是可以写JS来找呢?它不应该要求用户登录。它应该直接从客户端机器登录。
3 回答
$_SERVER['REMOTE_USER']
将包含用于HTTP auth的用户名。没有合理的方法可以说服浏览器告诉您访问者登录的操作系统用户是什么(您可能对已签名的 Java 小程序有一些运气,但我不会打赌)。
对于您可以控制客户端计算机的 Intranet 站点/应用程序,您可以使用一些在系统启动时运行的脚本/应用程序,它将读取用户名并将其存储为 cookie。您可以从您的网站读取该 cookie。
Cookie 的存储方式因浏览器而异。例如,firefox 3+ 使用带有文档格式的 sqlite 数据库(有关更多信息,请参阅这篇文章)。您必须确保在访问 cookie 时浏览器没有运行。
我相信您正在寻找的是单点登录 (SSO)。这在连接到域的 Windows 计算机上最常用,它允许用户在不输入任何凭据的情况下对 Intranet 站点进行身份验证(例如,它使用他们的域凭据)。
我不知道纯mac等价物。(最新的)Windows 系统称为 Kerberos,并由 Mac 上的 Firefox 支持,如下所述:http ://www.cgl.ucsf.edu/Security/CGLAUTH/CGLAUTH.html
值得注意的是,这需要操作系统、浏览器和网站协同工作。一些问题:firefox(即使在 Windows 上)不会自动发送登录详细信息,它需要更改配置以包含您要进行身份验证的站点。网站需要能够验证传递给它的凭据的真实性,这通常意味着它需要能够与凭据授权机构(域控制器/RADIUS/X500 服务器等)进行通信。pesmissions 机制需要支持(并配置)以允许凭证委托(即允许客户端 PC 将令牌传递到网站以证明身份)。
这个问题是由设法让它在 linux 上工作的人提出的,所以应该是一个很好的起点