使用本地windows用户名和密码使用PHP进行身份验证的内部网web应用程序;LDAP


Intranet web applications that use the local windows username and password to authenticate using PHP & LDAP

我们正在尝试修改我们的内部网web应用程序,每个用户都可以使用自己的& &;只需一个用户名和密码登录认证即可登录所有Intranet web应用程序。

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

一旦用户登录到他们的系统,他/她可以直接访问所有内网web应用程序,只要他/她浏览web应用程序。他/她不需要每次登录每个内部网web应用程序。

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

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

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

提前感谢您的回答和评论

简答:您无法在服务器端获得本地用户的机器登录名。这将是一个安全漏洞!

长答:您可以使用PHP查询您公司的LDAP中loginform中给定的用户名和密码是否匹配,并使用该信息对给定服务的用户进行身份验证。-policy.

但据我所知,你想要一个SingleSignOn-Policy (SSO),这样用户坐在它的客户端甚至不需要在访问网站时提供她的凭据。这只能使用不同的工具链来处理"票"之类的东西。这样的工具链将是Kerberos,它被微软的ActiveDirectory或苹果的OpenDirectory所使用。这个工具链可以使用LDAP作为后端来存储它的密码。

但是使用Kerberos绝非易事。提供内部网服务的WebServer必须kerberized,这样它才能处理从kerberos-server获得的票证。

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

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

步骤:

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

cookie只能由创建它的站点使用,因此您应该将您的内部网置于同一域中或将此信息保存在数据库中。

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