【问题标题】:google app engine restful web service authentication谷歌应用引擎restful web服务认证
【发布时间】:2013-07-05 02:00:33
【问题描述】:

我使用 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 模板的 java 应用程序或基于 Web 的客户端。

由于RESTful Web服务是无状态的,我如何让客户端发送的每个http请求都经过身份验证到GAE。

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

【问题讨论】:

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


    【解决方案1】:

    Google 通过其Google Cloud Endpoints 提供了一个框架来执行此操作。特别是你应该检查关于Using auth with endpoints的部分。

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

    但是请注意,实施 OAuth 可能是一项相对密集的任务,并且根据您的要求和受众,您可能能够满足于更简单且可能不太安全或标准的解决方案。 Amazon 的 API 还可以为您提供如何保护自己的 API 的想法。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 2012-03-22
      • 2011-01-17
      • 2011-01-30
      • 2013-02-07
      • 2012-02-12
      • 2012-11-06
      相关资源
      最近更新 更多