All Downloads are FREE. Search and download functionalities are using the official Maven repository.

Micronaut.support.JwtBuilder.mustache Maven / Gradle / Ivy

package {{testPackage}};

import java.time.Instant;
import java.util.Collection;
import java.util.Date;
import java.util.List;

import com.nimbusds.jose.JOSEException;
import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.SignedJWT;

import io.micronaut.security.token.config.TokenConfiguration;
import io.micronaut.security.token.jwt.signature.SignatureGeneratorConfiguration;

{{>generated}}
public class JwtBuilder {

	private final JWTClaimsSet.Builder claims = new JWTClaimsSet.Builder();
	private final SignatureGeneratorConfiguration signature;

	public JwtBuilder(SignatureGeneratorConfiguration signature) {
		this.signature = signature;
	}

	public JwtBuilder subject(String subject) {
		claims.subject(subject);
		return this;
	}

	public JwtBuilder expirationTime(Instant timestamp) {
		claims.expirationTime(Date.from(timestamp));
		return this;
	}

	public JwtBuilder issuer(String issuer) {
		claims.issuer(issuer);
		return this;
	}

	public JwtBuilder issueTime(Instant timestamp) {
		claims.issueTime(Date.from(timestamp));
		return this;
	}

	public JwtBuilder audience(String audience) {
		claims.audience(audience);
		return this;
	}

	public JwtBuilder audience(String... audience) {
		claims.audience(List.of(audience));
		return this;
	}

	public JwtBuilder audience(Collection audience) {
		claims.audience(List.copyOf(audience));
		return this;
	}

	public JwtBuilder roles(String role) {
		claims.claim(TokenConfiguration.DEFAULT_ROLES_NAME, role);
		return this;
	}

	public JwtBuilder roles(String... roles) {
		claims.claim(TokenConfiguration.DEFAULT_ROLES_NAME, List.of(roles));
		return this;
	}

	public JwtBuilder roles(Collection roles) {
		claims.claim(TokenConfiguration.DEFAULT_ROLES_NAME, List.copyOf(roles));
		return this;
	}

	public JwtBuilder claim(String name, Object value) {
		claims.claim(name, value);
		return this;
	}

	public SignedJWT sign() {
		try {
			return signature.sign(claims.build());
		} catch (JOSEException e) {
			throw new IllegalStateException("Failed to sign JWT.", e);
		}
	}

	public String serialize() {
		return sign().serialize();
	}

	public String toBearer() {
		return "Bearer " + serialize();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy