AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.04.2008, 12:32   #41  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от oleg_e Посмотреть сообщение
Может за последнее аремя возникли новые идеи?
Идеи-то есть уже давно, вот времени их воплотить не хватает... А идея простая: как было выяснено, проблема с подключением возникает из-за того, что AOS получает информацию о SID'е пользователя для сопоставления его с тем или иным пользователем Axapta не из характеристик RPC-подключения (при том, что там используется аутентификация и обеспечение целостности данных), а непосредственно от клиента Axapta. Последний для этого получает SecurityToken своего основного потока, для этого SecurityToken запрашивает SID, проверяет его с помощью функции IsValidSid() из kernel32.dll и (та-да!) преобразует в строковый формат с помощью функции ConvertSidToStringSidW() все из той же kernel32.dll, после чего посылает его в таком виде AOS'у.
При этом клиент Аксапты еще для каких-то надобностей грузит ntdsapi.dll и version.dll. Примечательны они тем, что из них импортируется всего лишь 1 и 3 функции, соответственно. Теперь зачем эта информация нужна...
В общем, идея видится такая:
  • создать библиотеку (условно назовем ее sidfake), которая будет называться тоже ntdsapi.dll или version.dll, и экспортировать из нее функции с теми же названиями, которые импортирует из них клиент Аксапты;
  • в DllMain библиотеки sidfake по событию DLL_PROCESS_ATTACH:
    • проверять, что загружающий ее процесс - ax32.exe, а если не так, то не грузиться;
    • грузить "настоящую" библиотеку ntdsapi.dll/version.dll из виндового каталога и перенаправлять свои экспортируемые функции на настоящие функции этих библиотек (надо только проверить, не будет ли косяков при загрузке одним процессом двух одноименных модулей);
    • править в памяти таблицу импорта ax32.exe с тем, чтобы функция ConvertSidToStringSidW() перенаправлялась на функцию из библиотеки sidfake (на момент ее загрузки импорты из kernel32.dll у ax32.exe уже должны быть настроены, поскольку она в таблице иморта идет раньше ntdsapi.dll и version.dll);
    • читать конфиг/настройку реестра на предмет того, какой SID (в строковом виде) нужно возвращать;
  • в функции ConvertSidToStringSidW() библиотеки sidfake (эта функция не обязана экспортироваться и называться может как угодно) подсовывать считанное ранее текстовое представление SID'а вместо того, что соответствует переданному в бинарном виде SID'у.
  • положить библиотеку sidfake (напомню, ее файл должен называться в данном сценарии ntdsapi.dll или version.dll) в каталог клиента Axapta.
Идея, собственно, основана на порядке, в котором виндовый загрузчик просматривает каталоги при поиске библиотек, упоминаемых в таблице импорта загружаемого модуля.

Последний раз редактировалось gl00mie; 01.04.2008 в 13:01. Причина: уточнение
Старый 01.04.2008, 12:45   #42  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Вообще говоря, если описанный способ сработает, то получится, что в механизме аутентификации клиента AX4 кроется здоровенная дыра. Связана она с тем, что аутентификация основывается на информации, посылаемой непосредственно клиентом AOS'у, а информация эта общедоступна. Узнать SID любого пользователя в домене (при наличии доступа к этому домену) не составляет труда: это можно сделать, к примеру, с помощью оснастки adsiedit или с помощью утилиты psgetsid из PsTools, причем никаких особенных прав на это не требуется, достаточно быть обычным пользователем в домене. А узнать SID пользователя и запустить программу под этим пользователем - это, согласитесь, «две большие разницы»
За это сообщение автора поблагодарили: mazzy (5).
Старый 05.04.2008, 22:08   #43  
Vladyslav is offline
Vladyslav
Участник
Аватар для Vladyslav
 
14 / 20 (1) +++
Регистрация: 11.01.2008
Ну раз там такая "дыра", то может провести редактирование файла сервера не как взлом ПО (что является нарушением п 4.4 правил форума "...Запрещено любое обсуждение взлома, обхода защиты любого программного обеспечения..."), а как "исправление ошибки" в безопасности? ;-)

Т.е. "подправить" файл, чтобы он брал не SID, присланный бог весть откуда, а SID аккаунта, который выполняется на сервере.
Старый 29.08.2008, 15:46   #44  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Скромненько так: "Какое-то решение появилось, кроме вышеуказанного? На 5ке кто-то проверял это?"
Теги
active directory, доступ, ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Можно ли в Аксапте отправлять активным пользователям сообщения Grey DAX: Администрирование 33 02.06.2009 12:13
Сообщения пользователям в аксапте - порядок важен! SHiSHok DAX: Администрирование 13 03.02.2008 01:57
Как дать доступ локальному пользователю если он не в домене? Kuat DAX: Администрирование 1 10.12.2007 09:49
Web доступ к Аксапте Dozer DAX: Администрирование 8 31.08.2005 12:48
Доступ к Аксапте из внешнего приложения DenisS DAX: Программирование 4 13.01.2004 13:57

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:06.