|
Модераторы: xvr |
|
out51d3r |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 57 Регистрация: 19.8.2006 Репутация: нет Всего: 2 |
Доброго времени суток товарищи!
Пишу приложение... И чтобы пользоваться этим приложением, пользователю надо авторизоваться. Для авторизации используются сервер Active Directory, в которой хранится информация о пользователе. 1. Пользователь запускает приложение. 2. Приложение просит авторизоваться. 3. Пользователь вводит свой windows логин и пароль. 4. Приложение смотрит, в какие группы безопасности включен пользователь. 5. В зависимости от группы безопасности, будет генерироваться соответсвующий интерфейс приложения. То есть, если пользователь будет только в группе Domain Users, то для такого пользователя будет минимальный интерфейс. Например, если он состоит в группе Domain Operator, то программа предоставит дополнительный функционал. Так, как пишу в среде Linux, хотелось бы узнать - кто как вообще работает в этом направлении. По-началу, решил использовать OpenLDAP, но примеры слишком устаревшие. В нете предлагают использовать ldap_simple_bind, но такой функции нет. Вместо неё ldap_sasl_bind и ldap_gssapi_bind. Пожалуйста, будьте добры, подсобите примерчиком или ссылками на русскоязычное руководство. (up) Это сообщение отредактировал(а) out51d3r - 19.7.2015, 16:21 |
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
1) Никаких русскоязычных руководств нет. Забудь вообще. Он-лайн дискуссий нормальных и англоязычных нет, потому можно сначала в русские потыкаться -- мало что потеряешь. Но руководства английские -- бывают, а русские -- устаревшая кривопереведённая лажа.
2) Подозреваю, что тебе придётся настраивать kerberos (клиента). Ну, во всяком случае, когда у меня были домены AD, я всегда из линукса успешно подключался к LDAP через kerberos. Потому -- скорее ldap_gssapi_bind. 3) Впрочем, это пока не очень важно -- поскольку сначала -- сделай, чтобы просто ldapsearch (команда такая) -- работал. Возможно, kerberos и не потребуется, достаточно будет какого-нибудь логина с паролем. У меня, впрочем, kerberos всегда был, в частности, потому, что это удобно. По словам "ldapsearch connect to AD" или как-то так можно найти сравнительно много полезных советов. Когда у тебя получится -- у тебя будет большэ знаний, и либо работающий kerberos либо знание, что можно обойтись sasl. 4) И да, GSS API -- это как раз фишка кербероса. Ну, разработчики из MIT его в своё время разрабатывали как типа универсальное -- но по факту, ничего полезного кроме кербероса оно не поддержывает. Так что ldap_gssapi_bind -- это про kerberos. А SASL -- это типа более универсальное API (теоретически там есть и аутэнтификацыя по сертификатам, и через kerberos), но в основном используется для безопасной передачи пары логин+пароль. |
|||
|
||||
out51d3r |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 57 Регистрация: 19.8.2006 Репутация: нет Всего: 2 |
tzirechnoy, спасибо за пинок в нужном направлении)
В терминале Linux, поигрался с ldapsearh и добился результатов: ldapsearch -H "ldap://192.168.1.1" -D "[email protected]" -w "password" -b "dc=lab,dc=local" Получил список пользователей и различные параметры. И, самое главное, получил список (поле MemberOf) в каких группах состоит пользователь! И всё же, какую функцию использует тулза ldapsearch, чтобы забиндиться к серверу?
Писал на скорую руку. В функциях подставлены актуальные значения аргументов. |
|||
|
||||
out51d3r |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 57 Регистрация: 19.8.2006 Репутация: нет Всего: 2 |
Не вкуривается. Нужна экстра-помощь. Тов. гуру, помогите пожалуйста!
Скорее всего, придётся работать в синхронном режиме. Неужели никто не писал LDAP-клиентов? |
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
Что невкуривается-то?
Я как-то был уверен, что при выборе из двух функцый, когда неполучится с одной -- ты успешно как-нибудь попробуешь другую. Впрочем, за прошэдщэе время можно было или посмотреть, какая функцыя используется при помощи ltrace, или выкачать исходники openldap, пересобрать пакет, убедится, что пересобранный работает, найти в исходниках подозрительные места, вставить в них отладочную печать, ещё раз пересобрать пакет, и посмотреть, какие функцыи и с какими аргументами вызываются, напрямую. |
|||
|
||||
out51d3r |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 57 Регистрация: 19.8.2006 Репутация: нет Всего: 2 |
Не могу осилить ldap_sasl_interactive_bind_s. В параметрах этой функции, следует передавать другую функцию, которая будет произвоить аутентификацию SASL..
|
|||
|
||||
tzirechnoy |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
Не производить аутэнтификацыю, а передавать username/realm/password.
Прототип описан в man ldap_sasl_interactive_bind_s -- это тот, который int (LDAP_SASL_INTERACT_PROC)(LDAP *id... Последний параметр -- указатель на некоторое количество sasl_interact_t из описания cyrus SASL, которые надо заполнить. Ну, и ещё одно -- я не пробовал AD+SASL. Пробовал только AD+kerberos. В прошлый раз я как-то позабыл, что, действительно, кроме GSS и SASL в LDAP есть simple -- возможно, что для авторизацыи в AD потребуется именно он. |
|||
|
||||
out51d3r |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 57 Регистрация: 19.8.2006 Репутация: нет Всего: 2 |
Наконец-то разобрался...
Это сообщение отредактировал(а) out51d3r - 23.8.2015, 19:42 |
|||
|
||||
korol |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 4.3.2016 Репутация: нет Всего: нет |
Модератор: Сообщение скрыто. |
|||
|
||||
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |