【问题标题】:Integrating authentication between a web app and desktop app在 Web 应用程序和桌面应用程序之间集成身份验证
【发布时间】:2010-11-06 16:22:50
【问题描述】:
我想通过桌面应用程序将文件上传到网站,然后将用户带到该网站。该网站具有 Web 服务,但与网站一样需要身份验证。有没有办法在不强制用户进行两次身份验证的情况下做到这一点(一次在桌面应用程序中,一次在网络浏览器中)?
不幸的是,出于安全原因,您不能预填充类型文件的输入,这是有道理的,因为用户不希望您从他/她的计算机上传任意文件。但是如果他们有桌面应用程序,有什么办法可以解决这个问题吗?
或者也许让用户先登录到网络应用程序,然后可以重用身份验证cookie?
还有其他想法吗?
谢谢,
本
【问题讨论】:
标签:
web-services
web-applications
security
【解决方案1】:
我会通过 api 将 dekstop 应用程序用作网站应用程序的客户端。
所以,通过桌面应用程序登录。 api 返回一个身份验证令牌(如 Carlos 建议的那样),它可能是存储在您的数据库中一段时间的 md5 哈希,可能与客户端 IP 地址匹配。
然后,桌面应用程序可以作为经过身份验证的用户(通过使用身份验证令牌)在 api 上进行调用(例如上传文件)。
在加载网站时,url 可能是 http://website/login/{auth_token},其中将身份验证令牌添加到 url。 api 可以检查它是否是有效的身份验证令牌并考虑用户已登录。
【解决方案3】:
这完全取决于服务和站点的身份验证类型。是集成Kerberos,WS-Auth,是Basic/Digest HTTP,是forms/cookie吗?
【解决方案4】:
这个答案很可能不适用于非常普遍的用户在广泛开放的网络场景中,但在 Intranet 上下文中,使用 Windows 身份验证(在 ASP .Net 解决方案上)可以提供这个。