没有 OAuth 的 Spring 安全 JWT

Posted

技术标签:

【中文标题】没有 OAuth 的 Spring 安全 JWT【英文标题】:Spring security JWT without OAuth 【发布时间】:2019-03-18 22:08:06 【问题描述】:

最近开始学习如何使用oauth 2.0 + jwt 配置spring boot,我有一个问题:是否可以使用spring boot security + jwt 避免oauth 2.0?

【问题讨论】:

【参考方案1】:

是的,可以在不使用标准化OAuth 2.0 流的情况下使用JWT 功能。 Here 是一个很好的示例实现来帮助你。另一个例子可以在AUTH0 找到。例如,您可以使用此依赖项:

<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-jwt -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-jwt</artifactId>
    <version>1.0.9.RELEASE</version>
</dependency>

【讨论】:

我想问一下在没有 OAuth 2.0 的情况下使用 JWT 是否是一个好习惯? @PeterS。是的,完全没问题。 OAuth 是一个包含某些指导方针和规则的协议。 OAuth 的实现可以使用 JWT 来完成。基本上 OAuth 需要令牌来驱动该过程。而 JWT(JSON Web 令牌)只是一个令牌。使用 JWT 的优点是,如果用户提供令牌(由身份验证服务器签名),则用户不必每次都提供用户名和密码。只能有一个身份验证服务器,其他服务器只会识别签名(用于身份验证)和声明(用于授权)。 不幸的是 spring-security-jwt 现在已被弃用,并将开发人员推荐给 Spring Security OAuth2(Spring Security 5.2.x 的一部分)。他们的文档没有任何使用 JWT 的示例,至少没有发行者服务来分发签名密钥。

以上是关于没有 OAuth 的 Spring 安全 JWT的主要内容,如果未能解决你的问题,请参考以下文章

Oauth 和 Spring 安全性

Spring安全中的Oauth2客户端

Spring security oauth 令牌提取

Spring Security +Oauth2 +Spring boot 动态定义权限

在没有 OAuth 的情况下使用 JWT 是不是安全? [关闭]

使用 Spring boot、Eureka、Zuul、Spring Oauth 创建 OAuth 安全微服务的问题