我的应用,第三方应用链接生成

beetlsql3-dev
Mlxa0324 2 years ago
parent 33b9869a3b
commit 1bd60f9cb1

@ -1,6 +1,8 @@
package com.ibeetl.jlw.entity;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.auth0.jwt.interfaces.Claim;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;
@ -10,6 +12,8 @@ import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* : <br>
@ -102,6 +106,10 @@ public class LoginTodo implements Serializable {
return mapper.writeValueAsString(this);
}
public Map<String, ?> toMap() {
return JSONUtil.toBean(toJSONString(), HashMap.class);
}
/**
* : <br>
* JSON
@ -118,4 +126,25 @@ public class LoginTodo implements Serializable {
}
return null;
}
/**
* : <br>
* JSON
*
* @return {@link LoginTodo}
* @Author: lx
* @Date: 2022/12/11 17:33
*/
@SneakyThrows
public static LoginTodo jsonToEntity(Map<String, Claim> claims) {
if (ObjectUtil.isNotEmpty(claims)) {
Map<String, String> tempMap = new HashMap(20);
claims.forEach((key, val) -> {
tempMap.put(key, val.asString());
});
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(JSONUtil.toJsonStr(tempMap), LoginTodo.class);
}
return null;
}
}

@ -9,10 +9,10 @@ import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.ibeetl.admin.core.service.CoreBaseService;
import com.ibeetl.admin.core.util.PlatformException;
@ -34,6 +34,7 @@ import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.ibeetl.jlw.entity.LoginTodo.jsonToEntity;
@ -233,7 +234,7 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
public String getKeyByCurrentUser(String linkSecretKey) {
if (ObjectUtil.isNotEmpty(linkSecretKey)) {
LoginTodo loginTodo = loginTodoService.buildByCurrentLoginUser();
String sign = JWT.create().withAudience(loginTodo.toJSONString()).sign(Algorithm.HMAC256(linkSecretKey));
String sign = JWT.create().withPayload(loginTodo.toMap()).sign(Algorithm.HMAC256(linkSecretKey));
// LoginTodo str = decodeApplicationUrl(linkSecretKey, sign);
// System.out.println(str);
return sign;
@ -241,43 +242,6 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
return "";
}
public static void main(String[] args){
LoginTodo loginTodo = new LoginTodo();
loginTodo.setUsername("测试教师");
loginTodo.setPassword("123qwe");
loginTodo.setRoleid(LoginTodo.ThirdRole.TEACHER_ROLE.getCode());
loginTodo.setTeacherid("1");
loginTodo.setStudentid(null);
loginTodo.setName("测试教师");
loginTodo.setSex("男");
loginTodo.setSchool("天蚕一瓶123");
loginTodo.setCollege("天蚕一瓶123");
loginTodo.setMajor(null);
loginTodo.setSchoolclass(null);
loginTodo.setStudentNo(null);
String json = JSONObject.toJSONString(loginTodo);
json = json.replace("schoolclass","class");//要转换
System.out.println(json);
String str = "wx_bc_14133";//这个就是密匙
String key = JWT.create().withAudience(json).sign(Algorithm.HMAC256(str));
System.out.println(key);
//解密
DecodedJWT jwt = null;
try {
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(str)).build();
jwt = verifier.verify(key);
System.out.println(jwt.getAudience().get(0));
}catch (Exception e){
e.printStackTrace();
}
}
/**
* : <br>
* url
@ -291,8 +255,8 @@ public class ResourcesApplicationService extends CoreBaseService<ResourcesApplic
try {
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(linkSecretKey)).build();
DecodedJWT jwt = verifier.verify(url);
String json = jwt.getAudience().get(0);
return jsonToEntity(json);
Map<String, Claim> claims = jwt.getClaims();
return jsonToEntity(claims);
}catch(Exception e) {
System.err.println(e.getMessage());
}

Loading…
Cancel
Save