Страница 1 из 4

Есть здесь программисты? Вопрос по интеграции с eDir

СообщениеДобавлено: 06 фев 2005, 04:07
Багинский Константин
Хочется научиить ряд приложений, как под win так и под lin аутентифицировать пользователей через eDir чтобы эти приложения брали логин/пароль в eDir. Однако как же скрестить ежа с ужом я никак не могу понять. Просил различных программеров разобраться с этим, но в ответ очень невнятное бормотание. Я не программист. Мне нужно поставить задачу программистам (причем я понял, что мой попадос в том, что ставить задачу придется не в терминах чего мне хочется как пользователю, а в терминах, чего им конкретно надо делать). Может кто-нибудь помочь внятной консультацией по этому вопросу? Изучение developer.novell.com пока идет не слишком успешно. Все-таки область не моя. :cry:

Re: Есть здесь программисты? Вопрос по интеграции с eDir

СообщениеДобавлено: 07 фев 2005, 10:19
Владимир Горяев
Багинский Константин писал(а):Хочется научиить ряд приложений, как под win так и под lin аутентифицировать пользователей через eDir чтобы эти приложения брали логин/пароль в eDir.
Может через LDAP?

СообщениеДобавлено: 07 фев 2005, 11:19
Ultrin Faern
На чем пишем?

По поводу Delphi = http://developer.novell.com/ndk/delphilib.htm

По поводу C = http://developer.novell.com/ndk/w32sdkc.htm

И вообще = http://developer.novell.com

СообщениеДобавлено: 07 фев 2005, 12:40
Михаил Григорьев
Проще всего использовать конечно же LDAP

В чем сложности непонятно, берем с девелопера библы и заголовочные файла для ldap, подключаем и используем.

Для программиста мне кажется тут не может возникнуть никаких проблем :)

Простецкая прога пишется за 10 мин.

СообщениеДобавлено: 07 фев 2005, 13:20
Музалёв Николай
....брали логин/пароль

Константин, если вы изложите проблему более определенно чего вам хочется как пользователю, возможно смогу вашим программистам помочь в практическом плане.

Коллеги, а сам пароль вообще можно взять из Дерева? и как называется это поле, где он?

СообщениеДобавлено: 07 фев 2005, 13:42
Владимир Горяев
Музалёв Николай писал(а):Коллеги, а сам пароль вообще можно взять из Дерева? и как называется это поле, где он?
Нельзя, пароль в дереве не хранится, но храниться хеш пароля, а вот его то ...

СообщениеДобавлено: 07 фев 2005, 14:06
Михаил Григорьев
Музалёв Николай писал(а):Коллеги, а сам пароль вообще можно взять из Дерева? и как называется это поле, где он?


К вопросу о пароле... Не так давно объяснял одному другу, даже файлик написал:

Вопрос: Как происходит передача пароля в NetWare?

Ответ (укороченный вариант): При регистрации в сети пароль в открытом виде не передается, а применяется схема защищенной аутентификации.
Рассмотрим процесс для NetWare 3.xx. Сначала клиент устанавливает с сервером первичное соединение (attach) с состоянием NOT-LOGGED-IN. После этого на сервер передается имя пользователя и тип объекта (User), на основании которых запрашивается UserID. Из введенного пароля и UserID рассчитывается хеш пароля (далее этот хеш длиной 16 байт будем называть PASSWORD). После, клиент запрашивает у сервера EncryptionKey (по сути он не является ключом шифрования, но так называется функция) и получает число длиной 8 байт. Это число шифруется, используя PASSWORD в качестве ключа шифрования, а результат (8 байт) отправляется на сервер. Сервер делает тоже самое (посланное число он знает, свойство PASSWORD у него есть) и сравнивает результат с присланным клиентом числом. Если совпадает - пускает, если нет - клиент получает отлуп, но после небольшой задержки, чтобы невозможно
Было организовать быстрый подбор в режиме online. Хакер, вооружившийся сниффером и "прослушавший" этот процесс, имеет в своем распоряжении имя пользователя, его UserID и два 8-байтовых числа (случайное число, переданное сервером и результат его шифрования на хеше пароля). В терминах криптографии: ему необходимо провести атаку на ключ с известными открытым и шифртекстом. На PII-350 скорость такого перебора составляет около 65000 паролей в секунду. Отсюда несложно посчитать затраты времени в зависимости от длины пароля и используемого алфавита. Для NetWare 4.0 и выше процесс происходит практически также, но он еще дополнительно шифруется по алгоритму RSA. Исходные тексты всех изложенных выше процедур доступны в пакете ncpfs, распространяемом по лицензии GPL. Он ориентирован на Linux.

СообщениеДобавлено: 07 фев 2005, 16:14
Багинский Константин
Все дело как раз в паролях. Хочется нормального SSO. Логин и пароль ОДИН. И хранится он в eDir! И не хочется заморачиваться на хэши.

Мне казалось, что я читал, как Novell сообщил о том, что проблема паролей снята в последних версиях. Что вроде как не надо заморачиваться насчет хэшей и т.п. Что-то типа сильного шифрования, но могу ошибаться.

Первый раз проблема встала, когда стали городить огород вокруг Линуксового прокси. Захотелось пароль хранить в eDir. Решили работать с каталогом по LDAP. И вот тут-то и встала проблема, что пароль должен храниться в открытом виде! И никак в нашей версии не обходилось это. (NW 5.1). Более того, это доп поле доступно по умолчанию всем. Можно, конечно удалять, но исключительно индивидуально. Очень неудобно.

Может это вообще никак не обходится. Но я так воспрял духом по поводу некоего рекламного заявления Novell-a. Возможно необоснованно.

Теперь есть еще одно приложение и с разработчиками предварительно договорились об интеграции с eDir. Однако в процессе разговора с программистами они начали меня грузить вопросами типа "а как это делается". Вот я и задумался, как делается нормальный SSO и делается ли? Как это сделать правильней?

За ссылки на SDK спасибо, но для меня это тарабарщина полная. А на уровне развернутого алгоритма действий, когда остается только взять заранее известные куски из SDK, ответа найти не могу.

Еще хочется переделать с проксей. Сейчас подключение к проксе идет через VPN и к модулю VPN (pptpd) написан патч, считывающий атрибуты пользователя из LDAP-a. Но пароль, как я уже говорил, в результате хранится в открытом виде. Опять вопрос, кто может написать нормальный плагин, чтобы таки сделать интеграцию с eDir.

Но в любом случае хочется понимать, что можно ожидать от такой интеграции на уровне расширенного алгоритма для разработчика.[/b]

СообщениеДобавлено: 07 фев 2005, 16:44
Музалёв Николай
И еще раз
К вопросу о пароле...


Михаил, спасибо в любом случае. Просто то, что пароля живьем нет, а только хеши - это я узнал вторым после названия "NetWare" в 199далеком году... надо было бы указать на иронию вопроса более прозрачно, но я ненавижу эти желтые рожи...

СообщениеДобавлено: 07 фев 2005, 17:58
Ultrin Faern
Для SSO посмотрите SecretStore - пароли хранятся в открытом виде, доступны только для пользователя. Правда это не один пароль, но для каждого пользователя свой.

http://developer.novell.com/ndk/ssocomp.htm

СообщениеДобавлено: 07 фев 2005, 18:29
Михаил Григорьев
Багинский Константин писал(а):Все дело как раз в паролях. Хочется нормального SSO. Логин и пароль ОДИН. И хранится он в eDir! И не хочется заморачиваться на хэши.


Ну если стоит Client32 то на мой взгляд не составляет труда проверить залогинился ли юзер и в каком дереве, ну а дельше что нужно то и делаем, пароль даже не передается, проверяется лишь факт удачной регистрации и в каком дереве.

Багинский Константин писал(а):Первый раз проблема встала, когда стали городить огород вокруг Линуксового прокси. Захотелось пароль хранить в eDir. Решили работать с каталогом по LDAP. И вот тут-то и встала проблема, что пароль должен храниться в открытом виде! И никак в нашей версии не обходилось это. (NW 5.1). Более того, это доп поле доступно по умолчанию всем. Можно, конечно удалять, но исключительно индивидуально. Очень неудобно.


Чёт я не пойму, кто на кого авторизуется? squid авторизуется на eDir или как? если речь про сквида то решение то есть же, ставится за 30 мин.

Багинский Константин писал(а):Теперь есть еще одно приложение и с разработчиками предварительно договорились об интеграции с eDir. Однако в процессе разговора с программистами они начали меня грузить вопросами типа "а как это делается". Вот я и задумался, как делается нормальный SSO и делается ли? Как это сделать правильней?


Ну опять же, если стоит Client32 то факт регистрации проверить можно, тут заморачиваться нечего даже. Опять же непонятно что ваше заказное приложение делает, может оно в инет ломится, а может к базе данных....

Вот если клиент 32 не стоит ТО тогда SSO сделать будет черезвычайно сложно, придется пол выньдовззз переписать, утрирую конечно, но доля истины есть.

Багинский Константин писал(а):Еще хочется переделать с проксей. Сейчас подключение к проксе идет через VPN и к модулю VPN (pptpd) написан патч, считывающий атрибуты пользователя из LDAP-a. Но пароль, как я уже говорил, в результате хранится в открытом виде. Опять вопрос, кто может написать нормальный плагин, чтобы таки сделать интеграцию с eDir.


Тоже непонятно, что откуда берётся и какой пароль где лежит в открытом виде. На *nix есть такая штука как Radius а он стыкуется хоть с AD хоть с eDir

СообщениеДобавлено: 07 фев 2005, 18:50
Владимир Горяев
Грамотно поставить задачу нужно - и решение почти готово. :)
...аутентифицировать пользователей через eDir.. и ...чтобы эти приложения брали логин/пароль в eDir или.. проверяли., или проверить залогинился ли юзер и в каком дереве - вот где видимо путаница.

СообщениеДобавлено: 07 фев 2005, 19:14
Михаил Григорьев
Владимир Горяев писал(а):Грамотно поставить задачу нужно - и решение почти готово. :)
...аутентифицировать пользователей через eDir.. и ...чтобы эти приложения брали логин/пароль в eDir или.. проверяли., или проверить залогинился ли юзер и в каком дереве - вот где видимо путаница.


Согласен на все 100%, правильно поставленый вопрос содержит как минимум 50% ответа :)

СообщениеДобавлено: 07 фев 2005, 19:24
Музалёв Николай
Моё вышеозначенное решение относится к случаю
...или проверить залогинился ли...

СообщениеДобавлено: 07 фев 2005, 20:01
Багинский Константин
Вопрос про SQUID. Где решение и какое?

Про прокси проблема была в том, что хочется контролировать на уровне пользователей не только SQUID но и NAT. А тут уже нужен доп сервис, который бы сначала определял пользователя, а потом давал ему заданный IP и на этом основании задавать правила работы NAT. Так появился VPN. Возможно есть более изящное решение, но придумать не смогли.

Насчет клиента. Часть машин Линуксовых и как там с этим быть не совсем понятно. Т.е. есть линукс-клиент для NW, но нет уверенности, что у него те же возможности, что и у виндового клиента. В идеале клиента не хочется. Хотя в конце концов, почему бы и нет.

Из общих задач еще видится почтовый сервис, который также должен предоставлять пользователю его почту без дополнительных вопросов про логин-пароль. Дальше веб-сервер. Дальше... Ну и так далее по нарастающей. Поэтому хочется понять принципиальную архитектуру подобного решения.

Понятно, что к каждому сервису придется писать плагин, но вопрос как принципиально этот плагин будет работать. Опять же архитектура решения в ситуации с клиентом Novell и без него.

Приговариваются еще умные слова про Kerberos. Но тут столько тумана, что я все никак не переварю. Может кто уже понимает эту сторону вопроса. Не было бы проблем, если бы было месяц - полтора спокойной жизни разобраться. А так просто задница какая-то. :cry:

А приложение лезет в базу данных. Но к этому приложению может обращаться клиент из инета понятия не имеющий о нашем Дереве и о Новеле вообще. Т.е. 3-х звенная архитектура. Клиент - сервер приложений - база данных. И сразу вопрос, а как назначать права пользователям внутри системы, как их заводить в систему, как учитывать контекст и учитывать ли его вообще? Особенно с контекстом проблемы возникают. Такое ощущение, что производители прикладных систем еще совсем не доросли до этой простой для системщиков парадигмы и что сдвиг будет только лет через 10.

:cry: