我们有一个使用RemObjects DataAbstract / SDK编写的Delphi服务器。 我们希望使用Windows身份validation来validation用户,以允许他们访问我们的服务器。
目前我们做了以下工作:
1)客户端应用程序将Windows用户名和密码以明文forms发送到服务器。 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;
当然,这种方法的缺点是用户凭证以明文forms通过networking传递。 我们可以对它们进行encryption,但encryption/解密密钥必须在应用程序内运输。
挂钩到linux身份validation运行脚本或程序时,满足一定的条件
除了本地networking上的Nginxauthentication
基本身份validation和智威汤逊
使用Windowslogin的Intranet网站身份validation
我相信,要实现我们的目标肯定有更好的办法。 我已经读了一些关于令牌的内容,但是不太明白在这种情况下他们将如何工作。
请注意,她的解决scheme必须同时适用于Delphi Windows客户端和Delphi Prism ASP.NET客户端。
谢谢你提供的所有帮助。
Apache HttpClient 4.x上传大文件时performance奇怪?
WSMan和基本授权
Nginx:是否有可能从auth_request中获得响应
如何根据Windows AD对用户进行身份validation?
从Java的Exchange Web服务身份validation
这是DataAbstract自己应该处理的事情,如果它不是Datasnap的一半支持的库:)对于远程处理来说,验证/授权端点和保护数据交换是非常重要的。
基本上,您不得不发送用户凭证,而是交换客户端和服务器都知道如何进行身份验证的“令牌”。 完整的解释可能很复杂。 你可以从MSDN开始(查找AcceptSecurityContext()和InitializeSecurityContext())。 一个可能的问题是,如果DataAbastract具有适当的挂钩来执行认证阶段,这可能需要多次往返。
作为一种权宜之计,您可以启用IPSec来保护通信渠道,不要让整个用户帐户轻易被“嗅探”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。