自动登录网站 - Java

时间:2016-09-22 19:55:49

标签: java cookies liferay

我正在尝试使用Java和表单自动登录各种网站。

我已按照https://www.mkyong.com/java/how-to-automate-login-a-website-java-example/中的教程进行操作,并且能够使用Java HTTPClient 获取,发布然后重新获取(以验证用户是否已登录)没问题。我正在查看这些请求的HTML输出,它们显示用户的内容,就像验证了一样。

问题是在我完成身份验证并尝试将用户的浏览器重定向到经过身份验证的URL后,系统会再次提示他们输入所有凭据 - 但我仍然可以在浏览器中看到第一个请求中的Cookie;他们似乎被忽视了。我正在尝试在ActionResponse中的 Liferay portlet 中执行此操作。

1 个答案:

答案 0 :(得分:2)

首先,您需要了解身份验证过程中经常发生的事情: 服务器在您的客户端中设置会话cookie。当您登录时,您将完全验证该会话 - 由cookie识别。

如果您使用服务器HTTPClient库登录,会话cookie将存储在您的服务器中。当您将客户端浏览器重定向到外部站点时,浏览器没有该cookie - 并且正在获得另一个(未授权的)会话。

问题是:如何将cookie从服务器发送到客户端?

答案是:你做不到。如果您可以为其他站点设置cookie,则会产生一系列安全问题。

然而,有些网站提供服务器到服务器到客户端身份验证

这个想法是:您的服务器使用凭据进行身份验证,外部服务器生成一次性URL(或者您可以从中构建URL的一些参数),并将客户端重定向到该URL。由于外部服务器可以将该URL与您之前的身份验证相关联,因此他将对客户端进行身份验证。但详细的实施取决于国外网站。