Spring Boot OAuth 2.0 和 OAuth 1.0a 客户端在同一个应用程序中

Posted

技术标签:

【中文标题】Spring Boot OAuth 2.0 和 OAuth 1.0a 客户端在同一个应用程序中【英文标题】:Spring Boot OAuth 2.0 and OAuth 1.0a clients in same app 【发布时间】:2018-09-12 23:09:39 【问题描述】:

有人有在同一个 Spring Boot 应用程序中使用 OAuth2.0 和 OAuth 1.0a 客户端身份验证的经验吗?让 2 在同一系统中工作时遇到一些麻烦。我们的用例 - 用户可以将多个第 3 方帐户连接到我们的网络应用程序。这种连接是通过 OAuth 进行的,对于使用 OAuth 2.0 的 3rd 方服务,我们没有任何问题。现在我们想将 Twitter 添加为受支持的连接,使用他们的 OAuth 1.0a 路径,我们在使其工作时遇到了很多麻烦。只能使用 spring-social 找到这方面的示例,这可能不适合我们的用例,因为它与我们的其他集成路径不兼容。

任何经验或意见将不胜感激。

有效值。

【问题讨论】:

【参考方案1】:

我的建议, 使用抄写员。他们完成了一项了不起的工作,让 OAutdone 覆盖了大量的供应商。转到他们的示例源代码,插入您的 appId 和密码,您几乎可以看到几乎所有提供程序都在工作

https://github.com/scribejava

【讨论】:

【参考方案2】:

请记住,OAuth 2.0 确实不向后兼容 OAuth 1.0,因此您不会找到同时处理这两个版本的解决方案。

为了帮助你更好地理解两者的区别,我建议阅读How is OAuth 2 different from OAuth 1?

您需要分别处理这两个版本,这可能会导致一些相当混乱的代码。

无论如何,很遗憾 Twitter 没有迁移到 OAuth 2.0 以进行基于用户的身份验证,这将使您的一切变得不那么复杂。

首先,您需要 spring-security-oauthspring-security-oauth2 依赖项。我建议看这里:https://github.com/spring-projects/spring-security-oauth/tree/master/samples

两个版本都有一个示例。

我不确定您是如何配置 OAuth2 的,但是由于上面提到的两个依赖项没有使用相同的属性名称,并且 OAuth2 几乎可以完全通过属性文件进行配置,我怀疑您是否需要担心 OAuth2 的实现。

我有一个关于 OAuth2 实现的示例,这里几乎不需要配置 https://github.com/TwinProduction/spring-security-oauth2-client-example ,也许你可以从它开始,添加 OAuth 1.0 依赖项并从那里开始构建。

祝你好运!

【讨论】:

以上是关于Spring Boot OAuth 2.0 和 OAuth 1.0a 客户端在同一个应用程序中的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot OAuth 2.0 和 OAuth 1.0a 客户端在同一个应用程序中

Spring Boot OAuth 2.0 客户端

OAuth 2.0 身份验证显示 500 Internal Server Error, Spring Boot 微服务

Spring security oAuth 2.0(无效令牌不包含资源ID(oauth2-resource))

Spring-OAUTH2.0:调用 /oauth/token 时没有可用资源错误

Spring Security 5 OAuth 2.0 ResourceServer 如何与 AuthorizationServer 通信?