FusionAuth JWT

作者: 又语 | 来源:发表于2020-04-16 21:15 被阅读0次

本文介绍基于 FusionAuth JWT 的 JWT 实现方法。


目录

  • FusionAuth JWT 简介
  • 代码示例

FusionAuth JWT 简介

FusionAuth JWT 只有一个外部依赖 Jackson,不依赖于 Bouncy Castle、Apache Commons 或 Guava.

特性:

  • JWT 签名支持 HMAC、RSA 和 Elliptic Curve(椭圆曲线) 算法,包括:HS256、HS384、HS512、RS256、RS384、RS512、ES256、ES384、ES512;
  • PEM 解码 / 编码
    • 从 PEM 文件解码出私钥或公钥
    • 将私钥或公钥编码成 PEM 文件
  • JSON Web Key
    • 通过私钥构建 JWK
    • 通过公钥构建 JWK
    • 通过 PEM 构建 JWK
  • 工具类
    • 生成 2048、3072、4092 位的 RSA 密钥对
    • 生成 256、384、512 位 EC 密钥对
    • 通过 X.509 证书生成 x5tx5t#256
    • 为 SHA-256,SHA-384 和 SHA-512 生成理想的 HMAC 密码长度
    • 为 OpenID Connect 生成 at_hash 和 c_hash 声明

代码示例

package tutorial.jwt;

import io.fusionauth.jwt.Signer;
import io.fusionauth.jwt.Verifier;
import io.fusionauth.jwt.domain.JWT;
import io.fusionauth.jwt.hmac.HMACSigner;
import io.fusionauth.jwt.hmac.HMACVerifier;
import org.junit.Assert;
import org.junit.Test;

import java.time.ZonedDateTime;

public class FusionAuthJwtTest {

    @Test
    public void testHmacSha256() {
        String secret = "HMAC SHA256 SECRET";
        Signer signer = HMACSigner.newSHA256Signer(secret);
        String issuer = "Issuer";
        String subject = "Subject";
        JWT jwt = new JWT()
                .setIssuer(issuer)
                .setExpiration(ZonedDateTime.now().plusMinutes(60))
                .setSubject(subject)
                .setAudience("Audience X")
                .setNotBefore(ZonedDateTime.now().minusMinutes(60))
                .setIssuedAt(ZonedDateTime.now())
                .setUniqueId("jwt-id-1");
        String encodedJwt = JWT.getEncoder().encode(jwt, signer);
        System.out.println(encodedJwt);
        Verifier verifier = HMACVerifier.newVerifier(secret);
        JWT decodedJwt = JWT.getDecoder().decode(encodedJwt, verifier);
        Assert.assertEquals(issuer, decodedJwt.issuer);
        Assert.assertEquals(subject, decodedJwt.subject);
        // 其它校验略...
    }
}

相关文章

  • FusionAuth JWT

    本文介绍基于 FusionAuth JWT 的 JWT 实现方法。 目录 FusionAuth JWT 简介 代码...

  • JsonWebToken

    JWT (JsonWebToken) JWT官网['https://jwt.io/'] JWT简介 1.JWT(J...

  • JWT介绍和使用

    最权威网址 JWT官网: https://jwt.io/ 什么是JWT Json web token (JWT),...

  • JWT实现token验证

    JWT官网:https://jwt.io/[https://jwt.io/] JWT(Java版)的github地...

  • 使用RSA公私钥实现JWT令牌的签名和验签

    使用RSA公私钥实现JWT令牌的签名和验签 1、什么是JWT令牌 JWT基本概念可从JWT[https://jwt...

  • JWT Spring-security

    JWT设计原理 JWT结合spring-security在项目中的应用 JWT[https://jwt.io/in...

  • JWT的介绍解析

    JWT的介绍解析 一、什么是JWT?了解JWT,认知JWT 首先jwt其实是三个英语单词JSON Web Toke...

  • JWT、SWT、SAML

    一、 JWT from:https://jwt.io/introduction[https://jwt.io/in...

  • jwt 在微服务中应用

    jwt token jwt 在api 方式中表中的token生成,验证以及获取jwt解密后携带的用户信息 jwt ...

  • .Net Core接入JWT

    JWT网站:https://jwt.io/ JWT基础内容:https://baijiahao.baidu.com...

网友评论

    本文标题:FusionAuth JWT

    本文链接:https://www.haomeiwen.com/subject/vlndvhtx.html