`

jwt

jwt 
阅读更多
package cn.hshb.analysis.core.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTCreator;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.Date;
public class JWTUtil {
    private final static Log logger = LogFactory.getLog(JWTUtil.class);
    private static final String SECRET = "n7B1pIPG#F!#1RQ7M1HJwS53$Bn#@H56W@Zc$4x3";
    private static final String EXP = "exp";
    private static final String PAYLOAD = "payload";
/**
     * get jwt String of object
     *
     * @param object the POJO object
     * @param maxAge the milliseconds of life time
     * @return the jwt token
     */
public static <T> String sign(T object, long maxAge) {
        try {
            Algorithm algorithm = Algorithm.HMAC256(SECRET);
JWTCreator.Builder signer = JWT.create();
signer.withClaim(PAYLOAD, JSONObject.toJSONString(object));
            long expire = System.currentTimeMillis() + maxAge;
signer.withExpiresAt(new Date(expire));
            return signer.sign(algorithm);
} catch (Exception e) {
            return null;
}
    }


    /**
     * get the object of jwt if not expired
     *
     * @return POJO object
     */
public static <T> T unsign(String token, Class<T> classT) {
        try {
            Algorithm algorithm = Algorithm.HMAC256(SECRET);
JWTVerifier verifier = JWT.require(algorithm).build(); //Reusable verifier instance
DecodedJWT jwt = verifier.verify(token);
Claim claim = jwt.getClaim(PAYLOAD);
            return JSON.parseObject(claim.asString(), classT);
} catch (Exception e) {
            return null;
}
    }

    public static void main(String[] args) throws Exception {
        Page page = new Page();
String token = JWTUtil.sign(page, 3600000);
logger.info(token);
//Thread.sleep(1200);
        //token += "a";
Page currentPage = JWTUtil.unsign(token, Page.class);
logger.info(currentPage);
/*JWTCreator.Builder signer = JWT.create();
        signer.withClaim("user", "s");
        long expire = System.currentTimeMillis() + 2000 * 1000;
        signer.withExpiresAt(new Date(expire));
        String token = signer.sign(algorithm);
        logger.info(token);
        try {
            DecodedJWT jwt = JWT.decode(token);
            String issuer = jwt.getIssuer();
            Claim claim = jwt.getClaim("user");
            Date expiresAt = jwt.getExpiresAt();
            logger.info(claim.asString());
            logger.info(expiresAt.getTime());
        } catch (JWTDecodeException exception) {
            //Invalid token
        }
        algorithm = Algorithm.HMAC256("n7B1pIPG#F!#1RQ7M1HJwS53$Bn#@H56W@Zc$4x33");
        JWTVerifier verifier = JWT.require(algorithm)
                .build(); //Reusable verifier instance
        DecodedJWT jwt = verifier.verify(token);
        logger.info(jwt);*/
}
}
<!-- jwt token -->
<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>${java-jwt.version}</version>
</dependency>
package cn.hshb.analysis.api.controller;
import cn.hshb.analysis.core.common.ApiResponse;
import cn.hshb.analysis.core.utils.JWTUtil;
import cn.hshb.analysis.entity.exception.BizErrorCode;
import cn.hshb.analysis.entity.model.UserInfo;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
 * @author 作者 * @version V1.0
 * @Title: LoginController
 * @Package cn.hshb.analysis.api.controller
 * 用于身份登录认证
* @date 2018/2/22 15:14
 */
@RestController
public class LoginController {
    private static List<UserInfo> validPeoples = new ArrayList<>();
    static {
        /*
         * 此处设置可以用于登录的用户身份信息,发布正式环境时需要避免用户名密码过于简单         */
validPeoples.add(new UserInfo("admin", "admin"));
validPeoples.add(new UserInfo("admin124", "154123"));
validPeoples.add(new UserInfo("admin1223", "addsfs"));
}

    @RequestMapping({"/login"})
    public ApiResponse login(@RequestParam String username, @RequestParam String password) {
        /**
         * @param:[username, password]
         * 登录认证
* 第三方系统要调用此系统中的接口必须先调用此接口获取token
         * @return: cn.hshb.analysis.core.common.ApiResponse
         * @date:2018/2/22
*/
if (username == null || password == null) {
            return ApiResponse.fail();
}
        UserInfo user = null;
        for (UserInfo userInfo : validPeoples) {
            if (username.equals(userInfo.getUsername())) {
                user = userInfo;
                break;
}
        }
        if (user == null) {
            return ApiResponse.fail(BizErrorCode.CU_MSG_000002.getCode(), BizErrorCode.CU_MSG_000002.getMsg());
} else {
            if (!password.equals(user.getPassword())) {
                return ApiResponse.fail(BizErrorCode.CU_MSG_000007.getCode(), BizErrorCode.CU_MSG_000007.getMsg());
}
        }
        JSONObject data = new JSONObject();
data.put("token", JWTUtil.sign(user, 7200 * 1000));
data.put("expire", 7200);
        return ApiResponse.success(data);
}
}


分享到:
评论

相关推荐

    JWT Token生成及验证

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为JSON对象。这种信息可以被验证和信任,因为它是数字签名的。JWT在身份验证和授权场景中广泛应用...

    asp.net中用到的JWT身份验证 JWT.dll 下载

    ASP.NET中的JWT(JSON Web Tokens)身份验证是一种广泛采用的安全机制,用于在Web应用程序中实现无状态的身份验证。JWT是一个开放标准(RFC 7519),定义了一种紧凑、自包含的方式来安全地在各方之间传输信息作为...

    jwt在线解密网站,可用于jwt的解码

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这种信息可以被验证和信任,因为它是数字签名的。JWT被广泛用于身份验证和授权...

    jwt简单的介绍和了解

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。JWT主要应用于身份验证以及授权...

    java jwt jar包

    Java JWT(JSON Web Token)是一种安全的标准,用于在各方之间传输信息作为安全的、自包含的令牌。JWT jar包,如jjwt.jar,是Java开发人员实现JWT功能的关键依赖库。这个jar包提供了处理JWT创建、验证和解析的类和...

    php实现JWT(json web token)鉴权实例详解

    JWT是什么 JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。基于token的身份验证可以替代传统的cookie+session...

    jwt所需jar包资源

    JWT,全称JSON Web Token,是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。JWT广泛应用于身份验证、...

    .NET6平台开发WebApi-使用JWT进行用户鉴权和测试源码

    在.NET6平台上开发WebAPI应用时,为了实现安全的用户身份验证和授权,通常会采用JSON Web Tokens(JWT)机制。JWT是一种轻量级的身份验证标准,它允许服务端为客户端颁发一个令牌,该令牌包含了用户的相关信息,且在...

    JWT所需的jar包

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。JWT广泛用于认证和授权,特别是...

    基于JWT实现SSO单点登录流程图解

    基于JWT实现SSO单点登录流程图解 基于JWT实现SSO单点登录流程图解是指使用JSON Web Token(JWT)来实现单点登录(SSO)的机制。在这种机制中,用户只需要登录一次,就可以访问多个应用服务器上的资源,而不需要再次...

    JWT 实战教程_jwt_

    JWT(JSON Web Token)是一种轻量级的身份验证标准,用于在网络应用之间安全地传输信息。它通过使用数字签名来确保数据的完整性和真实性。JWT在Spring Boot中的整合是常见的应用场景,尤其是在构建RESTful API时,它...

    JWT handbook JWT手册

    JSON Web Tokens(JWT)是一种开放标准(RFC 7519),用于在网络应用环境间安全地传输信息。作为数字身份验证令牌,它被广泛用于Web应用的身份验证和信息交换。JWT技术涉及多个方面,如加密签名、加密算法、认证流程...

    网络安全 - JWT 密钥爆破 - CrackingJWTKeys.py

    JWT(JSON Web Token)是一种广泛用于身份验证和信息交换的开放标准。然而,JWT的安全性在很大程度上依赖于其签名的有效性,而签名的有效性又依赖于密钥的保密性。因此,保护JWT密钥不被破解至关重要。`...

    JWT(java web Token)

    Java Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。JWT在身份验证和授权场景中广泛...

    JWT(json web token加密算法) for C# dll 文件,亲测可用

    JSON Web Token(JWT)是一种开放的标准(RFC 7519),定义了一种紧凑的、自包含的方式来安全地在各方之间传输信息作为一个JSON对象。这个信息可以被验证和信任,因为它是数字签名的。JWT可用于身份验证、授权,以及...

    nimbus-jose-jwt-3.9-API文档-中文版.zip

    赠送jar包:nimbus-jose-jwt-3.9.jar; 赠送原API文档:nimbus-jose-jwt-3.9-javadoc.jar; 赠送源代码:nimbus-jose-jwt-3.9-sources.jar; 赠送Maven依赖信息文件:nimbus-jose-jwt-3.9.pom; 包含翻译后的API文档...

    ocelot网关+jwt身份认证

    在构建分布式系统时,"ocelot网关+jwt身份认证"是一个常见的组合,用于实现高效、安全的服务间通信。Ocelot是一个流行的开源API网关,而JWT(JSON Web Token)则是广泛采用的身份验证机制。本文将深入探讨这两个概念...

    thinkphp+jwt实现前后端分离

    本项目是基于Thinkphp6框架和JWT(Json Web Token)技术实现的前后端分离示例,旨在帮助开发者理解如何在实际项目中运用这两种技术。 **Thinkphp6** 是一个轻量级、高性能的PHP框架,具有良好的模块化设计,支持MVC...

Global site tag (gtag.js) - Google Analytics