2

我使用 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 响应都包含谷歌登录页面内容。

4

1 回答 1

4

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

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

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

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

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

于 2013-07-08T19:44:19.230 回答