У нас есть сервер, написанный на Delphi, который использует RemObjects DataAbstract / SDK.Мы хотели бы использовать аутентификацию Windows для аутентификации пользователей, чтобы предоставить им доступ к нашему серверу.
В настоящее время мы делаем следующее:
1) Клиентское приложение отправляет имя пользователя и пароль Windows в виде открытого текстасервер.2) Сервер проверяет учетные данные, используя следующую функцию:
function ValidateUserLogonAPI(const UserName: string; const Domain: string;
const PassWord: string) : boolean;
var
Retvar: boolean;
LHandle: THandle;
begin
Retvar := LogonUser(PWideChar(UserName),
PWideChar(Domain),
PWideChar(PassWord),
LOGON32_LOGON_NETWORK,
LOGON32_PROVIDER_DEFAULT,
LHandle);
if Retvar then
CloseHandle(LHandle);
Result := Retvar;
end;
Конечно, этот метод имеет тот недостаток, что учетные данные пользователя передаются по сети в виде открытого текста.Мы могли бы зашифровать их, но ключи шифрования / дешифрования должны были бы поставляться в приложении.
Я уверен, что должен быть лучший способ достижения нашей цели.Я немного читал о токенах, но не совсем понимаю, как они будут работать в этой ситуации.
Обратите внимание, что ее решение должно работать как для клиента Delphi Windows, так и для клиента Delphi Prism ASP.NET.
Спасибо за любую помощь, которую вы можете оказать.