IT/WEB

[WEB] JWT 세팅 밋 헤더에 세팅..

오달달씨 2022. 8. 3. 14:23
728x90
반응형

JWT 세팅 밋 헤더에 세팅해보자

 

Gradle 세팅

implementation 'io.jsonwebtoken:jjwt-api:0.10.5' 
implementation 'io.jsonwebtoken:jjwt-impl:0.10.5' 
implementation 'io.jsonwebtoken:jjwt-jackson:0.10.5'

 

 

사용자 ID로 JWT 생성

public String getEncryptJwt(Member member) {
	List<String> roles = new ArrayList<String>();
	roles.add("ROLE_MEMBER");
	
	byte[] signingKey = SecurityConstants.JWT_SECRET.getBytes();
	String token =Jwts.builder()
			.signWith(Keys.hmacShaKeyFor(signingKey), SignatureAlgorithm.HS512)
			.setHeaderParam("typ", SecurityConstants.TOKEN_TYPE)
			.setIssuer(SecurityConstants.TOKEN_ISSUER)
			.setAudience(SecurityConstants.TOKEN_AUDIENCE)
			.setSubject(member.getUserId())
			.setExpiration(new Date(System.currentTimeMillis() + 864000000))
			.claim("rol", roles)
			.compact();
	
	log.info("token : " + token);
	
	return token;
}

 JWT 복호화

public String getDecryptJwt(String header) {
	String token = header.substring(7);
	
	byte[] signingKey = SecurityConstants.JWT_SECRET.getBytes();
	
	Jws<Claims> parsedToken = Jwts.parser()
		.setSigningKey(signingKey)
		.parseClaimsJws(token);
	
	String userId = parsedToken.getBody().getSubject();
	
	return userId;
}

Controlle 쪽

	@GetMapping("/~/get")
	@ApiImplicitParams({
		@ApiImplicitParam(name="Authorization", value="Bearer Token", required=true, type="header")
	})
	@ApiOperation(value = "내 정보 ", notes = "가입한 회원정보를 가져오는 API")
	@ResponseBody
	public Map<String, Object> getMe(@RequestHeader (name="Authorization") String header) throws Exception {
		
		return refundService.me(header);
	}

Service 쪽

HttpHeaders httpHeader = new HttpHeaders();
httpHeader.set("Authorization", header.substring(7));
728x90
반응형