2016-09-22 112 views
1

我試圖自動登錄到使用Java和窗體的各種網站。自動登錄到網站 - Java

我按照這裏找到https://www.mkyong.com/java/how-to-automate-login-a-website-java-example/教程和我能夠沒有任何問題使用Java 了HTTPClient來GET,POST,然後重新獲得(以驗證用戶已登錄)。我正在查看來自這些請求的HTML輸出,並顯示用戶的內容,就像經過身份驗證一樣。

問題是,我完成驗證並嘗試將用戶瀏覽器重定向到已驗證的URL後,系統會再次提示您輸入所有憑據 - 但我仍然可以在瀏覽器中看到第一個請求中的Cookie;他們似乎被忽略了。我正在嘗試在Liferay PortletActionResponse中執行此操作。

回答

2

首先你需要了解認證過程中通常會發生什麼的: 服務器設置在客戶端的會話cookie。當您登錄時,您會驗證該會話 - 由Cookie標識。

如果你與你的服務器登錄HTTPClient庫,會話cookie存儲在您的服務器。當您將客戶端瀏覽器重定向到外部網站時,瀏覽器沒有該cookie - 並且正在獲得不同的(未經授權的)會話。

問題是:如何將cookie從服務器發送到客戶端?

答案是:你不能。如果您可以爲其他網站設置Cookie,則會造成一系列安全問題。

然而一些網站提供了服務器到服務器的客戶端驗證

的理念是:你的服務器驗證使用證書和國外服務器生成一個一次性的URL(或某些參數,你可以建立從URL)和你客戶端重定向到URL。由於外部服務器可以將該URL與您以前的身份驗證相關聯,因此他會對客戶端進行身份驗證。但具體實施取決於國外網站。

+0

非常感謝你。我想我正在尋找的是服務器到客戶端身份驗證的服務器。我也沒有意識到出現的安全問題,但考慮後我可以看到潛在的問題。感謝您的全力協助。 –