java - 使用 oauth2 + JWT 进行 Spring Boot 社交登录

标签 java spring spring-boot jwt spring-security-oauth2

我正在开发 REST 整体服务。有了它,我需要能够通过社交网络注册用户,将它们存储在我的数据库内部,并通过某些权限对它们进行授权。之后我需要服务使用 JWT 来确保安全,该服务需要在无状态模式下运行。

过去一周我读了很多文章,但他们要么只解释了其中的一小部分,要么没有解释他们正在使用什么以及为什么。

我正在使用 spring security 5,它可以实现 session 登录与社交网络的“轻松”集成,我设法通过使用

.oauth2Login()

在我的 WebSecurityConfigurerAdapter 的配置方法中,但它利用 session 创建。如果我告诉它是无状态的,它就不会起作用。

此外,我设法在我的服务发出 token 的地方设置 JWT 安全性,但我不知道如何连接这两个。我见过这个

oauth2ResourceServcer()

方法有 jwt 方法,但我无法掌握应该如何实现它。

有人有任何建议或我可以遵循的例子吗?任何帮助将非常感激。

亲切的问候

最佳答案

社交登录是一一实现的,没有任何库可以提供包含所有社交平台的无缝开箱即用解决方案。

启用 Spring Security 只会为您提供额外的保护层和自行管理用户的能力,如果您愿意,无需社交登录。

对于我的带有社交登录的项目,我一直在使用 keycloak 。 它将为您处理所有安全问题,并具有 nice integration with spring boot 。 此外,它还提供登录表单(无需社交登录),因此您将为用户提供充分的灵 active 。

对我来说,主要缺点是 UI 的定制非常痛苦,而且我在 nginx https 反向代理后面运行它时遇到了麻烦,但它是可行的,并且有大量的资源。

关于java - 使用 oauth2 + JWT 进行 Spring Boot 社交登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61748528/

相关文章:

java - 对带有字符串前缀的数组进行二分搜索

java - Hibernate——使用where子句进行选择——从域对象中获取数据

java - org.hibernate.hql.internal.ast.QuerySyntaxException : unexpected token: FETCH

spring-boot - 如何在 spring-boot 应用程序中为 swagger-ui 指定我的 restful API

java - 如何查找微调器显示的下拉 View

java - 对以 map 作为输入的列表进行排序

java - 内存数据库H2中的Spring Boot不会在初始化时从文件加载数据

spring - 如何确保解析期间的异常导致与验证失败返回的(自定义)响应相同类型的响应?

java - 将 CascadeType.MERGE 与 Spring Data Repositories 一起使用的正确方法是什么?

spring-boot - 将自定义 header 添加到 REST PUT 请求