JWT知识

JWT概念

JWT知识_第1张图片

JWT知识_第2张图片

JWT知识_第3张图片

JWT组成

JWT知识_第4张图片

JWT知识_第5张图片

JWT知识_第6张图片

JWT知识_第7张图片

JWT知识_第8张图片

JWT知识_第9张图片

JWT知识_第10张图片

JWT知识_第11张图片

Java实现JWT

JWT知识_第12张图片

JWT知识_第13张图片

Header

JWT知识_第14张图片

String getHeader() {
    String header = "{\"alg\":\"HS256\",\"typ\":\"JWT\"}";
    String encodeBase64URLSafeString = Base64.encodeBase64URLSafeString(header.getBytes(StandardCharsets.UTF_8));
    System.out.println(encodeBase64URLSafeString);
}

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

PayLoad

JWT知识_第15张图片

void getPayLoad(){
    String payload = "{\"sub\":\"7isi\",\"id\":\"1001\",\"role\":\"admin\"}";
    String encodeBase64URLSafeString = Base64.encodeBase64URLSafeString(payload.getBytes(StandardCharsets.UTF_8));
    System.out.println(encodeBase64URLSafeString);
}

eyJzdWIiOiI3aXNpIiwiaWQiOiIxMDAxIiwicm9sZSI6ImFkbWluIn0

Signature

JWT知识_第16张图片

JWT知识_第17张图片

@Test
void generatesignature() throws NoSuchAlgorithmException, InvalidKeyException {
    String secret = UUID.randomUUID().toString().replaceAll("-", "");
    String data = getHeader() +"." + getPayLoad();

    Mac mac = Mac.getInstance("HmacSHA256");
    SecretKeySpec spec = new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8),"HmacSHA256");
    mac.init(spec);
    byte[] bytes = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
    String res = Base64.encodeBase64URLSafeString(bytes);
    
    String jwt = data + "." + res;
    System.out.println(jwt);
}

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI3aXNpIiwiaWQiOiIxMDAxIiwicm9sZSI6ImFkbWluIn0.vpwacNY4fLdQzF7iSDyGLnYMqbgBoWRVLNG7Ail15Ss

验证签名值

JWT知识_第18张图片JWT知识_第19张图片

计算出来和原来的对比,我们的secreat是早就准备好的

Web中使用JWT

JWT知识_第20张图片

JJWT

JWT知识_第21张图片

依赖


            io.jsonwebtoken
            jjwt-api
            0.11.5
        
        
            io.jsonwebtoken
            jjwt-impl
            0.11.5
            runtime
        
        
            io.jsonwebtoken
            jjwt-jackson
            0.11.5
            runtime
        
        
            org.bouncycastle
            bcprov-jdk15on
            1.70
            runtime
        

例子

生成jws

JWT知识_第22张图片

JWT知识_第23张图片

RSA算法的支持

JWT知识_第24张图片

JWT安全密钥实现

JWT知识_第25张图片以下是jwt,没有签名,文档错误

JWT知识_第26张图片

JWT知识_第27张图片

自定义key

JWT知识_第28张图片

压缩

JWT知识_第29张图片

获取jwt的数据

JWT知识_第30张图片

add是往后添加

JWT知识_第31张图片

你可能感兴趣的:(java,jwt)