通过LDAP查询来自Active Directory的IP地址的用户信息?

时间:2019-04-09 07:05:18

标签: go active-directory ldap

Go应用程序客户端中发出HTTP请求。我知道发出请求的客户的IP地址。

是否可以通过LDAP查询从Active Directory中通过IP地址了解用户信息(用户名,电子邮件等)?我需要使用哪种过滤器?

l, err := ldap.Dial("tcp", fmt.Sprintf("%s:%d", "ldap.example.com", 389))
if err != nil {
    log.Fatal(err)
}
defer l.Close()

searchRequest := ldap.NewSearchRequest(
    "dc=example,dc=com", // The base dn to search
    ldap.ScopeWholeSubtree, ldap.NeverDerefAliases, 0, 0, false,
    "(&(objectClass=organizationalPerson))", // The filter to apply
    []string{"dn", "cn"},                    // A list attributes to retrieve
    nil,
)

sr, err := l.Search(searchRequest)
if err != nil {
    log.Fatal(err)
}

for _, entry := range sr.Entries {
    fmt.Printf("%s: %v\n", entry.DN, entry.GetAttributeValue("cn"))
}

1 个答案:

答案 0 :(得分:1)

Active Directory不存储每个人使用的IP或计算机名称。尝试将用户与计算机匹配非常困难,因为一个人通常可以从任何计算机登录。

如果您真的想要这些信息,可以通过以下几种方式:

  1. 如果您拥有环境中每台计算机的管理员权限,则可以访问\\IPAddress\c$\Users并检查最近使用的配置文件。
  2. 使用Windows身份验证使人们对您的网站进行身份验证。只要您的网站位于“受信任的站点”(位于“ Internet选项”中),人们就会自动登录。我没有使用Go进行此操作的经验,但这是我在Google上找到的实现:https://gowalker.org/github.com/mfcollins3/windowsauthtoken的想法是您的网站将在IIS之后运行。 IIS执行身份验证,然后将用户信息转发到您的应用程序。