Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Как использовать проверку подлинности NTLM с Active Directory
Я пытаюсь реализовать аутентификацию NTLM на одном из наших внутренних сайтов,и все работает. Единственный кусочек головоломки, которого у меня нет, - это то, как взять информацию из NTLM и пройти аутентификацию в Active Directory.
Существует хорошее описание NTLM и шифрования, используемого для паролей, которые я использовал для реализации этого, но я не уверен, как проверить, является ли пароль пользователя действительным.
Я использую ColdFusion, но решение этой проблемы может быть на любом языке (Java, Python, PHP и т. д.).
Редактировать:
Я использую ColdFusion на Redhat Enterprise Linux. К сожалению, мы не можем использовать IIS для управления этим и вместо этого должны написать или использовать сторонний инструмент для этого.
Update - я получил эту работу, и вот что я сделал
Я пошел с библиотекой JCIFS из samba.org.
Обратите внимание, что приведенный ниже метод будет работать только с NTLMv1 и не работает с NTLMv2. Если вы не можете использовать NTLMv1, вы можете попробовать Jespa, который поддерживает NTLMv2, но не является открытым исходным кодом, или вы можете использовать Kerberos/SPNEGO.
Вот мой web.xml:
<web-app>
<display-name>Ntlm</display-name>
<filter>
<filter-name>NtlmHttpFilter</filter-name>
<filter-class>jcifs.http.NtlmHttpFilter</filter-class>
<init-param>
<param-name>jcifs.http.domainController</param-name>
<param-value>dc01.corp.example.com</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>CORP.EXAMPLE.COM</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NtlmHttpFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
</web-app>
Теперь все URLs совпадающие /admin/* будут требовать NTLM аутентификации.
На самом деле вы спрашиваете: существует ли какой-либо способ проверить токены "WWW-Authenticate: NTLM", представленные IE и другими клиентами HTTP, при выполнении единого входа (SSO). SSO - это когда пользователь вводит свой пароль в "single" раз, когда он делает Ctrl-Alt-Del, и рабочая станция запоминает и использует его по мере необходимости для прозрачного доступа к другим ресурсам без повторного запроса пароля у пользователя.
Обратите внимание, что Kerberos, как и NTLM, может также использоваться для реализации проверки подлинности SSO. При наличии заголовка "WWW-Authenticate: Negotiate", IE и другие браузеры будут отправлять SPNEGO обернутых Kerberos и / или NTLM токенов. Подробнее об этом позже, но сначала я отвечу на заданный вопрос.
Единственный способ проверить пароль NTLMSSP "response" (как и те, которые закодированы в заголовках "WWW-Authenticate: NTLM", отправленных IE и другими браузерами) - это вызов NetrLogonSamLogon(Ex) DCERPC со службой NETLOGON контроллера домена Active Directory, который имеет полномочия для целевой учетной записи или имеет полномочия для "trust". Кроме того, чтобы должным образом защитить связь NETLOGON, необходимо использовать шифрование защищенного канала, которое требуется начиная с Windows Server 2008.
Излишне говорить, что существует очень мало пакетов, которые реализуют необходимые вызовы службы NETLOGON. Единственные, о ком я знаю, это:
Windows (конечно)
Samba - Samba-это набор программных программ для UNIX, реализующих ряд протоколов Windows, включая необходимые вызовы служб NETLOGON. На самом деле, Samba 3 имеет специальный демон для этого под названием "winbind", с которым могут взаимодействовать другие программы, такие как модули PAM и Apache. В системе Red Hat вы можете сделать
yum install samba-winbindиyum install mod_auth_ntlm_winbind. Но это самая легкая часть-настройка этих вещей-это совсем другая история.Jespa-Jespa ( http://www.ioplex.com/jespa.html) - это библиотека 100% Java, которая реализует все необходимые вызовы службы NETLOGON. Он также предоставляет реализацию стандартных интерфейсов Java для аутентификации клиентов различными способами, такими как фильтр сервлетов HTTP, сервер SASL, JAAS LoginModule и т. д.
Остерегайтесь, что есть ряд акцепторов аутентификации NTLM, которые не реализуют необходимые вызовы службы NETLOGON, а вместо этого делают что-то еще, что в конечном итоге приводит к сбою в том или ином сценарии. Например, в течение многих лет способ сделать это в Java был с фильтром сервлета аутентификации NTLM HTTP из проекта под названием JCIFS. Но этот фильтр использует метод man-in-the-middle, который был ответственен за давнюю "hiccup bug" и, что более важно, он не поддерживает NTLMv2. По этим и другим причинам его планируется удалить из JCIFS. Есть несколько проектов, которые были непреднамеренно вдохновлены этим пакетом, но теперь также обречены на провал. Есть также много фрагментов кода, опубликованных на форумах Java, которые декодируют маркер заголовка и вырывают домен и имя пользователя, но абсолютно ничего не делают для проверки ответов на пароль. Достаточно сказать, что если вы используете один из этих фрагментов кода, Вы можете также ходить со спущенными штанами.
Как я уже упоминал ранее, NTLM - это только один из нескольких поставщиков поддержки безопасности Windows (SSP). Есть ТАКЖЕ Дайджест SSP, Kerberos SSP и т. д. Но Negotiate SSP, который также известен как SPNEGO, обычно является поставщиком, который MS использует в своих собственных клиентах протокола. Согласование SSP на самом деле просто договаривается либо проверки подлинности NTLM или Kerberos SSP SSP. Обратите внимание, что Kerberos можно использовать только в том случае, если и сервер, и клиент имеют учетные записи в целевом домене и клиент может связаться с контроллером домена достаточно для получения билета Kerberos. Если эти условия не выполняются, то NTLM SSP используется непосредственно. Так что NTLM ни в коем случае не устарел.
Наконец, некоторые люди упоминали об использовании LDAP "simple bind" в качестве службы проверки паролей на случай смены пароля. LDAP на самом деле не разработан как служба аутентификации, и по этой причине он не является эффективным. Также невозможно реализовать SSO с помощью LDAP. SSO требует NTLM или SPNEGO. Если вы можете найти акцептор NETLOGON или SPNEGO, вы должны использовать его вместо этого.
Майк
Как я это понимаю.
NTLM является одним из IIS встроенных методов аутентификации. Если хост зарегистрирован в домене указанного active directory, он должен быть автоматическим. Одна вещь, которую нужно остерегаться, - это имя пользователя должно быть в одном из двух форматов.
- domain\username
- username@domain.tld
Если вы пытаетесь пойти против другого active directory, вы должны использовать аутентификацию в стиле форм и некоторый код LDAP.
Если вы пытаетесь сделать интрасеть без нулевого входа в систему с помощью встроенной аутентификации IIS
- домен должен быть указан как надежный сайт в браузере IEx
- или используйте url, который использует имя netbios вместо имени DNS.
- чтобы он работал в firefox читайте здесь
Вы можете разрешить всплывающее окно проверки подлинности Firefox, выполнив следующие действия в Firefox:
- Откройте Mozilla Firefox
- Введите about:config в адресной строке
- Введите network.automatic-ntlm-auth.trusted-uris в поле поиска texfield
- Дважды щелкните имя предпочтения и ключ в имени сервера как строковое значение
- Закройте вкладку
- Перезагрузка Firefox.
Хм, я не совсем понимаю, чего ты добиваешься.
Обычно реализация NTLM на внутреннем сайте так же проста, как снятие флажка "Enable Anonymous Access" в "Authentication and Access Control" на вкладке "Directory Security" свойств сайта в IIS. Если этот флажок снят, то пользователи вашего веб-приложения увидят всплывающее диалоговое окно NTLM.
Вам нет необходимости писать какой-либо код, который взаимодействует с Active Directory. IIS позаботится о проверке подлинности для вас.
Можете ли вы быть более конкретным в том, что вы пытаетесь сделать?
я предполагаю,что вы хотите получить доступ к некоторым атрибутам, которые установлены против LDAP account-role-department и т. д.
для coldfusion проверьте это http://www.adobe.com/devnet/server_archive/articles/integrating_cf_apps_w_ms_active_directory.html
и тег cfldap http://livedocs.adobe.com/coldfusion/6.1/htmldocs/tags-p69.htm#wp1100581
Что касается других языков - другие сделают это с соответствующим APIs