2.2. 创建 JwtClaimsBuilder 并设置声明
第一步是使用以下选项之一初始化 JwtClaimsBuilder,并将一些声明添加到其中:
import java.util.Collections;
import jakarta.json.Json;
import jakarta.json.JsonObject;
import io.smallrye.jwt.build.Jwt;
import io.smallrye.jwt.build.JwtClaimsBuilder;
import org.eclipse.microprofile.jwt.JsonWebToken;
...
// Create an empty builder and add some claims
JwtClaimsBuilder builder1 = Jwt.claims();
builder1.claim("customClaim", "custom-value").issuer("https://issuer.org");
// Alternatively, start with claims directly:
// JwtClaimsBuilder builder1 = Jwt.upn("Alice");
// Create a builder from an existing claims file
JwtClaimsBuilder builder2 = Jwt.claims("/tokenClaims.json");
// Create a builder from a map of claims
JwtClaimsBuilder builder3 = Jwt.claims(Collections.singletonMap("customClaim", "custom-value"));
// Create a builder from a JsonObject
JsonObject userName = Json.createObjectBuilder().add("username", "Alice").build();
JsonObject userAddress = Json.createObjectBuilder().add("city", "someCity").add("street", "someStreet").build();
JsonObject json = Json.createObjectBuilder(userName).add("address", userAddress).build();
JwtClaimsBuilder builder4 = Jwt.claims(json);
// Create a builder from a JsonWebToken
@Inject JsonWebToken token;
JwtClaimsBuilder builder5 = Jwt.claims(token);
API 非常流畅,以便您可以将构建器初始化为流畅序列的一部分。
如果没有明确配置,构建程序会自动设置以下声明:
-
iat(在以下位置发出):当前时间 -
exp(expires at):自当前时间起的五分钟(可定制为smallrye.jwt.new-token.lifespan属性) -
jti(唯一令牌标识符)
您可以在全局范围内配置以下属性,以避免直接在构建器中设置它们:
-
smallrye.jwt.new-token.issuer: 指定默认签发者。 -
smallrye.jwt.new-token.audience: 指定默认受众。
初始化和设置声明后,下一步是决定如何保护声明。