java - 如何验证微服务的请求源

标签 java reactjs spring-boot react-native microservices

我有一个基于Spring的微服务,它向基于react.js的Web客户端应用程序和使用react-native构建的移动应用程序提供数据。 应用程序托管在云上。

我想允许来自这 2 个客户端应用程序的 REST 调用并阻止任何其他请求源以保护我的应用程序。 我正在考虑使用在每个请求中传递的 APP ID,但这并不能保护服务,因为任何拥有 APP ID 的人都可以入侵我的 REST 服务。 有人可以建议解决此问题的最佳方法吗?

最佳答案

有多种方法可以保护端点,但最常用的是基于 JWT token 的授权

  • 创建端点,例如/auth/api。
  • 在应用登录过程中从身份验证端点(例如 auth/signIn)获取基于 JWT 的 token 。
  • 从身份验证结果中提取 token 。
  • 将 HTTP header 授权值设置为 Bearer jwt_token。
  • 然后发送请求以访问 protected 资源。
  • 如果请求的资源受到保护,Spring Security 将使用我们自定义的 Filter 来验证 JWT token ,并构建一个 Authentication 对象并将其设置在 Spring Security 特定的 SecurityContextHolder 中以完成身份验证进度。
  • 如果 JWT token 有效,它将向客户端返回请求的资源。

请阅读 Spring JWT 中间件教程

另一种方式是Oauth2,您需要创建 Oauth2 服务器,该服务器充当授权服务器,其中客户端与 clientID 和客户端 Secret 相关联,并且您使用访问 token 批准访问。

关于java - 如何验证微服务的请求源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56698989/

相关文章:

java - 为什么我的电子邮件方法总是发送电子邮件并将电子邮件本身作为附件?

java - 临时扩展 Java 中的现有对象 - 这是一个好主意吗?

java - 如何更改OrmLite的编码?

javascript - ReactJs - 取消选中 postalJs 订阅中的复选框

javascript - 如何在 Deck.gl 中动态切换多个图层?

java - thymeleaf 错误: org. springframework.expression.spel.SpelEvaluationException

java - 如何启用执行器中的所有端点(Spring Boot 2.0.0 RC1)

java - Google Play 64 位要求

java - 使用java从pdf文件中提取文本时遇到的问题

javascript - 在 React 中延迟数组映射迭代