ToB企服应用市场:ToB评测及商务社交产业平台

标题: 040-安全开辟-JavaEE应用&SpringBoot框架&JWT身份鉴权&打包部署JAR&WAR [打印本页]

作者: 用多少眼泪才能让你相信    时间: 2024-6-19 21:47
标题: 040-安全开辟-JavaEE应用&SpringBoot框架&JWT身份鉴权&打包部署JAR&WAR
040-安全开辟-JavaEE应用&SpringBoot框架&JWT身份鉴权&打包部署JAR&WAR



#知识点:

   1、JavaEE-SpringBoot-身份鉴权-JWT技能
2、JavaEE-SpringBoot-打包部署-JAR&WAR

  演示案例:

   ➢SpringBoot-身份鉴权-JWT技能
➢SpringBoot-打包部署-JAR&WAR

  

#SpringBoot-身份鉴权-JWT技能

JWT(JSON Web Token)是由服务端用加密算法对信息署名来保证其完备性和不可伪造;
Token里可以包罗全部必要信息,这样服务端就无需保存任何关于用户或会话的信息;
JWT用于身份认证、会话维持等。由三部分构成,header、payload与signature。
Header、Payload 和 Signature 是 JSON Web Token(JWT)的三个紧张构成部分。
终极,JWT 是由这三个部分构成的字符串,形如 **header.payload.signature**。JWT 通常用于在网络上安全地传输信息,例如在身份验证过程中通报令牌。
1、创建项目引入依赖



  1. <dependency>
  2. <groupId>com.auth0</groupId>
  3. <artifactId>java-jwt</artifactId>
  4. <version>3.4.0</version>
  5. </dependency>
复制代码

2、创建JWT并配置JWT

对应目录下创建JwtController.java
  1. // 模拟用户的JWT身份创建,数据的JWT加密
  2.     @PostMapping("/jwtcreate")
  3.     @ResponseBody
  4.     public static String create(Integer id, String user, String pass) {
  5.         /**/ 创建JWT令牌
  6.         String jwttoken = JWT.create()
  7.                 // 设置创建的Header部分
  8.                 //.withHeader()
  9.                 // 设置创建的Payload部分
  10.                 .withClaim("userid", id)
  11.                 .withClaim("username", user)
  12.                 .withClaim("password", pass)
  13.                 // 设置时效(JWT过期时间)
  14.                 //.withExpiresAt()
  15.                 // 创建设置的Signature部分,指定算法和密钥
  16.                 .sign(Algorithm.HMAC256("xiaodisec"));**
  17.         //打印创建好的jwt
  18.         System.out.println(jwttoken);
  19.         return jwttoken;
  20.     }
复制代码
3、剖析JWT

//构建解密注册
JWTVerifier jwt = JWT.require(Algorithm.HMAC256(“xiaodisec”)).build();
//解密注册数据
DecodedJWT verify = jwt.verify(jwtdata);
//提取解密数据
Integer userid = verify.getClaim(“userid”).asInt();
  1. // 模拟JWT身份的检测,JWT数据解密
  2.     @PostMapping("/jwtcheck")
  3.     @ResponseBody
  4.     public static String jwtcheck(String jwtdata) {
  5.         // 构建JWT解密注册
  6.         **JWTVerifier jwt = JWT.require(Algorithm.HMAC256("xiaodisec")).build();**
  7.         // 解密注册数据
  8.         **DecodedJWT verify = jwt.verify(jwtdata);**
  9.         // 提取注册解密数据Payload部分
  10.         **Integer userid = verify.getClaim("userid").asInt();
  11.         String username = verify.getClaim("username").asString();
  12.         String password = verify.getClaim("password").asString();**
  13.         System.out.println(userid + username + password);
  14.         return "admin page";
  15.         // 如果需要根据解密的数据执行不同的逻辑,可以使用以下代码进行判断
  16.         // if (username.equals("admin")) {
  17.         //     return "admin";
  18.         // } else {
  19.         //     return "gay?";
  20.         // }
  21.         // 提取Header部分
  22.         // verify.getHeader();
  23.         // 提取Sign签名部分
  24.         // verify.getSignature();
  25.     }
  26. }
复制代码
4、配置前端提交数据访问客户端页面







5、安全题目





1.对于密匙进行爆破


2.未验证署名



参考:https://cloud.tencent.com/developer/article/2101634
#SpringBoot-打包部署-JAR&WAR

参考:https://mp.weixin.qq.com/s/HyqVt7EMFcuKXfiejtfleg
SpringBoot项目打包在linux服务器中运行:
①jar类型项目

jar类型项目利用SpringBoot打包插件打包时,会在打成的jar中内置tomcat的jar。
所以利用jdk直接运行jar即可,jar项目中功能将代码放到其内置的tomcat中运行。




②war类型项目

在打包时需要将内置的tomcat插件排除,配置servlet的依赖和修改pom.xml,
然后将war文件放到tomcat安装目录webapps下,启动运行tomcat自动剖析即可。





JAVAEE源码架构:

无源码下载泄漏风险




源码泄漏也需反编译







免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4