2015-03-31 72 views
3

我使用雲端點並執行客戶端oauth來訪問我的後端。這工作正常,除了它意味着我只能檢查在整個頁面和附加的腳本已經加載並且oauth請求已經完成之後,點擊我的應用URL的人是否是用戶。如果未登錄,服務器端重定向

我想啓用服務器端身份驗證,以便我可以對我的着陸頁和我的應用使用相同的URL,並將其重定向到應用(如果她是用戶或登錄頁面,如果她不是) 「T。

問題是User Tutorial使用UserService進行身份驗證,而Cloud Endpoints使用OAuth Service。我無法弄清楚如何在我的redirect filter中使用OAuth,因爲上面鏈接到的OAuth部分的所有鏈接都適用於OAuth 1和are deprecated

我該如何檢查我的重定向過濾器,訪問的人是否是用戶,並同時獲取我可用於隨後調用我的端點的令牌(如果她是用戶的話)?

我正在使用Google Api JS client撥打雲端點,因此解決方案將與該端點進行最佳集成,使用gapi.auth.setToken(token)與檢索到的令牌並繞過整個gapi.auth.authorize(params, callback)舞蹈。

+0

您是否在使用用戶API或OAuth? – jirungaray 2015-04-05 15:23:51

回答

4

您可以登錄流程,您將通過提供新的流量獲取的OAuth令牌,然後驗證訪問令牌授予受保護資源的授權提供定製servlet implementaion。

Google提供了很好的參考文檔here,您可以使用this示例代碼回購 作爲參考。

+0

決定現在繞過這個問題。這看起來很有希望,所以獎勵賞金。如果我在執行中遇到問題,可以在將來再次發表評論。感謝您的資源。 – willlma 2015-04-10 14:57:14

0

您可以使用端點的用戶API,如果不適合您的需要,則無需使用OAuth。您只需要將com.google.appengine.api.users.User類型的參數添加到端點。如上所述here

如:

@ApiMethod(name = "scores.insert") 
    public Score insert(Score score, User user) throws OAuthRequestException, IOException { 
     //Check if user is null 
     //Do your thing 

    } 
+0

這就是我讓他們成立的原因。我的印象是用戶API使用OAuth。我在客戶端需要一個令牌,以便用'Authorization'頭集來調用我的端點。但是我使用客戶端oauth流獲取該令牌。相反,我希望在服務器端獲取該令牌,以便在用戶未登錄時返回登錄屏幕,如果是,則爲令牌。 – willlma 2015-04-06 19:26:40

+0

對於類似的情況,我已經實現了Oauth 2.0,如果用戶通過UI訪問我的Web應用程序,那麼將使用基本身份驗證。用戶可以通過有效的Oauth令牌訪問休息API。 – ManojP 2015-04-10 06:08:43

+0

@willlma我實際上甚至沒有使用userAPI(它不使用OAith btw)。我們構建了一個非常基本的模式,我們在客戶端發送令牌並使用request.getHeader(「授權」)對其進行檢索。 – jirungaray 2015-04-12 15:48:07