美文网首页SpringSecurityOAuth2
SpringSecurity升级Token序列化异常踩坑

SpringSecurity升级Token序列化异常踩坑

作者: KingdomCoder | 来源:发表于2019-01-08 21:21 被阅读0次

    踩坑场景:

    公司最近做技术架构的改造,并将原SpringBoot1.5.6版本升级为2.0.6,并逐渐将内部服务调用dubbo协议逐渐转换为SpringCloud的Feign调用,前期主要对SpringBoot版本进行升级。
    通过

    <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>
        </dependencies>
     </dependencyManagement>
    

    自动维护SpringBoot引用版本依赖加载。我们之前采用数据库的方式记录token的方式,原SpringSecurityOauth引用版本同样为2.0.14.RELEASE但是原低版本生成的token在反序列化时出现兼容性问题。

    java.lang.IllegalArgumentException:
     java.io.InvalidClassException: org.springframework.security.core.authority.SimpleGrantedAuthority; 
    local class incompatible: stream classdesc serialVersionUID = 420, local class serialVersionUID = 500
    

    可以发现SimpleGrantedAuthorityserialVersionUID为401现在为500出现序列化兼容性问题。

    排查过程:

    通过检查spring-security-oauth2jar包依赖,当在SpringBoot为1.5.6版本时依赖的spring-security-corespring-security-config为4.2.3版本。当升级为2.0.6版本依赖版本为5.0.9版本。
    5.0.9版本SimpleGrantedAuthority源码的serialVersionUID=500,4.2.3版本下serialVersionUID=420导致反序列化对象时为null

    <dependency>
          <groupId>org.springframework.security.oauth</groupId>
          <artifactId>spring-security-oauth2</artifactId>
          <version>2.0.14.RELEASE</version>
          <exclusions>
            <exclusion>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-api</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
    

    解决方案:

    为了兼容低版本的token问题,所以针对性的对security的版本降级。
    排除spring-security-oauth2自动依赖,自定义加载依赖4.2.3.RELEASE

    <dependency>
          <groupId>org.springframework.security.oauth</groupId>
          <artifactId>spring-security-oauth2</artifactId>
          <version>2.0.14.RELEASE</version>
          <exclusions>
            <exclusion>
              <groupId>org.slf4j</groupId>
              <artifactId>slf4j-api</artifactId>
            </exclusion>
            <exclusion>
              <groupId>org.springframework.security</groupId>
              <artifactId>spring-security-core</artifactId>
            </exclusion>
            <exclusion>
              <groupId>org.springframework.security</groupId>
              <artifactId>spring-security-config</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>org.springframework.security</groupId>
          <artifactId>spring-security-core</artifactId>
          <version>4.2.3.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.springframework.security</groupId>
          <artifactId>spring-security-config</artifactId>
          <version>4.2.3.RELEASE</version>
        </dependency>
    
    微信公众号欢迎关注.jpg

    相关文章

      网友评论

        本文标题:SpringSecurity升级Token序列化异常踩坑

        本文链接:https://www.haomeiwen.com/subject/onxirqtx.html