我们有一个使用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和智威汤逊
如何使用node.Js保护单个页面应用程序中的静态文件
使用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来保护通信渠道,不要让整个用户帐户轻易被“嗅探”。
总结以上是内存溢出为你收集整理的如何使用Windows身份validation在中间层对用户进行身份validation全部内容,希望文章能够帮你解决如何使用Windows身份validation在中间层对用户进行身份validation所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)