所以我正在使用jQuery Mobile开发移动网络应用程序,我需要从应用程序请求远程服务器上的一些数据。我从C#SOAP Web服务或返回JSON的IHttpHandler
获取数据。在返回任何数据之前,我需要以某种方式使用Web服务/处理程序进行身份验证。我希望使用ActiveDirectory,并以某种方式通过AJAX请求将用户名和散列密码传递给服务器。问题是,使用ActiveDirectory在C#中进行身份验证的示例涉及将纯文本用户名和密码传递给PrincipalContext.ValidateCredentials
。有没有办法安全地将凭据传递给C#服务并让它在AD中进行身份验证,而不知道明文密码?
编辑:以为我可以将客户端的密码哈希,将其传递给服务器,让服务器获取所请求用户的AD密码并以相同的方式对其进行哈希,然后进行比较,但是getting the AD password isn't possible。
修改:查看aSSL。
答案 0 :(得分:1)
如果您正在使用jquery ui开发移动网络,它将不会存在于设备上,它将存在于您的Web服务器上(即,如果它是一个Web应用程序)。您的应用程序可以使用Windows authenticatin对其需要查询的服务进行身份验证,但这取决于用户运行在您身边使用的应用程序/模拟的用户。
问题是你的应用程序和这项服务如何在互联网和互联网之间进行通信。如果互联网无法访问该服务,我不知道您应该担心运输安全多少。
您还可以查看基于广告fs / ad fs 2的安全解决方案和wcf集成选项,例如解释here。
这些解决方案实现了您正在讨论的概念,AD FS是对传递的凭证进行身份验证/验证的服务,并将令牌返回给applicatin / service。通常,与AD FS的通信使用ssl来保护传输层,并且消息被签名,以确保没有人在中间混淆它们。你当然可以自己实施这样的机制。您不需要从活动目录中获取密码,您只需要查看是否可以通过使用提供的代码示例验证传递的凭据(用户名/密码)here