美文网首页
Java基于JWT实现token认证

Java基于JWT实现token认证

作者: 永远爱你ol | 来源:发表于2022-08-25 17:53 被阅读0次

网上关于JWT的文章很多,我想分享一个相对简洁的版本。JWT(JSON Web Tokens),生成的token是由三部分组成的Header,Payload,Signature。其实整个的生成过程就是给这三部分添加一些信息。具体可以看官网的一些介绍:https://jwt.io/introduction

生成token的示例:

   //设置token过期时间为3分钟
    private final static long EXPIRED_TIME = 3 * 60 * 1000;

   //设置token的密钥
    private final static String SECRET = "token123";
    
    public static String token(User user) {
        Date signDate = new Date();
        Date date = new Date(System.currentTimeMillis() + EXPIRED_TIME);//过期时间
        Algorithm algorithm = Algorithm.HMAC256(SECRET);//进行加密算法

        //token的Header信息
        Map<String, Object> map = new HashMap<>();
        map.put("alg", "HS256");
        map.put("typ", "JWT");

        String token=JWT.create()
                      //(token的Header信息)
                        .withHeader(map)
                      //设置当前签发时间(token的Payload信息)
                        .withIssuedAt(signDate)
                      //设置token过期时间(token的Payload信息)
                        .withExpiresAt(date)
                     //自定义存放用户id在tokne中(token的自定义Payload信息)
                        .withClaim("userId", user.getUserId())
                     //自定义存放用户名在token中(token的自定义Payload信息)
                        .withClaim("username", user.getName())
                     //(token的Signature信息)
                        .sign(algorithm);
           return token;
    }

接下来就是验证token:

   public static boolean verifyToken(String token) {
        Algorithm algorithm = Algorithm.HMAC256(SECRET);
        try {
        //这是密钥的校验,同时也可以对其他的一些信息进行校验(比如自定义的用户ID)
            JWTVerifier jwtVerifier = JWT.require(algorithm).build();
       //校验并获取的数据结果
            DecodedJWT decodedJWT = jwtVerifier.verify(token);
       //从数据结果中获取token中的信息
            String result1=decodedJWT.getClaim("username").asString();
       //直接通过token获取数据信息
            String result2=JWT.decode(token).getClaim("userId").asString();
            return true;
        }catch (JWTVerificationException e) {
            e.printStackTrace();
            return false;
        }
    }

最后附上所需要的pom依赖:

        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.10.3</version>
        </dependency>

相关文章

  • Java基于JWT实现token认证

    网上关于JWT的文章很多,我想分享一个相对简洁的版本。JWT(JSON Web Tokens),生成的token是...

  • JWT认证原理分析

    基于session的认证 JWT认证规则 JWT(Json Web Token) JWT原理 签发算法 校验算法 ...

  • 【javaweb】JWT的常用方法

    github.java-jwt基于JWT的token身份认证方案 1、maven库 2、设置算法 3、创建并签名t...

  • .NET Core5.0 JWT鉴权SSO单点登录

    JWT JWT全称“JSON Web Token”,是基于JSON的用户身份认证的令牌。可跨域身份认证,所以JWT...

  • JSON Web Token

    JSON Web Token (JWT)是一种基于 token 的认证方案。 JSON Web Token 的结构...

  • Spring Boot实战之Filter实现使用JWT进行接口认

    Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(json web token) 用户发...

  • JWT原理

    1. JWT和传统token 基于传统的token认证用户登录,服务端给返回token,并将token保存在服务端...

  • jwt鉴权

    什么是JWT(Json web token): JWT是目前最流行的跨域认证解决方案。基于json的开放标准(R...

  • 基于JWT的Token认证机制实现

    1 常见的认证机制 1.1 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求A...

  • JWT实现token认证

    演变 1.1 有状态服务 在原来的单体系统中,有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份...

网友评论

      本文标题:Java基于JWT实现token认证

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