非域 IIS 服务器在域上进行身份验证?

非域 IIS 服务器在域上进行身份验证?

我有一个 IIS 服务器,它是不在域内的独立服务器。

因此用户不必登录到本地用户数据库,我是否可以使用 IIS 服务器,根据域控制器对用户进行身份验证,或者至少将用户的登录名传递到 IIS 应用程序?

可以假设用户会信任该网站。

答案1

当我尝试弄清楚如何利用 Active Directory 实现 BlogEngine.NET 时,我遇到了类似的需求。经过一段时间的研究,我能够将 Active Directory 用户帐户与基本身份验证 .NET 成员资格框架结合使用。

这在我的域成员 Web 服务器上有效,但可以轻松地在非域成员服务器上工作,前提是您将用户名和密码添加到 web.config 的配置部分。

我的博客文章关于如何配置:

在指向您的域控制器的部分中添加一个条目。

<add name="ADConnectionString" connectionString="LDAP://server.domain.com/DC=domain,DC=com" />

请注意,LDAP:// 语法的第一部分指定了域控制器的名称 (server.domain.com)。这里有几个选项。您可以指定完全限定域名 (如示例所示);您可以指定relativeDistinguishedNamek (例如 server);您可以指定域控制器的 IP 地址 (例如 192.168.1.10);或者为了获得更多冗余,您可以仅指定域名 (例如 domain.com)。

使您的部分看起来如下所示:

<membership defaultProvider="MyADMembershipProvider">
      <providers>
        <add name="MyADMembershipProvider"
                 type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                 connectionStringName="ADConnectionString"
                 attributeMapUsername="sAMAccountName"
                 enableSearchMethods="true"/>
      </providers>
</membership>

您会注意到,我没有配置用于连接到 Active Directory 的用户名和密码。这是因为我在域成员服务器上运行 BlogEngine,并且 IIS 服务在使用网络服务帐户的应用程序池下运行。如果您必须使用显式凭据,那么您可以将 connectionUsername 和 connectionPassword 添加到 MyADMembershipProvider 条目中,并提供相应的信息。

答案2

如果可能的话,我建议使用 LDAPS 调用而不是 LDAP。如果您要开始以纯文本形式传递域密码,我还建议使用 SSL。

答案3

虽然我同意加密 LDAP,但同时也加密了配置文件中的域密码......(钥匙在垫子下面,还是在花盆后面?)

相关内容