Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 авторизация по доменной учётке  [new]
vlv74
Member

Откуда: Брянск
Сообщений: 68
при разработке программы столкнулся с проблемой
необходимо сделать авторизацию в программе через доменную учётку
когда пользователь запускает программу я проверяю под каким пользователем он работает на компьютере
если под доменным, запрашиваю у домена список его групп и на основании этого выдаю права
есть и локальная авторизация тут тоже проблем нет

а вот когда пользователь желает авторизоваться в программе с помощью доменной учётки на недоменной машине
или просто под другим пользователем, то возникает проблема как проверить пароль на доменную учетку

LogonUser - не подходит, у юзера недостаточно прав
22 фев 20, 10:59    [22085035]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4564
vlv74,

в хорошо заданном вопросе, всегда есть ответ:
автор
а вот когда пользователь желает авторизоваться в программе с помощью доменной учётки на недоменной машине
или просто под другим пользователем, то возникает проблема как проверить пароль на доменную учетку
22 фев 20, 11:08    [22085037]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61166
По сабжу - https://msdn.microsoft.com/en-us/data/aa378612(v=vs.96)

vlv74> когда пользователь желает авторизоваться в программе с помощью доменной учётки на недоменной машине
vlv74> или просто под другим пользователем, то возникает проблема как проверить пароль на доменную учетку

Только я ничего не понял? Зачем вообще "проверять пароль"?

Posted via ActualForum NNTP Server 1.5

22 фев 20, 11:17    [22085039]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
vlv74
Member

Откуда: Брянск
Сообщений: 68
автор
Только я ничего не понял? Зачем вообще "проверять пароль"?


может я не правильно выразился, но смысл такой:
пользователь вводит логин и пароль от доменной учётки,
запускается некая функция которая проверяет валидность данной связки
22 фев 20, 11:33    [22085046]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 896
CreateProcessWithLogon
22 фев 20, 11:41    [22085050]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
vlv74
Member

Откуда: Брянск
Сообщений: 68
Ghost Writer
CreateProcessWithLogon

а можно тоже?, но на delphi???
я не силён в С++ , да прогу пишу в Delphi
22 фев 20, 11:46    [22085051]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 896
vlv74,

можно же поискать со словом "delphi".
вот какой-то исходник как пример использования
http://www.delphisources.ru/pages/sources/raznoe/2008-year/run-as.html
22 фев 20, 12:07    [22085057]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61166
vlv74> CreateProcessWithLogon
> а можно тоже?, но на delphi???

Да хоть по форуму поискали бы: https://sql.ru/forum/434974
Но CreateProcessAsUser/CreateProcessWithLogon всё же немного иное.

Posted via ActualForum NNTP Server 1.5

22 фев 20, 12:21    [22085060]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 896
Гаджимурадов Рустам
Но CreateProcessAsUser/CreateProcessWithLogon всё же немного иное
конечно другое, но ведь было условие
vlv74
с помощью доменной учётки на недоменной машине
ImpersonateLoggedOnUser в этом случае как-то поможет ?
22 фев 20, 12:31    [22085065]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61166
Ghost Writer> ImpersonateLoggedOnUser в этом случае как-то поможет ?

+ LogonUser - да, должно помочь AFAIU.

Posted via ActualForum NNTP Server 1.5

22 фев 20, 12:50    [22085070]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 896
а хотя да, она же используется с LogonUser, правда автор пишет
vlv74
LogonUser - не подходит, у юзера недостаточно прав
22 фев 20, 12:56    [22085072]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1670
vlv74,

У вас аутентификация или авторизация?
Проверка у вас средствами собственного сервера или средствами ОС?
Если на бэкенде есть сервер и сервер в домене, то можно использовать ntlm/kerberos через SSPI. У меня есть пример в консольном приложении, где сервер имперсонирует учетку клиента, а обмен по TCP.
22 фев 20, 22:14    [22085239]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
vlv74
Member

Откуда: Брянск
Сообщений: 68
X-Cite
vlv74,

У вас аутентификация или авторизация?
Проверка у вас средствами собственного сервера или средствами ОС?
Если на бэкенде есть сервер и сервер в домене, то можно использовать ntlm/kerberos через SSPI. У меня есть пример в консольном приложении, где сервер имперсонирует учетку клиента, а обмен по TCP.


есть сервер домена(я даже не знаю где он)
при запуске компьютера необходимо войти под учёткой если машина в домене
и при запуске программы она запускается под учёткой того, кто в данный момент авторизовался на машине
  sDomain := GetEnvironmentVariable ('USERDNSDOMAIN');
  sUserName := GetEnvironmentVariable ('USERNAME');

если домен правильный,получаю список групп пользователя и предоставляю тот или иной уровень доступа
    Login_AD.SQL.Add('SELECT cn,distinguishedname FROM ''LDAP://DC=Domen,DC=ru'' where objectCategory=''person'' and samaccountname='''+sUserName+'''');
    Group_AD.SQL.Add('SELECT name FROM ''LDAP://DC=Domen,DC=ru'' WHERE objectCategory = ''Group'' and member=''' + Login_AD.FieldByName('distinguishedname').AsString + '''');

если домен не тот
надо сделать возможность ввести логин и пароль от доменной учётки и проверить связку
если ок то получить его группы и определиться с доступом
если NoOk выдать сообщение об ошибке.

из всего выше написанного не знаю как проверить связку логин и пароль
22 фев 20, 23:09    [22085254]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1670
vlv74,

Когда я говорил о сервере, то имел ввиду, что у вас есть клиент и есть сервер ваш же, написанный для этого приложения...
т.е. клиент это морда (десктоп, браузер, телефон - неважно), а вся логика на сервере (winservice, iis, console - неважно)... В этом случае вся аутентификация и авторизация происходит на сервере приложения который в домене.. а клиент хоть на линуксе или андроиде неважно....

В случае не домена, вам придется в любом случае писать собственный сервер, к примеру аутентификации, где через SSPI (ntlm/kerberos) делать проверку.

Как вы хотите проверить на принадлежность учетки к домену на машине не в домене? (kerio vpn не рассматриваем)
22 фев 20, 23:27    [22085267]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
vlv74
Member

Откуда: Брянск
Сообщений: 68
есть сервер SQL, где находится БД, он в домене
проверить наличие учетки просто, через LDAP
а вот как проверить пароль не знаю,
на некоторых страничках в браузере (не я делал и у кого спросить не знаю) спрашивает пароль для подключения

Сообщение было отредактировано: 23 фев 20, 11:57
23 фев 20, 11:56    [22085391]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1670
vlv74
есть сервер SQL, где находится БД, он в домене
проверить наличие учетки просто, через LDAP
а вот как проверить пароль не знаю,
на некоторых страничках в браузере (не я делал и у кого спросить не знаю) спрашивает пароль для подключения

Ну так браузер же не в LDAP лезет...
Он по http обращается к серверу, который в домене... Представьте что ваше приложение это браузер... Значит надо сделать тоже самое... Можно по http, можно по tcp не суть... В любом случае вам придется писать некий сервис, который будет проверять аутентификацию и авторизацию, и лучше не через LDAP, а средствами Winapi + SSPI
23 фев 20, 12:04    [22085392]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
vlv74
Member

Откуда: Брянск
Сообщений: 68
автор
средствами Winapi + SSPI

вот как это сделать я и спрашиваю
желательно с примером кода
23 фев 20, 12:16    [22085395]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
vlv74
Member

Откуда: Брянск
Сообщений: 68
и тишина.......
вот так всегда, все всё знают, умеют, а как спросишь "Покажи как?", так все в кусты
гуглить я и сам умею,
но то что находил или не подходит, или не работает

потому и создал пост, может кто делал подобное и поможет.
25 мар 20, 19:06    [22105909]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61166
vlv74> и тишина.......

Так месяц прошел, вы могли уже и решить задачу.
На каком варианте в итоге остановились и что не получилось?

Posted via ActualForum NNTP Server 1.5

25 мар 20, 19:54    [22105937]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11609
vlv74,

Изначальная задача
vlv74
надо сделать возможность ввести логин и пароль от доменной учётки и проверить связку
решения не имеет. Пароль пользователя не знает никто. Даже ОС.

Все, что вы можете сделать, это попытаться залогиниться, используя введенный логин и пароль и посмотреть на результат

Залогиниться на недоменной машине под доменной учеткой невозможно. В принципе. Все, что вы можете сделать - это передать по своему протоколу учетные данные на машину в домене (привет безопасникам), попробовать залогиниться там и вернуть результат клиенту
25 мар 20, 19:59    [22105941]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61166
_Vasilisk_> Залогиниться на недоменной машине под доменной учеткой невозможно.

Насколько я понял, он хочет наоборот.

Posted via ActualForum NNTP Server 1.5

25 мар 20, 22:06    [22105990]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61166
Точнее, не наоборот, а залогиниться в домен из недоменной машины.

Posted via ActualForum NNTP Server 1.5

25 мар 20, 22:07    [22105991]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61166
По крайней мере, это вроде бы единственная логичная интерпретация
фразы "пользователь желает авторизоваться в программе с помощью
доменной учётки на недоменной машине".

Posted via ActualForum NNTP Server 1.5

25 мар 20, 22:09    [22105992]     Ответить | Цитировать Сообщить модератору
 Re: авторизация по доменной учётке  [new]
vavan
Member

Откуда: Казань
Сообщений: 3491
для dcom-серверов когда-то делали подобное, там в CoCreateInstanceEx для аутентификации доменная инфа передается и потом на отдельные интерфейсы тоже подвязывается...
26 мар 20, 11:18    [22106198]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить