Я работаю над настройкой SSO для нашей интрасети. Идея состоит в том, чтобы пользователь мог войти на свою рабочую станцию, используя свое имя пользователя и пароль для активного каталога. Затем при входе в систему запускалось небольшое приложение, которое отправляло некоторую уникальную идентифицируемую информацию, имя пользователя и MAC-адрес компьютера на сервер, где они вводились в базу данных с отметкой времени. Затем, когда пользователь получает доступ к интрасети, java-апплет отправляет MAC-адрес пользователя на сервер и сравнивает его с записью в базе данных, чтобы увидеть, находит ли он совпадение в течение заданного периода времени, если это так, то он подписывает пользователя и удаляет запись из базы.
К сожалению, наша интрасеть не работает на IIS, поэтому я не могу использовать NTLM для аутентификации, что было бы проще, но не совместимо с браузерами, что является одним из требований. NTLM также не вариант, потому что наша интрасеть доступна только в форме intranet.company.com и, насколько мне известно, NTLM не работает с адресами в этой форме.
Хорошо, теперь к вопросу. В настоящее время я нахожусь в процессе создания приложения для аутентификации клиента на С++, и мне нужен способ получить какой-то уникальный идентификатор или токен, который отличал бы законно вошедшего в систему пользователя Active Directory от того, кто получил приложение и изменил свое локальное имя пользователя. пользователю AD.
Да, я знаю, что это, вероятно, неправильный способ сделать это, но сейчас это кажется единственным вариантом. Если у вас есть предложения, кроме как не делать этого, пожалуйста, дайте мне знать. Также я знаю об огромной зияющей дыре в безопасности, которую он создает, если вы можете придумать способ залатать эту дыру без NTLM, обязательно дайте мне знать.