【问题标题】:Programmatically set connectionString for ActiveDirectoryMembershipProvider以编程方式为 ActiveDirectoryMembershipProvider 设置 connectionString
【发布时间】:2012-08-10 08:04:49
【问题描述】:

可以使用

  new PrincipalContext(ContextType.Domain,null)

没有为 Active Directory 提供任何连接字符串。

使用ActiveDirectoryMembershipProvider 时,您必须在web.config 中提供一个LDAP 端点。

我正在处理的站点将部署在多个站点上,我不想在web.config 中为每个部署填写详细信息。

MSDN 上的How To: Use Forms Authentication with Active Directory in Multiple Domains 指定了 3 个(!)会员提供商来处理 3 个域,这并不令人印象深刻。但是,这篇文章来自 2005 年,它处理的任务与我所追求的不同。

问题:

是否可以在 web.config 中不硬编码 LDAP 端点的方式使用 ActiveDirectoryMembershipProvider

我更愿意使用ActiveDirectoryMembershipProvider 而不是PrincipalContext 来(可能)能够调用ChangePassword 等。

【问题讨论】:

    标签: active-directory asp.net-membership


    【解决方案1】:

    不,如果不指定目标 LDAP 服务器,则无法使用 ActiveDirectoryMembershipProvider

    必须指定连接字符串,字符串必须包含服务器(包含ADS_FORMAT_SERVER

    您必须创建一个 connectionStrings 元素(ASP.NET 设置架构) Web.config 文件中标识 Active Directory 的条目 要使用的服务器、Active Directory 域或 ADAM 应用程序分区。 提供者将仅在域范围内运行,或在子范围内 域内。

    如果您想支持活动目录林,并且可以选择丢失表单身份验证,请考虑使用 Windows 身份验证。 Windows 身份验证将使用 NTLM 和 Kerberos 来获取用户在森林中的身份,您仍然可以通过模拟更改用户密码。见WindowsIdentity.Impersonate()

    【讨论】:

    • "..在 web.config 中没有硬编码 LDAP 端点的方式?"
    • @user2864740,我不确定我是否理解这个问题。 Windows 身份验证不需要在 web.config 中指定 LDAP 端点,我明确表示 ActiveDirectoryMembershipProvider 是不可能的。
    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2018-11-26
    • 2011-04-18
    • 2012-07-18
    • 2016-02-15
    • 2014-07-26
    相关资源
    最近更新 更多