spring-boot - 使用spring在微服务中进行身份验证
问题描述
我想重构一个整体的 Spring Boot 应用程序,基本上是一个为客户提供登录和功能的 Web 应用程序。我们已经有一个安全实现,它使用存储为 cookie 的会话 id,但我对此一无所知,而且我对这个主题完全陌生。由于独立的身份验证服务,JWT 似乎是微服务的更好解决方案。
所以我的问题是:
创建 JWT 身份验证服务和交换会话 ID 实现是否需要大量工作?(因为我是为我的学士论文做的,并且有明确的截止日期)
我可以在使用微服务时保持会话 ID 吗?
是否有其他方法可以实现身份验证?
解决方案
微服务中不建议使用典型的用户会话。您应该使用无状态架构和令牌(存储在数据库或 JWT 中的令牌)。
最好使用Spring Boot OAuth2。
您应该使用 Spring Boot 实现授权服务器和资源服务器。
授权服务器:
- 选择令牌存储方式(JWT、Jdbc、...)
- 配置客户端详细信息
- 为用户信息添加 RESTful Api 或启用 /oauth/check_token api。(由资源服务器调用)
资源服务器:
- 在 Spring Boot OAuth2 属性中设置 user-info-uri 或 token-info-uri。
- 扩展
ResourceServerConfigurerAdapter
用于保护 url 映射的类。
推荐阅读
- google-cloud-datastore - 类似于 SQL union 或 In-clause 的 Google Datastore 客户端查询
- android - android动画中的XScale vs XDelta
- django - 如何解决 ImportError:没有名为 urls 的模块
- c# - PdfWriter.getverticalposition() 是否在 Itext 7 中停止?
- python - 无法连接到雪花
- docker - 使用 Istio sidecar 从多容器 pod 调用服务
- php - 注册和登录php的问题,你会检查我的代码吗?如果有错误
- php - 如何在文件上传期间禁用/阻止设备询问“拍照”选项
- ios - 在 tableview 中,如果选择第 1 行第 1 行,那么为什么还选择了第二部分第 1 行?
- bigcommerce - bigcommerce 单页结帐在结帐 sdk 中不起作用