【问题标题】:GAE User API with OAuth2带有 OAuth2 的 GAE 用户 API
【发布时间】:2014-08-08 20:02:36
【问题描述】:

在我的 servlet 中,这就是我验证用户的方式

    UserService userservice=UserServiceFactory.getUserService();
    User user = userservice.getCurrentUser();

    if(user == null){
       response.redirect(userservice.createLoginURL("../userhome"));
    }

最近,在同一个项目中,我使用带有身份验证的 Google Cloud Endpoints 通过 JS 客户端访问数据。 JS客户端授权使用Oauth

gapi.auth.authorize(...);

尽管它们属于同一个 App Engine 项目并共享相同的凭据,但 servlet 和 JS 客户端要求用户彼此独立登录 - 就好像它们是两个不同的应用程序一样。

我想要整个应用程序的单点登录。我该怎么做呢?

【问题讨论】:

    标签: google-app-engine google-api google-cloud-endpoints


    【解决方案1】:

    这里有几点:

    1. 在两个级别都进行身份验证很重要。这是一个很好的做法,不会让您的功能在没有任何身份验证机制的情况下开放执行。

    2. 当您在客户端进行身份验证时,整个身份验证层会将这个 User 对象传递给您的 Google Cloud Endpoints 代码。因此,如果您可以在 Cloud Endpoints 方法中注入 User 对象以提取用户信息并在需要时进行自己的授权,那就太好了。

    3. 总之,如果您注意到,您实际上并没有在服务器端再次进行身份验证。您只是检查身份验证是否完成,然后继续。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-26
      • 2015-11-19
      • 2012-08-04
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      相关资源
      最近更新 更多