如何使用Windows身份验证对中间层上的用户进行身份验证
我们有一个用Delphi编写的服务器,它使用RemObjects DataAbstract / SDK.我们希望使用
Windows身份验证对用户进行身份验证,以允许他们访问我们的服务器.
目前我们执行以下操作: 1)客户端应用程序以明文形式将Windows用户名和密码发送到服务器. 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客户端. 谢谢你提供的所有帮助.
这就是DataAbstract应该自己处理的事情,如果不是这样,那就是Datasnap的半支持库:)当涉及到远程处理时,对端点进行身份验证/授权以及保护数据交换非常关键.
基本上,您必须不发送用户凭据,而是交换客户端和服务器都知道如何进行身份验证的“令牌”.完整的解释可能很复杂.您可以从MSDN开始(查找AcceptSecurityContext()和InitializeSecurityContext()).一个可能的问题是,如果DataAbastract有适当的钩子来实现身份验证阶段,这可能需要多次往返. 作为权宜之计,您可以启用IPSec来保护通信通道,并且不要轻易地“嗅探”整个用户帐户. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 静默卸载英国媒体报道
- 在Windows 7上签名的inno exe非常慢
- windows-server-2008-r2 – 在EC2上自动挂载音量
- windows – 从DLL导出所有内容会影响性能
- windows – 如何从启用了“以管理员身份运行”的基于WiX的安
- Windows编程,没有可再发行组件
- windows-phone-8 – 项目需要先部署才能启动
- windows-phone-7 – 如何在模拟器中没有Internet连接条件下
- windows-phone – wp8:如何在windows手机商店中提交应用更
- Windows – 事件ID 9331 MSExchangeSA和事件ID 9335 MSExch