Created
May 12, 2020 11:55
-
-
Save dmi3coder/0bc5d7c9129c7b917a718f853d38ebbf to your computer and use it in GitHub Desktop.
TokenService to generate JTW Token for Quarkus Application
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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