在 Spring Boot 中使用 JWT 进行简单的身份验证

Posted

技术标签:

【中文标题】在 Spring Boot 中使用 JWT 进行简单的身份验证【英文标题】:Simply authentication with JWT in Spring Boot 【发布时间】:2018-07-04 23:50:24 【问题描述】:

我是安全方面的新手,所以这项任务几乎不需要帮助。我开发了小型应用程序,我只需要通过凭据对用户进行身份验证,并返回没有任何角色或范围的 jwt 令牌(用户将使用所有其余服务)。

我只需要区分认证用户和匿名用户,并验证令牌。

我查看了很多教程,但它们对于我的目的来说太复杂了。

有我的问题,我将不胜感激任何帮助或一些指导,我应该做什么以及如何做:

    我发现其中一个教程使用了 OAuth2。真的很需要 为我的目的实施 OAuth2? 我应该使用哪个依赖项? jjwt 还是 spring security jwt? 确实需要授权服务器和资源服务器,或者存在 更简单的方法?

谢谢。

【问题讨论】:

【参考方案1】:

回答这个问题已经很晚了,但如果有人仍在寻找答案,仍然会回答这个问题。假设您已经实现了对凭据的身份验证,但正在寻求 JWT 的帮助,请查看我的回答 JWT Token is always received as expired while parsing

希望这会有所帮助。

【讨论】:

【参考方案2】:

以下是对您问题的简短回答,希望能帮助您进一步研究:

    您不需要实现自己的 OAuth2 服务器。您可以使用现有的符合 OAuth2 的应用程序,例如 Keycloak 或 Mitreid。我们发现 Keycloak 在未来更加丰富且易于使用。

    如果您只是接收和验证 JWT 令牌,那么 Spring 将为您完成。但要创建 JWT 令牌,您需要使用 jjwtnimbus-jose-jwt 等第三方库。

    再次,您可以选择创建自己的 Spring 应用程序,该应用程序将进行身份验证和创建 JWT 令牌,但要完全符合 OAuth2 还需要更多时间。我的建议是只使用现有的 OAuth2 应用程序,例如 Keycloak。 资源服务器是您需要创建的,并且是由 JWT 令牌保护和访问的实际应用程序。

【讨论】:

以上是关于在 Spring Boot 中使用 JWT 进行简单的身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot OAuth2:从 cookie 中提取 JWT 进行身份验证

Spring boot中使用jwt

Spring boot中使用jwt

spring boot集成JWT实现token验证

Spring Boot JWT 身份验证

如何模拟 JWT 令牌以将其与 Mockito 和 Spring Boot 一起使用