运营相关

FusionAuth JWT

2020-04-16  本文已影响0人  又语

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


目录


FusionAuth JWT 简介

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

特性:


代码示例

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);
        // 其它校验略...
    }
}
上一篇 下一篇

猜你喜欢

热点阅读