NTLoginModule: где он получает информацию о пользователе? - PullRequest
0 голосов
/ 17 февраля 2011

Я хочу, чтобы пользователь имел возможность единого входа, т. Е. После входа в систему как Пользователь Windows все службы, предлагаемые моим приложением, должны быть доступны без дальнейшей аутентификации.

Для аутентификации пользователя я использую JAAS (Java Authentication and Authorization Services), который интегрирован в Java.

Java API поставляется также с несколькими JAAS LoginModule s.Один из них называется NTLoginModule, который извлекает информацию о пользователях, вошедших в систему в данный момент.

  1. Откуда NTLoginModule получает информацию?
  2. Могу ли я использовать информацию, возвращенную NTLoginModule, для аутентификации - безопасным способом - текущего пользователя?
  3. Есть ли какие-либо проблемы безопасности, о которых я должен знать?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Я не могу помочь с JAAS, последний раз, когда я делал SSO с NTML, он был основан на jCIFS.

Однако я отвечаю на ваш третий пункт: есть проблемы безопасности с NTLM

  • NTLM довольно слабый (даже v2), и вам следует заблокировать учетные записи после определенного количества неудачных попыток входа в систему (чтобы избежать атаки методом перебора).
  • NTLM не может работать с другим брандмауэром.
  • Токен NTLM не может быть доверен третьей стороне, что приводит к проблеме double-hop .Ваше приложение не может использовать идентификатор пользователя, вошедшего в систему, для вызова другого NTLM-защищенного сервера (например, веб-службы; RSS-канала или любого веб-ресурса).
  • NTLM поддерживается не всеми браузерами.Internet Explorer и Chrome работают изначально;Firefox необходимо редактировать конфигурацию для каждого целевого сайта;Опера, Konqueror вообще не поддерживает NTLM.
0 голосов
/ 21 февраля 2011

Как я сказал в комментарии к ответу rds: «Я узнал, что NTLoginModule довольно небезопасен. Мне удалось подделать возвращенное имя пользователя, заменив файл NTUserPrincipal.class в пакете rt.jar, и поэтому я смогвернуть поддельное имя пользователя. Так что оно не подходит для любого типа аутентификации. "

Кроме того, проведя некоторые исследования, я обнаружил, что NTLoginModule извлекает информацию из nt.dll, которая является частью нативных библиотек Java.для Windows.nt.dll использует advapi32.dll для получения текущей информации о пользователе.

...