Получить токен уникального идентификатора текущего пользователя AD, вошедшего в систему.

Я работаю над настройкой SSO для нашей интрасети. Идея состоит в том, чтобы пользователь мог войти на свою рабочую станцию, используя свое имя пользователя и пароль для активного каталога. Затем при входе в систему запускалось небольшое приложение, которое отправляло некоторую уникальную идентифицируемую информацию, имя пользователя и MAC-адрес компьютера на сервер, где они вводились в базу данных с отметкой времени. Затем, когда пользователь получает доступ к интрасети, java-апплет отправляет MAC-адрес пользователя на сервер и сравнивает его с записью в базе данных, чтобы увидеть, находит ли он совпадение в течение заданного периода времени, если это так, то он подписывает пользователя и удаляет запись из базы.

К сожалению, наша интрасеть не работает на IIS, поэтому я не могу использовать NTLM для аутентификации, что было бы проще, но не совместимо с браузерами, что является одним из требований. NTLM также не вариант, потому что наша интрасеть доступна только в форме intranet.company.com и, насколько мне известно, NTLM не работает с адресами в этой форме.

Хорошо, теперь к вопросу. В настоящее время я нахожусь в процессе создания приложения для аутентификации клиента на С++, и мне нужен способ получить какой-то уникальный идентификатор или токен, который отличал бы законно вошедшего в систему пользователя Active Directory от того, кто получил приложение и изменил свое локальное имя пользователя. пользователю AD.

Да, я знаю, что это, вероятно, неправильный способ сделать это, но сейчас это кажется единственным вариантом. Если у вас есть предложения, кроме как не делать этого, пожалуйста, дайте мне знать. Также я знаю об огромной зияющей дыре в безопасности, которую он создает, если вы можете придумать способ залатать эту дыру без NTLM, обязательно дайте мне знать.


person Robert F.    schedule 12.07.2010    source источник


Ответы (1)


AD — это всего лишь реализация Microsoft Kerberos. Одной из основных функций Kerberos является создание таких разрешений. Итак, с этой стороны ваше решение вовсе не хак. Это просто часть проверки, которая выглядит как автомобильная авария.

Тем не менее, я полностью потерялся в вашей проблеме на стороне клиента. Весь смысл AD или Kerberos в целом в том, что вы не можете подделать аутентифицированного пользователя. Вы просто запрашиваете у ОС билет для вошедшего в систему пользователя. Неважно, кто получит ваше приложение или какое у него локальное имя пользователя. ОС точно знает, кто вошел в систему.

person MSalters    schedule 13.07.2010
comment
Это именно то, что я хочу сделать, но я, кажется, потерялся в том, как получить этот билет. Что касается зияющей дыры, все, что нужно злоумышленнику, — это знать mac-адрес и время, когда человек будет входить в систему, и он может успешно подделать этого пользователя, как только он войдет в систему и до того, как он впервые войдет в интрасеть. время. Теперь я знаю, что это маловероятно, но это все еще дыра. - person Robert F.; 14.07.2010