谷歌应用引擎宁静的Web服务身份验证

时间:2013-07-07 18:01:41

标签: google-app-engine rest spring-mvc

我使用Spring MVC和JSP创建了一个简单的Google App Engine 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控制器中定义的几种restful Web服务方法。这些方法的客户端可以是带有Spring Rest Template或基于Web的客户端的Java应用程序。

由于restful web服务是无状态的,我如何将从客户端发送的每个http请求都认证到GAE。

我现在面临的问题是每个请求的返回http响应包含google登录页面内容。

1 个答案:

答案 0 :(得分:4)

Google提供了一个框架来实现Google Cloud Endpoints。特别要检查有关Using auth with endpoints的部分。

如果你有GCE不适合的要求(我看到你正在使用Spring),那么Spring有一个很好的OAuth项目,你可以用来实现你的目标。 Spring security OAuth

但请注意,实施OAuth可能是一项相对密集的任务,根据您的要求和受众群体,您可以选择更简单,可能不太安全或标准的解决方案。亚马逊的API也可以为您提供如何保护自己的API的想法。

作为“其他”不太推荐的解决方案的示例,您可以只为每个请求设置标头值,并检查它是否与服务器上接受的值列表相匹配。或者,您可以使您的API有状态,在第一次通话中使用您的登录,然后将会话传递给您的其余通话。

您的最终解决方案很可能取决于您的具体要求。