Skip to content

Instantly share code, notes, and snippets.

@dmi3coder
Created May 12, 2020 11:55
Show Gist options
  • Save dmi3coder/0bc5d7c9129c7b917a718f853d38ebbf to your computer and use it in GitHub Desktop.
Save dmi3coder/0bc5d7c9129c7b917a718f853d38ebbf to your computer and use it in GitHub Desktop.
TokenService to generate JTW Token for Quarkus Application
package tech.donau.quarkify.security;
import org.eclipse.microprofile.jwt.Claims;
import org.jboss.logmanager.Logger;
import org.jose4j.jwt.JwtClaims;
import javax.enterprise.context.RequestScoped;
import java.util.Arrays;
import java.util.UUID;
@RequestScoped
public class TokenService {
public final static Logger LOGGER = Logger.getLogger(TokenService.class.getSimpleName());
public String generateUserToken(String email, String username) {
return generateToken(email, username, Roles.USER);
}
public String generateServiceToken(String serviceId, String serviceName) {
return generateToken(serviceId,serviceName,Roles.SERVICE);
}
public String generateToken(String subject, String name, String... roles) {
try {
JwtClaims jwtClaims = new JwtClaims();
jwtClaims.setIssuer("DonauTech"); // change to your company
jwtClaims.setJwtId(UUID.randomUUID().toString());
jwtClaims.setSubject(subject);
jwtClaims.setClaim(Claims.upn.name(), subject);
jwtClaims.setClaim(Claims.preferred_username.name(), name); //add more
jwtClaims.setClaim(Claims.groups.name(), Arrays.asList(roles));
jwtClaims.setAudience("using-jwt");
jwtClaims.setExpirationTimeMinutesInTheFuture(60); // TODO specify how long do you need
String token = TokenUtils.generateTokenString(jwtClaims);
LOGGER.info("TOKEN generated: " + token);
return token;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment