spring-boot - Spring Boot - 如何创建独立的身份验证 MICROSERVICE?
问题描述
我编写了我的第一个后端 Spring Boot 应用程序。
我还创建了一个单独的前端应用程序。
我想创建一个独立的基本身份验证微服务。认证技术目前不相关。它可以使用 JWT、OUTH2、OKTA 等等。
我强调 MICROSERVICE,而不是向应用程序代码添加类。
这是因为我在网上和几本书中可以找到的所有内容都是将此身份验证部分作为嵌入代码添加到整个 Spring Boot 应用程序中。
我想构建一个单独的身份验证微服务,例如我的其他微服务(目前我只有一个 SP,但还会有更多),将能够使用它来对用户进行身份验证。
我希望我解释得对:)
你能给我指点一下正确的实现,或者一些可以帮助我完成这项任务的更新教程吗?
更新:
我找到了一个非常棒且最新的教程:
https://dzone.com/articles/step-by-step-a-simple-spring-boot-microservices-ba
享受!
谢谢!
解决方案
由于您需要身份验证服务,您可以验证身份验证微服务生成的令牌。
你可以:
- 从您的身份验证微服务返回一个令牌;
- 在主微服务中创建令牌验证服务
下面的链接展示了如何通过 JWT 实现认证应用程序,就像认证网关一样工作: https ://medium.com/@mool.smreeti/microservices-with-spring-boot-authentication-with-jwt-和-spring-security-6e10155d9db0
或者,您可以添加第 3 方解决方案以链接到 Spring Security。对于这个选项,application.yml 中类似下面的代码应该可以工作:
spring:
security:
oauth2:
client:
registration:
sts:
provider: sts
client-id: ${STS_CLIENT_ID}
client-secret: ${STS_SECRET_ID}
client-authentication-method: post
authorization-grant-type: client_credentials
provider:
sts:
token-uri: ${STS_URL}
在我看来,这两种方式都是有效的。这取决于您的上下文和范围。
推荐阅读
- python - Redis 返回“无”作为结果
- firebase - componentDidUpdate() 在状态改变时更新,即使不在状态
- php - Laravel 7 中不存在命令“event:cache”?
- flutter - 我无法在 Liquidswipe 中实现 Connectivityresult
- javascript - 如何根据用户输入重新组织而不复制 MongoDB 文档?
- r - R中小于1000的斐波那契数列
- flask - python flask向所有用户广播渲染模板
- javascript - 从另一个输入字段的下拉列表中自动获取值
- javascript - 为什么这个 React 手风琴会在元素展开时向上滚动页面?
- c++ - Qt 调试显示行号