0

我们正在尝试修改我们的 Intranet Web 应用程序,每个用户都使用自己的用户名和密码登录身份验证来登录所有 Intranet Web 应用程序。

为此我们尝试使用他们本地的 windows /linux 系统用户名和密码。

一旦用户登录到他们的系统,他/她就可以在浏览 Web 应用程序后直接访问所有 Intranet Web 应用程序。他/她无需为每个 Intranet Web 应用程序每次都登录。

我读了很多文章(等等..),但我不明白我如何获得本地 windows/linux 系统用户名和密码那些使用 PHP 登录到该系统的人,至少用户名单独是够多了。

我试过<?php echo getenv("username"); ?> 这个,但它显示空白。

请给我一个解决方案。请不要拒绝这个问题。

提前感谢您的回答和评论。

4

2 回答 2

2

简短答案:您无法在服务器端获取本地用户 machine-loginname。这将是一个安全漏洞!

长答案:您可以使用 PHP 来查询您公司的 LDAP 是否在登录表单中给出的用户名和密码匹配,并使用该信息来验证该用户的给定服务。那是一切的一个密码-策略。

但据我了解,您需要一个SingleSignOn -Policy (SSO),以便坐在其客户端的用户在访问网站时甚至不需要提供她的凭据。这只能使用处理“票证”之类的不同工具链来实现。这样的工具链将是Microsoft 的 ActiveDirectory 或 Apple 的 OpenDirectory 使用的Kerberos 。这个工具链可以使用 LDAP 作为后端来存储它的密码。

但是使用 Kerberos 绝非易事。必须对提供 Intranet 服务的 WebServer 进行kerberized,以便它可以处理从 kerberos-server 获得的票证。

你应该看看那个方向。在您最喜欢的搜索引擎中尝试将 Kerberos 或 SSO 作为搜索字符串。

于 2013-04-05T10:37:37.847 回答
0

您必须在 PHP 中使用 LDAP 进行身份验证。

脚步:

1) 制作登录表单 2) 接收输入并与您的数据库进行比较(通过 ldap)。3) 如果没问题,用 PHP 开始一个会话,保存一个 Cookie。4) 在您的所有站点中使用 session_start(),这样您就可以获得会话信息。

Cookie 只能由创建它的站点使用,因此您应该将您的 Intranet 放在同一个域中或将此信息保存在数据库中。

PHP 不会像您发布的那样获取您的系统变量,PHP 没有集成在任何操作系统中,它就像任何编程语言一样,您可以构建您想要的东西。

于 2013-04-04T13:04:18.730 回答