Информация о пользователе по IP-адресу из Active Directory по запросу LDAP? - PullRequest
2 голосов
/ 09 апреля 2019

В Go клиент приложения делает HTTP-запрос.Я знаю IP-адрес клиента, который отправил запрос.

Возможно ли узнать информацию о пользователе (имя пользователя, адрес электронной почты и т. Д.) По IP-адресу из Active Directory по запросу LDAP?Какой тип фильтра мне нужно использовать?

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 Ответ

1 голос
/ 09 апреля 2019

Active Directory не хранит IP или имя компьютера, которое использует каждый человек. Попытка сопоставить пользователя с компьютером затруднена, потому что человек обычно может войти в систему с любого компьютера.

Если вы действительно хотите эту информацию, есть несколько способов:

  1. Если у вас есть права администратора для каждого компьютера в вашей среде, вы можете получить доступ к \\IPAddress\c$\Users и проверить, какой профиль использовался в последнее время.
  2. Заставьте людей проходить аутентификацию на вашем сайте, используя аутентификацию Windows. Пока ваш сайт находится на доверенных сайтах (в параметрах Интернета), пользователи будут автоматически входить в систему. У меня нет опыта работы с Go, но вот реализация, которую я нашел в Google: https://gowalker.org/github.com/mfcollins3/windowsauthtoken Идея состоит в том, что что ваш сайт будет работать за IIS. IIS выполняет аутентификацию и просто перенаправляет информацию о пользователе в ваше приложение.
...