oauth 2.0、JWT、Spring 安全、微服务

Posted

技术标签:

【中文标题】oauth 2.0、JWT、Spring 安全、微服务【英文标题】:oauth 2.0, JWT, Spring security, Micro services 【发布时间】:2020-08-17 00:06:35 【问题描述】:

我需要对 Spring Security 的所有流程有所了解。

    我已经在同一个 Spring Boot 应用程序中实现了 oauth2 授权服务器和资源服务器。我可以在其中生成 JWT 令牌。此应用程序中的示例 Rest api 是安全的,并且只能通过令牌访问。

    我还有另一个 Spring Boot 应用程序需要保护?我该怎么做。我还需要阅读此服务中的令牌以了解用户的角色。

请说明如何实施第二步。

【问题讨论】:

我的建议是将授权服务作为公共服务,以便所有其他需要 JWT 的微服务都可以使用它。您的客户端可以直接调用此授权服务器来获取 JWT,您的服务 1 和服务 2 可以从授权服务器验证 jwt。 【参考方案1】:

您可以创建一个模块来实现您的 spring 安全配置。

在这个模块中是使用@EnableWebSecurity 注释注释的类,您可以在其中定义开放路由。我猜你已经为你的示例 rest API 提供了一个这样的类,在步骤 1 中提到了。

现在,必须保护的每一微秒都通过导入这个模块来使用它,例如作为 maven 依赖项。这样,它的 api 就会通过 spring security 自动得到保护。

您的身份验证服务提供一个 jwk 端点,每个微服务都可以通过公钥验证令牌。

【讨论】:

以上是关于oauth 2.0、JWT、Spring 安全、微服务的主要内容,如果未能解决你的问题,请参考以下文章

JWT 与 OAuth 2.0 有何不同?

OAuth 2.0 和 OpenID Connect 中的 JWT 安全性

REST API 的安全认证,从 OAuth 2.0 到 JWT 令牌

没有 OAuth 的 Spring 安全 JWT

Spring Security Oauth2架构学习

用Spring Cloud OAuth2和JWT保护微服务