2013-07-07 58 views
1

我已經創建了一個簡單的Google App Engine Web應用程序與Spring MVC和JSP。這個應用程序 被配置爲只有管理員用戶允許訪問。谷歌應用引擎寧靜的web服務認證

<security-constraint> 
    <web-resource-collection> 
     <url-pattern>/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>admin</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 

它還包含在Web控制器中定義的幾種寧靜的Web服務方法。這些方法的客戶端可以是Spring Rest Template或基於Web的客戶端的Java應用程序。

由於寧靜的Web服務是無狀態的,我如何使從客戶端發送的每個http請求都通過身份驗證發送到GAE。

我現在面臨的問題是每個請求返回的http響應包含谷歌登錄頁面內容。

回答

3

Google提供了一個框架來完成Google Cloud Endpoints。特別是你應該檢查關於Using auth with endpoints的部分。

如果你有GCEs不適合的要求(並且我看到你在使用Spring),那麼Spring有一個很好的OAuth項目,可以用來實現你的目標。 Spring security OAuth

不過請注意,實施的OAuth可以是一個相對密集的任務,並根據您的要求和觀衆的您可能能夠解決更容易,可能不太安全或標準的解決方案。亞馬遜的API也可以讓你知道如何保護你自己的API。

作爲「其他」較少推薦的解決方案的示例,您可能只需要爲每個請求設置一個標頭值,並檢查它是否與服務器上接受的值列表相匹配。或者,您可以讓API成爲有狀態的,在第一次通話中使用您的登錄名,然後將會話傳遞給您的其他通話。

您的最終解決方案很可能取決於您的具體要求。