Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 通过域身份验证howto将IIS代理发送到Apache_Linux_Apache_Iis_Dns_Single Sign On - Fatal编程技术网

Linux 通过域身份验证howto将IIS代理发送到Apache

Linux 通过域身份验证howto将IIS代理发送到Apache,linux,apache,iis,dns,single-sign-on,Linux,Apache,Iis,Dns,Single Sign On,我们的客户机在Linux(Apache、PHP)上运行内部网。在PHP中,授权由登录对话框、会话提供 客户要求不要从登录到其域的windows计算机请求密码,而是使用登录用户的用户名/密码 由于安全原因,与apache LDAP的协作超出了范围 解决方案是在专用计算机上使用ISS作为透明代理,重写到运行intranet的ApacheLinux服务器,但代理将身份验证信息(登录名、密码)传递到ApacheServer 这个解决方案可能实现吗?如果是这样,请给我一些建议 提前感谢我假设Apache

我们的客户机在Linux(Apache、PHP)上运行内部网。在PHP中,授权由登录对话框、会话提供

客户要求不要从登录到其域的windows计算机请求密码,而是使用登录用户的用户名/密码

由于安全原因,与apache LDAP的协作超出了范围

解决方案是在专用计算机上使用ISS作为透明代理,重写到运行intranet的ApacheLinux服务器,但代理将身份验证信息(登录名、密码)传递到ApacheServer

这个解决方案可能实现吗?如果是这样,请给我一些建议


提前感谢

我假设Apache with LDAP超出范围的原因是用户名/密码由PHP应用程序处理。这一假设可能与使用登录对话框有关

基于此假设,转发密码的代理解决方案存在一些问题,因为您基本上是在两个域之间进行身份验证。在两个域之间同步密码可能是不可行的。如果新用户在访问应用程序之前必须等待同步发生,则会出现问题。在执行同步之前,密码更改还会导致登录问题。您在获取实际密码时也会遇到问题

域身份验证的工作方式是,如果初始请求导致质询,Internet Explorer将专门尝试与远程站点进行身份验证。这可以是NTLM、基本身份验证或任何形式;关键是,凭证交换由web服务器使用HTTP头和质询/响应进行处理。在IIS上执行web应用程序时,web服务器已经执行了LDAP验证,应用程序只知道用户的姓名,而不知道密码。(在使用NTLM的情况下,在质询/响应握手中实际上从未交换密码。客户端通过质询/响应演示它知道正确的密码。)

可能要做到这一点的唯一方法是让IIS应用程序通过LDAP验证用户,然后从PHP应用程序中查找该用户的凭据。如何将Windows域用户映射到PHP应用程序中的用户可能是通过domain\Username。应用程序可以加密用户名/密码,并使用重定向将加密的负载作为请求参数传递给应用程序,而不是代理。用户登录后,响应通过一个URL将其重定向到PHP应用程序,该URL将加密的负载作为参数附加

加密可以通过.Net应用程序和PHP应用程序之间的共享机密来完成。更好的解决方案是使用PHP应用程序SSL证书的公钥对其进行加密。这样,密钥会定期更改,而不必更新双方的共享密钥

您可能还希望在加密的负载中包含时间戳,以确保重定向登录仅在特定时间段内有效。您必须将负载保持得太小,以便重定向URL不会超过浏览器可以处理的最大大小