2017-08-06 66 views
0

我正在嘗試將OAuth 2身份驗證實施到Box(Cloud Storage Service)的Java代碼中。 OAuth 2實現代碼取自OAuth 2 essentials我如何從瀏覽器中獲取url到我的java代碼?

如你所知,oAuth有兩個階段。第一階段要求客戶端發送http GET或POST請求到this link,同時發送一些客戶端憑證。於是我打開上述網址在瀏覽器裏面,從我的Java代碼中使用這段代碼(Main.java):

if(Desktop.isDesktopSupported()) 
    { 
     Desktop.getDesktop().browse(new URI(authorizationUrl.toString())); 
    } 
  1. 在瀏覽器中,我可以看到的網頁,客戶端必須提供電子郵件和密碼授予訪問我的應用程序。一切順利,在授予訪問權限後,瀏覽器被重定向到由我提供的redirect_uri,這是我本地主機中的一個java servlet類(我不知道servlet是否真的需要這個過程,但我正在使用它)。

  2. 這個redirect_uri現在從我提供的那個擴展,因爲它有服務器提供的代碼和狀態參數。 (注:現場的這部分是發生在瀏覽器中,而我的Main.java其調用瀏覽器仍在運行並等待exteded REDIRECT_URI我要養活它)那麼,如何養活

將來自瀏覽器(或servlet類)的redirect_uri擴展到在oauth進程的第一段調用瀏覽器的Main.java類。

回答

0

而不是做這個的是主要應用

if(Desktop.isDesktopSupported()) { 
     Desktop.getDesktop().browse(new URI(authorizationUrl.toString())); 
} 

你爲什麼不叫一個servlet做重定向到https://account.box.com/api/oauth2/authorize與所需的參數,然後傳回的代碼和狀態。

將處理OAuth的邏輯寫入servlet,並使用URLConnection從主應用程序調用servlet。 OAuth完成後,將代碼和狀態從servlet返回到主應用程序。

+0

不錯!我會試試看..謝謝! – golem

+0

發生的事情是:1. Main.java調用OAuthHandler servlet(它使Http請求使用參數)和服務器響應的HTML表單,客戶端必須輸入電子郵件和密碼並授予對應用程序的訪問權限。所以這個html表單需要顯示瀏覽器,所以我必須使用方法Desktop.getDesktop()。browse()對嗎?或者還有其他方法嗎? – golem

相關問題