diff --git a/others/oauth2.1-flow.md b/others/oauth2.1-flow.md index 3b9b0a2..997caf1 100644 --- a/others/oauth2.1-flow.md +++ b/others/oauth2.1-flow.md @@ -197,6 +197,7 @@ or [400] ## JWT_BEARER flow - Core-Class: JwtClientAssertionAuthenticationProvider +- URL: http://localhost:8080/oauth2/token - diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 5487e5e..7e2b4ec 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -13,21 +13,30 @@ - - + + true - - - - - - - - - - - - + + logs/%d{yyyy-MM-dd}/sos-%i.log + 10MB + 15 + + + + + %d{yyyy-MM-dd HH:mm:ss} [%-5level] [%.80c{10}][%L] -%m%n + + + + + + + + + + + diff --git a/src/test/java/com/monkeyk/sos/service/JwtBearerFlowTest.java b/src/test/java/com/monkeyk/sos/service/JwtBearerFlowTest.java new file mode 100644 index 0000000..40f9729 --- /dev/null +++ b/src/test/java/com/monkeyk/sos/service/JwtBearerFlowTest.java @@ -0,0 +1,62 @@ +package com.monkeyk.sos.service; + +import com.nimbusds.jose.*; +import com.nimbusds.jose.crypto.MACSigner; +import com.nimbusds.jwt.JWTClaimsSet; +import org.junit.jupiter.api.Test; + +import java.time.Instant; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +/** + * 2023/10/24 10:25 + * + * @author Shengzhao Li + * @since 3.0.0 + */ +public class JwtBearerFlowTest { + + + /** + * MAC 生成 token + * HS256 + * method: CLIENT_SECRET_JWT + * + * @throws Exception e + */ + @Test + void macToken() throws Exception { + + String clientId = "vLIXDF9GXg6Psfh1uzwVFUj0fucX2Zn9"; + // client_secret 加密后的值 + String macSecret = "$2a$10$kjjdfA8SIuhlVx0q4B1GYeU..9TNU9.Aj6Vdc2v/iQTJhhmT/0xCi"; + + JWSSigner jwsSigner = new MACSigner(macSecret); + + JWSHeader header = new JWSHeader(JWSAlgorithm.HS256); + + + JWTClaimsSet claimsSet = new JWTClaimsSet.Builder() + .subject(clientId) + .issuer(clientId) + .audience("http://127.0.0.1:8080") + .expirationTime(Date.from(Instant.now().plusSeconds(300L))) + .build(); + + Payload payload = new Payload(claimsSet.toJSONObject()); + + JWSObject jwsObject = new JWSObject(header, payload); + //签名 + jwsObject.sign(jwsSigner); + + String idToken = jwsObject.serialize(); + assertNotNull(idToken); + System.out.println(idToken); + + } + +}