0

编辑:

我是第一次这样做,我不知道为我的情况选择什么。我在我的服务器上设置了一个 Spring MVC 项目(它只是一个单页 Web 应用程序),并且想添加一些“自定义 API 调用”,以便我的用户可以代表我的应用程序访问他们的数据。

示例(想象一个空白页面,用户在其中添加了他的首选链接listBox):

facebook.com/get_my_latest_posts gym.com/pay_my_membership butcher.com/buy_2kg_beef

用户可以随时编辑/添加链接。当他单击一个链接时,该链接被调用并且用户接收到his facebook latest postsconfirmation that the gym membership has been paidconfirmation that he bought 2kg of beef。(基于调用链接的结果)

我不想让用户总是登录页面,所以我会尽可能使用访问令牌。

这听起来像科幻小说吗?

如果没有,那么我看到了春季社交示例,但如果我使用像谷歌的OAUTH库或Apache Oltu这样的库会不会更好?

4

2 回答 2

3

Spring Social、Google 的 Java 的 OAuth 客户端库和 Apache Oltu 都符合 oauth 规范,都是不错的候选者。每个库都带有一些预定义的提供程序。Spring Social 和 Apache Oltu 包含一些流行的平台,如 Facebook、Twitter、Github 或 Google。用于 Java 的Google OAuth 客户端库与用于 Java的 Google API 客户端库一起提供,以便连接到 Google 服务。在 Spring Social 和 Google OAuth 客户端库中,这些提供者是可选的。

所有三个库都以通用方式编写,因此可以连接到任何 oauth 提供程序。我认为与 Spring Security 或 MVC 等其他 Spring 模块相比,Spring Social 可能需要比 Apache Oltu 或 Google OAuth 客户端库更少的集成工作。最后,这一切都归结为您对图书馆的个人偏好。

如果您决定使用 Spring Social,请查看此快速入门演示(忽略README.md并运行./gradlew bootRun)。它已经包含您在问题评论中描述的所有内容:

  • 通过第三方认证用户
  • 在一个应用程序中集成多个平台并按需获取用户数据(想象一下下拉菜单项,例如Twitter profileorTimeline代表facebook.com/get_my_latest_postsor gym.com/pay_my_membership

正如您在演示中看到的那样,您无法阻止您的用户必须一次向每个第三方进行身份验证。这通常发生在没有访问或刷新令牌或令牌已过期时。

查看 Spring Social文档,了解如何添加新的服务提供者。

概括

这三个库都是可扩展的,可以满足您的需求。对于每个图书馆,互联网上都有很多示例。Spring Social 可能需要较少的集成工作到现有的 Spring 应用程序中。

您的应用程序只是用于不同服务的许多 oauth 客户端的主机(所以这里没有科幻小说)。您需要考虑在某处(数据库?)以每个用户为基础存储访问和刷新令牌。您需要在应用程序中为要集成的每项服务提供授权后回调 url。

于 2017-04-16T17:25:11.080 回答
1

果断的朋友。

您应该尝试实施令牌服务来访问您的 Web 应用程序。

这是最好的方法,被认为是一种好的做法。

请尝试使用您的 google 帐户配置您自己的 oAuth 服务器。

下面的链接很好地解释了我们如何做到这一点。

https://oneminutedistraction.wordpress.com/2014/04/29/using-oauth-for-your-javaee-login/

另一个例子。下面的一个也是初学者的一个很好的例子。

https://stormpath.com/blog/token-auth-for-java

于 2017-04-16T07:31:42.297 回答