在工作中,我们刚刚实现了一个 Apple Open Directory 服务器。它存储每个人的用户名和密码,并实现 LDAP 和 Kerberos。我的任务是配置我们所有的 ASP.Net Web 应用程序以对其进行身份验证——因此用户可以使用他们的 Open Directory 用户名和密码登录到我们的 ASP.Net 应用程序。
我需要 mod_auth_kerb 之类的东西,但 IIS 和 ASP.Net 除外——而且我想使用基于表单的身份验证。
这可能吗?
据我所知,IIS 仅支持用于 NTLM 身份验证的 kerberos。我从未见过支持 kerberos 的辅助库或软件。(我的意思是真正的 kerberos)现在您可以使用 .Net 中的 LDAP 库以 kerberos 方式在服务器之间进行通信,但是用户客户端和 asp.net 服务器之间的连接仍然是 SSL 纯/文本连接。
我也从未见过它完成,但它应该能够完成......如果 asp.net 服务器与 Apple Open Directory 服务器具有信任关系,并且两者之间建立了 LDAP 连接,则可能有可能在 IIS 级别启用 NTLM 身份验证,这将(理论上)通过信任将 kerberos 连接扩展到 AOD。同样,我什至从未考虑过它,所以我不知道尝试它会有什么陷阱。
我已经成功地使用 DirectoryServices 通过 LDAP 协议连接到其他 Active Directory,但我仍然没有找到在没有 NTLM 的情况下在客户端和身份验证服务器之间嵌入 kerberos 连接的方法。
要在 IIS 中使用 Kerberos 身份验证,受保护资源的身份验证类型应为“Windows 身份验证”。这将使 IIS 使用协商 (spnego) 身份验证。服务器必须是域的成员,Kerberos 才能工作。如果可能的话,我建议使用 Server 2008 或 Server 2008 R2 机器,因为它可以更优雅地处理 Kerberos 身份验证。
我有一段时间没有机会使用 Mac 服务器了,但据我了解,Open Directory 能够为 Windows 域成员提供服务。对于授权,您必须从 ASP 查询 LDAP 目录或使用您自己的内部授权机制。
编辑:这篇 Microsoft 知识库文章可能对您有用:http: //msdn.microsoft.com/en-us/library/aa480475.aspx