不确定是在 StackOverflow(半编程相关)还是在这里问这个问题。我认为我的大部分问题都与服务器端问题有关,所以我会先在 Serverfault 上提问。如有必要,请重新定位问题。
我在 IIS 6 上有一个用 PHP(FastCGI)编写的网站。该网站采用 SSL 保护,供内部和外部使用,用户可从各种类型的网络登录网站。所有需要访问网站的用户都在 AD 中,当前方法可以很好地完成身份验证。当前登录方案是一个标准页面,其中的 HTML 表单将用户名/密码回发到 ldap 身份验证函数。在此身份验证中,我用用户 AD 组的序列化数组填充会话变量(PHP),以供应用程序的其他部分使用。我必须能够检索要使用的组的列表。
我的任务是让系统自动登录用户(如果用户从域/网络内连接到系统)。启用集成身份验证(仅启用)后,系统运行正常,尽管我现在正试图解决一些问题。使用集成身份验证后,无需密码(很好),但这会使我的 ldap 身份验证功能(使用用户 AD 组填充变量)变得毫无用处!我仍然需要这些组才能在应用程序的其他部分使用。
我读过一些文章以及问题/答案服务器故障/堆栈溢出关于集成身份验证,但我仍有疑问。
- 如果用户尝试从不在允许域中的计算机登录系统,IIS 是否会回退到任何其他形式的身份验证或提供 403?
有没有办法获取用户的“成员”属性(使用 PHP/其他 Web 脚本语言),而无需使用ldap绑定它需要密码(不通过集成登录发送)。ldap_get_entries需要先前的搜索资源,该资源必须按上述方式绑定)
完全忽略集成身份验证,核心问题是- 本地内联网用户是否可以自动登录网站而无需提示,而非内联网用户则需要提示输入用户名/密码(无论是标准登录表单网页,还是浏览器弹出的窗口)
如果上述答案是肯定的,则详细说明如何将不胜感激。
答案1
我以前工作时,一些申请也遇到过类似的请求。我们通过使用一个具有足够权限读取群组成员资格的特殊实用程序帐户解决了这个问题,但仅此而已。申请流程大致如下:
- 用户访问该网站。
- 发生集成登录。
- 后端代码处理登录,并使用已编程的实用程序用户连接到 AD。
- 后端代码查询 AD 以获取刚登录用户的组成员身份。
此时,组成员身份可供代码使用。这里的关键是,它是一个专用实用程序帐户,负责获取信息,服务器不会像您现在使用基本身份验证那样冒充用户。