2014-05-23 52 views
0

我有一个WinForms应用程序,它连接到一个网站。在Windows应用程序中,用户可以通过SOAP web服务(每个Web服务调用通过HTTPS发送用户名/密码)登录其网站帐户。我被要求创建一个按钮,将它们登录到浏览器的网站中,因此如果他们需要同时使用Windows应用程序和网站,则不必登录两次。如何将用户从Windows应用程序登录到asp.net网站(通过API)?

Windows应用程序中的按钮是否安全?通过在URL中对用户名和密码进行编码,使用户可以一键式访问该网站?在使用HTTPS时,我不确定URL本身是否已加密,或者只有请求/响应流量。对用户进行非对称加密/传入某种登录令牌会更好吗?如果是这样,我怎么能阻止别人简单地使用同一个标记?

我不太确定谷歌如何才能在这个问题上得到答案,而且随着改变API的使用相对困难一旦使用,我宁愿在第一时间做一些明智的事情。

回答

1

您可以创建一个令牌并使用用户名和“超前使用”超时值将其存储在数据库中。然后,将该令牌包含在URL中,并在您的数据库中查找的网站上验证该令牌是否存在,并且已连接到用户并且是最近的。

+1

使用令牌而不是使用用户名和密码作为令牌的优点是什么?我意识到令牌的使用是相当普遍的,但我从来没有真正理解它背后的推理:) – NickG

+0

随机令牌不可能让任何人猜测可以工作的令牌,特别是在令牌的超时时间内。 (您应该每次都生成一个新的令牌)。使用加密的用户名+密码“令牌”,任何人都可以使用它。使用不应该发生的HTTPS,但有可能发生配置错误,我宁愿在解决方案级别拥有安全机制。此外,理想情况下,您的系统不应该知道用户的密码。它应该存储为散列,并且仅用于验证用户以后输入的内容。令牌给你一个内部机制。 –

+0

系统使用散列密码,但只发送散列将允许任何人知道只有散列,这比要求他们知道密码更安全。所以大概你只是想使用哈希存储,而不是任何形式的认证? – NickG

相关问题