Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package am.iunetworks.jwt;
- import am.iunetworks.jwt.domain.AuthUser;
- import am.iunetworks.jwt.domain.UserPrincipal;
- import io.jsonwebtoken.Claims;
- import io.jsonwebtoken.Jwts;
- import io.jsonwebtoken.SignatureAlgorithm;
- import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
- import org.springframework.security.core.Authentication;
- import org.springframework.security.core.GrantedAuthority;
- import org.springframework.security.core.authority.SimpleGrantedAuthority;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * Created by mainserver on 11/22/2017
- */
- public class JWTAuthenticationService {
- private static final long EXPIRATION_TIME = 365L * 24 * 60 * 60 * 1000;
- private static final String SECRET = "gTTjxjlqsSO1WxF5PZMcaZQbAfOvEl3g";
- private static final String AUTHORITIES = "Authorities";
- private static final String ID = "id";
- private static final String SUBJECT = "sub";
- public static String generateAuthHeader(Authentication auth) {
- final List<String> authorities = auth.getAuthorities()
- .stream()
- .map(GrantedAuthority::getAuthority)
- .collect(Collectors.toList());
- final Map<String, Object> claims = new HashMap<>();
- claims.put(ID, ((UserPrincipal) auth.getPrincipal()).getId().toString());
- claims.put(SUBJECT, ((UserPrincipal) auth.getPrincipal()).getUsername());
- claims.put(AUTHORITIES, authorities);
- String jwt = Jwts.builder()
- .setClaims(claims)
- .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
- .signWith(SignatureAlgorithm.HS512, SECRET)
- .compact();
- return jwt;
- }
- public static Authentication parseAuthHeader(String authToken) {
- if (authToken != null) {
- Claims claims = Jwts.parser()
- .setSigningKey(SECRET)
- .parseClaimsJws(authToken)
- .getBody();
- String username = claims.getSubject();
- @SuppressWarnings("unchecked") final List<String> authoritiesClaim = (List<String>) claims.get(AUTHORITIES);
- final List<SimpleGrantedAuthority> authorities = authoritiesClaim
- .stream()
- .map(SimpleGrantedAuthority::new)
- .collect(Collectors.toList());
- Long id = Long.valueOf(claims.get(ID, String.class));
- return username != null ?
- new UsernamePasswordAuthenticationToken(new AuthUser(id, username), null, authorities) :
- null;
- }
- return null;
- }
- }
Add Comment
Please, Sign In to add comment