update
This commit is contained in:
@@ -34,6 +34,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|||||||
.antMatchers("/auth/register").permitAll()
|
.antMatchers("/auth/register").permitAll()
|
||||||
.antMatchers("/users").authenticated()
|
.antMatchers("/users").authenticated()
|
||||||
.antMatchers("/articles").authenticated()
|
.antMatchers("/articles").authenticated()
|
||||||
|
.antMatchers("/me").authenticated()
|
||||||
.and()
|
.and()
|
||||||
.formLogin().disable()
|
.formLogin().disable()
|
||||||
.addFilter(jwtAuthenticationFilter())
|
.addFilter(jwtAuthenticationFilter())
|
||||||
@@ -54,4 +55,5 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
|
|||||||
private Filter jwtAuthenticationFilter() throws Exception {
|
private Filter jwtAuthenticationFilter() throws Exception {
|
||||||
return new JwtAuthenticationFilter(authenticationManager(), jwtUtil());
|
return new JwtAuthenticationFilter(authenticationManager(), jwtUtil());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.example.vue.domain.user.User;
|
|||||||
import com.example.vue.util.JwtUtil;
|
import com.example.vue.util.JwtUtil;
|
||||||
import io.jsonwebtoken.Claims;
|
import io.jsonwebtoken.Claims;
|
||||||
import io.jsonwebtoken.JwtException;
|
import io.jsonwebtoken.JwtException;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import org.springframework.security.authentication.AuthenticationManager;
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
@@ -46,16 +47,17 @@ public class JwtAuthenticationFilter extends BasicAuthenticationFilter {
|
|||||||
|
|
||||||
private Authentication getAuthentication(HttpServletRequest request) {
|
private Authentication getAuthentication(HttpServletRequest request) {
|
||||||
|
|
||||||
String token = request.getHeader("Authorization");
|
String authorizationHeader = request.getHeader("Authorization");
|
||||||
|
|
||||||
if (token == null) {
|
if (authorizationHeader == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Claims claims;
|
String token = authorizationHeader.substring("Bearer ".length());
|
||||||
|
|
||||||
|
Claims claims = null;
|
||||||
try {
|
try {
|
||||||
claims = jwtUtil.getClaims(token.substring("Bearer ".length()));
|
claims = jwtUtil.getClaims(token);
|
||||||
} catch (JwtException e) {
|
} catch (JwtException e) {
|
||||||
throw new AuthException.MalformedJwt(token);
|
throw new AuthException.MalformedJwt(token);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package com.example.vue.domain.auth;
|
package com.example.vue.domain.auth;
|
||||||
|
|
||||||
import io.jsonwebtoken.JwtException;
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
|
||||||
|
import javax.naming.AuthenticationException;
|
||||||
|
|
||||||
public class AuthException {
|
public class AuthException {
|
||||||
|
|
||||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||||
@@ -28,9 +30,16 @@ public class AuthException {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
@ResponseStatus(HttpStatus.BAD_REQUEST)
|
||||||
public static class MalformedJwt extends JwtException {
|
public static class MalformedJwt extends AccessDeniedException {
|
||||||
public MalformedJwt(String token) {
|
public MalformedJwt(String token) {
|
||||||
super("올바르지 않은 토큰 입니다. [token=" + token + "]");
|
super("올바르지 않은 토큰 입니다. [token=" + token + "]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ResponseStatus(HttpStatus.FORBIDDEN)
|
||||||
|
public static class ExpiredJwt extends AuthenticationException {
|
||||||
|
public ExpiredJwt(String token) {
|
||||||
|
super("만료 된 토큰입니다. [accessToken=" + token + "]");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ public class JwtUtil {
|
|||||||
|
|
||||||
private Key key;
|
private Key key;
|
||||||
|
|
||||||
public static long PLUS_MILLS = (1000 * 60 * 60 * 24) * 30L;
|
public static long PLUS_MILLS = (1000 * 60 * 60 * 24) * 0L;
|
||||||
|
|
||||||
public JwtUtil(String secret) {
|
public JwtUtil(String secret) {
|
||||||
this.key = Keys.hmacShaKeyFor(secret.getBytes());
|
this.key = Keys.hmacShaKeyFor(secret.getBytes());
|
||||||
|
|||||||
Reference in New Issue
Block a user