Guest User

Untitled

a guest
Jul 16th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. package am.iunetworks.jwt;
  2.  
  3. import am.iunetworks.jwt.domain.AuthUser;
  4. import am.iunetworks.jwt.domain.UserPrincipal;
  5. import io.jsonwebtoken.Claims;
  6. import io.jsonwebtoken.Jwts;
  7. import io.jsonwebtoken.SignatureAlgorithm;
  8. import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  9. import org.springframework.security.core.Authentication;
  10. import org.springframework.security.core.GrantedAuthority;
  11. import org.springframework.security.core.authority.SimpleGrantedAuthority;
  12.  
  13. import java.util.Date;
  14. import java.util.HashMap;
  15. import java.util.List;
  16. import java.util.Map;
  17. import java.util.stream.Collectors;
  18.  
  19. /**
  20. * Created by mainserver on 11/22/2017
  21. */
  22. public class JWTAuthenticationService {
  23.  
  24. private static final long EXPIRATION_TIME = 365L * 24 * 60 * 60 * 1000;
  25.  
  26. private static final String SECRET = "gTTjxjlqsSO1WxF5PZMcaZQbAfOvEl3g";
  27.  
  28. private static final String AUTHORITIES = "Authorities";
  29.  
  30. private static final String ID = "id";
  31.  
  32. private static final String SUBJECT = "sub";
  33.  
  34. public static String generateAuthHeader(Authentication auth) {
  35.  
  36. final List<String> authorities = auth.getAuthorities()
  37. .stream()
  38. .map(GrantedAuthority::getAuthority)
  39. .collect(Collectors.toList());
  40.  
  41. final Map<String, Object> claims = new HashMap<>();
  42.  
  43. claims.put(ID, ((UserPrincipal) auth.getPrincipal()).getId().toString());
  44. claims.put(SUBJECT, ((UserPrincipal) auth.getPrincipal()).getUsername());
  45. claims.put(AUTHORITIES, authorities);
  46.  
  47. String jwt = Jwts.builder()
  48. .setClaims(claims)
  49. .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
  50. .signWith(SignatureAlgorithm.HS512, SECRET)
  51. .compact();
  52.  
  53. return jwt;
  54. }
  55.  
  56. public static Authentication parseAuthHeader(String authToken) {
  57.  
  58. if (authToken != null) {
  59.  
  60. Claims claims = Jwts.parser()
  61. .setSigningKey(SECRET)
  62. .parseClaimsJws(authToken)
  63. .getBody();
  64.  
  65. String username = claims.getSubject();
  66.  
  67. @SuppressWarnings("unchecked") final List<String> authoritiesClaim = (List<String>) claims.get(AUTHORITIES);
  68.  
  69. final List<SimpleGrantedAuthority> authorities = authoritiesClaim
  70. .stream()
  71. .map(SimpleGrantedAuthority::new)
  72. .collect(Collectors.toList());
  73.  
  74. Long id = Long.valueOf(claims.get(ID, String.class));
  75.  
  76. return username != null ?
  77. new UsernamePasswordAuthenticationToken(new AuthUser(id, username), null, authorities) :
  78. null;
  79. }
  80. return null;
  81. }
  82.  
  83. }
Add Comment
Please, Sign In to add comment