使用 Oauth2.0 在 Spring MVC 中进行灵活身份验证的库

Library for a flexible authentication in Spring MVC with Oauth2.0

编辑:

我是第一次这样做,我不知道该为我的案例选择什么。 我在我的服务器上设置了一个 Spring MVC 项目(它只是一个单页网络应用程序),我想添加一些 "custom API calls" 以便我的用户可以代表我的应用程序访问他们的数据.

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

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

用户可以随时 edit/add link。当他单击 link 时,将调用 link 并且用户会收到 his facebook latest postsconfirmation that the gym membership has been paidconfirmation that he bought 2kg of beef。 (根据 link 的调用结果)

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

这听起来像科幻小说吗?

如果没有,那么我看到了 spring social examples but wouldn't be better if I used a library like google's OAUTH library or Apache Oltu ?

绝对的朋友。

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

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

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

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

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

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

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

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

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

如果您决定 Spring 社交,请查看此 quickstart demo(忽略 README.md 和 运行 ./gradlew bootRun)。它已经包含您在问题评论中描述的所有内容:

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

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

查看 Spring 社交 documentation,了解如何添加新的服务提供商。

总结

这三个库都是可扩展的,可以满足您的需要。每个图书馆在 Internet 上都有很多示例。 Spring 社交可能需要较少的集成到现有 Spring 应用程序中的工作。

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