【问题标题】:How does PrincipalContext know which LDAP server to usePrincipalContext 如何知道使用哪个 LDAP 服务器
【发布时间】:2016-06-03 13:30:45
【问题描述】:

使用 VB.NET,没有参数的 PrincipalContext。我知道当 ValidateCredentials 被调用时,它将使用调用服务器的凭据,就像在我的情况下运行 ASP.NET 应用程序池的帐户一样。我的问题是,它如何知道要检查哪个 LDAP 服务器?这没有在任何地方指定,只是看起来有效。问题是,我们正在实施第二个 LDAP 服务器以进行测试。有些东西告诉我这需要新的编码来包含特定的服务器详细信息。

【问题讨论】:

    标签: vb.net ldap


    【解决方案1】:

    如果没有提供 name 参数,使用的 LDAP 服务器是运行您的应用程序的计算机(IIS 服务器)也加入的服务器。就如此容易。

    您可以随时获取域名

    Environment.GetUserDomainName
    

    为了实现连接域可能与默认域不同的场景,我将创建一个 Appsetting,为简单起见,我们将其称为 Domain,然后使用该设置的值(如果找到)连接到正确的 LDAP 服务器。

    如果该值为空或不可用,则可以使用 Environment.GetUserDomainName 提供的默认域名。

    using Context as new PrincipalContext(ContextType.Domain,GetDomainName())
    'Do something        
    End Using
    

    这是检查 Domain 应用设置是否存在并在找到时使用它的 GetDomainName() 函数。

    Public Function GetDomainName() As String
    
        Try
            Dim ConfigDomain As String = ConfigurationManager.AppSettings("Domain")
           If Not String.IsNullOrWhiteSpace(ConfigDomain) Then
                Return ConfigDomain
            Else
                Return Environment.UserDomainName
            End If
        Catch ex As Exception
            Return Environment.UserDomainName
        End Try
    
    End Function
    

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2012-06-01
      • 2015-12-05
      • 2013-09-14
      相关资源
      最近更新 更多