`

java中生成和验证jwt

    博客分类:
  • jwt
阅读更多

    在这篇文章中主要记录一下在Java中如何使用 java 代码生成jwt token,主要是使用jjwt来生成和验证jwt,关于什么是JWT,以及JWT可以干什么不做详解。

    jwt的格式: base64(header).base64(payload).加密算法(base64(header)+“.”+base64(payload),"私钥")

在Java中使用JWT

 

一、引入jjwt的jar包

 

<dependency>
      <groupId>io.jsonwebtoken</groupId>
      <artifactId>jjwt</artifactId>
      <version>0.9.0</version>
</dependency>

 

 

 二、生成JWT token

 

// 私钥
	private static final String SECRET_KEY = "this is a secret key";

	public static void main(String[] args) {
		// 生成token
		String jwtToken = Jwts.builder()
				// 头部
				.setHeaderParam("typ", "JWT")

				// jwt 标注中的申明
				.setIssuedAt(new Date()) // 签发时间
				.setExpiration(new Date(new Date().getTime() + 10000L))// 过期时间
				.setSubject("19930311")// jwt面向的客户
				.setIssuer("huan")// jwt的签发者

				// 公共申明和私有申明
				.claim("user_id", "admin")
				.claim("phone", "18251421000")
				.claim("age", 25)
				.claim("sex", "男")

				// 签证
				.signWith(SignatureAlgorithm.HS256, SECRET_KEY.getBytes())

				.compact();

		System.out.println("生成的 jwt token 如下:" + jwtToken);
	}

 

 

三、验证jwt token

 

// 验证jwt
		Jws<Claims> claimsJws = Jwts.parser()
				// 验证签发者字段iss 必须是 huan
				.require("iss", "huan")
				// 设置私钥
				.setSigningKey(SECRET_KEY.getBytes())
				// 解析jwt字符串
				.parseClaimsJws(jwtToken);

		// 获取头部信息
		JwsHeader header = claimsJws.getHeader();
		// 获取载荷信息
		Claims payload = claimsJws.getBody();

		System.out.println("解析过来的jwt的header如下:" + header.toString());
		System.out.println("解析过来的jwt的payload如下:" + payload.toString());

 上面jwtToken的值为第二步生成的jwt token的值

 

 :1、.require("iss","haun") 表示jwt中的iss字段的值必须是huan

        2、验证jwt的秘钥和生成jwt的秘钥必须是同一个。

 

四、结果

 

  • 大小: 16.8 KB
分享到:
评论

相关推荐

    JWT 生成Token及验证

    这些库通常提供了生成JWT、验证JWT以及读取JWT中的信息等API。利用这些库,开发者可以避免直接处理复杂的编码和算法细节,而专注于业务逻辑的实现。 在实际开发中,生成JWT的Token通常会涉及到用户的认证和授权信息...

    JWT Token生成及验证(源码)

    在.NET环境中,可能是一个封装了JWT处理功能的DLL,例如JWT.NET库,它提供了方便的API来生成和验证JWT。 8. TestForToken.sln 和 TestForToken.v11.suo: 这些是Visual Studio的解决方案文件和用户选项文件,分别...

    JWT 生成Token实战验证

    通过这个实战验证,你将学习如何在Java应用中生成和验证JWT Token,理解其工作原理,以及如何在实际项目中实现安全的身份验证。在实际操作过程中,参考`JWT 生成Token实战验证@www.java1234.com.pdf`文档,会有更...

    基于Java验证jwt token代码实例

    基于Java验证jwt token代码实例 基于Java验证jwt token代码实例是指使用Java语言来验证JSON Web Token(JWT)的代码...这个代码实例展示了如何使用Java语言和Auth0的JWT库来生成和验证JWT,实现身份验证和信息交换。

    JWT(java web Token)

    它用于验证JWT没有被篡改。签名计算过程为: ``` Signature = HMACSHA256(Base64UrlEncode(Header) + "." + Base64UrlEncode(Payload), Secret) ``` ### JWT的工作流程 1. 用户登录成功后,服务器生成一个JWT并返回...

    java jwt 统一认证

    Java JWT(JSON Web Token)统一认证是一种常见的身份验证机制,广泛应用于现代Web应用程序和服务中。JWT是一种轻量级的身份认证和授权标准,它允许服务端为客户端生成一个令牌,这个令牌包含了用户的相关信息,且是...

    java jwt 统一认证 demo

    首先,`java-jwt-2.2.0.jar`是JWT的Java实现库,它提供了创建、验证JWT的接口和类。这个库支持HS256、HS384、HS512、RS256、RS384、RS512、ES256、ES384、ES512等多种签名算法,可以根据安全性需求选择合适的算法。 ...

    JwtUtil.rar_Jwt签名生成_jwtutil_jwt文件上传

    JWTUtil是Java中用于处理JWT的工具类,通常包括JWT的生成、解析和验证功能。 JWT签名生成是JWT安全性的重要环节。JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。签名是通过将头部和载荷...

    Java中使用JWT生成Token进行接口鉴权实现方法

    其次,JWT可以防止跨站请求伪造攻击,因为jwt中包含了用户的信息。最后,JWT可以提高应用程序的安全性,因为jwt可以对用户的信息进行加密。 使用JWT生成Token的步骤 使用JWT生成Token的步骤可以分为四步: 1. ...

    febs_shiro_jwt-master_java_;shiro;jwt_

    2. 权限控制:Shiro根据JWT中的权限信息,拦截请求,允许或拒绝访问。 3. Session管理:由于使用JWT,系统可能不再需要传统的Session管理。 4. 安全配置:SpringBoot与Shiro结合,通过配置安全过滤器链,实现对HTTP...

    java基于springBoot和jwt实现用户登录功能

    在使用Spring Boot框架和JWT技术实现用户登录功能时,需要在pom.xml文件中添加相关的依赖。例如,添加jwt(JSON Web Token)依赖,版本号为0.9.1;添加java-jwt依赖,版本号为3.10.3。 知识点4:实体类设计 在实现...

    jwt-demo.zip

    签名则是通过将头部、载荷与一个密钥结合,使用指定的算法(如HMAC SHA256)计算得出,用于验证JWT的完整性和防止篡改。 在Java中,我们通常使用开源库如jjwt(Java JWT)来处理JWT。JJWT提供了创建、解析和验证JWT...

    jwt开发源码--入门级参考

    Header和Payload是JSON对象,用Base64URL编码,而Signature则是通过Header和Payload加上一个密钥通过特定算法计算得出,用于验证JWT的完整性和来源。 2. **创建JWT**:使用jjwt库,可以轻松创建JWT。首先,你需要...

    JWT实现的单点登录系统Demo

    1. **依赖库**:使用如`jjwt`之类的Java库来生成和解析JWT。`jjwt`库提供了一套完整的JWT操作API,包括创建、验证和解码JWT。 2. **认证服务**:这是SSO的核心,负责用户的登录验证并生成JWT。当用户成功登录后,...

    Java JWT JSON Web令牌为Java和Android.zip

    JSON Web Token(JWT)...总结来说,Java和Android中的JWT主要用于身份验证,通过`jjwt`库可以方便地创建、解析和验证JWT。理解JWT的工作原理和使用方法对于任何涉及用户认证的Java或Android开发者都是必不可少的技能。

    JWT类,可用于接口的安全验证问题

    3. **Signature**:用于验证JWT的完整性和来源,防止篡改。它是由Header、Payload以及一个预先设定的密钥(Secret)通过指定的哈希算法(如HMAC SHA256)计算得出的。 在PHP中,我们可以使用如`firebase/php-jwt`...

    JWT(Json Web Token)Java实现jar

    总结来说,JWT是一种在Java开发中常用的认证和授权机制,而jjwt库则提供了方便的JWT操作API,包括生成、解析和验证JWT。正确理解和使用JWT以及jjwt库,能够帮助开发者构建更安全、高效的身份验证系统。

    jwt所需jar包资源

    jjwt是一个完全符合JWT标准的开源库,提供了创建、解析和验证JWT的功能。版本0.11.2包含了对JWT规范的最新支持,以及各种签名算法如HS256(基于HMAC的SHA-256)、RS256(RSA非对称加密)等。使用jjwt,开发者可以...

    JWT_PACKAGES_FOR_JAVA.rar

    - 配置JWTTokenProvider:实现自定义的Token提供者,负责生成和验证JWT。 - 配置过滤器:创建JWTAuthenticationFilter和JWTAuthorizationFilter,分别用于处理登录请求和验证每个受保护的API请求的token。 - 安全...

    JSONWebToken(JWT)的Java实现

    - 比较解析得到的Signature与原始JWT中的Signature,确保没有被篡改。 - 解析Payload,检查声明的有效性,如过期时间(exp)等。 5. **安全性考虑** - JWT通常包含敏感信息,因此必须使用安全的哈希算法和密钥...

Global site tag (gtag.js) - Google Analytics