diff --git a/backend/pom.xml b/backend/pom.xml
index 7ea176c..a7f0c46 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -41,6 +41,10 @@
jjwt
0.9.1
+
+ javax.xml.bind
+ jaxb-api
+
diff --git a/backend/src/main/java/com/nellyxinwei/backend/config/JwtAthFilter.java b/backend/src/main/java/com/nellyxinwei/backend/config/JwtAthFilter.java
index 0e529e6..d6a4a1c 100644
--- a/backend/src/main/java/com/nellyxinwei/backend/config/JwtAthFilter.java
+++ b/backend/src/main/java/com/nellyxinwei/backend/config/JwtAthFilter.java
@@ -31,7 +31,7 @@ protected void doFilterInternal(
HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
- final String authHeader = request.getHeader(AUTHORIZATION);
+ final String authHeader = request.getHeader("Authorization");
final String userEmail;
final String jwtToken;
diff --git a/backend/src/main/java/com/nellyxinwei/backend/config/JwtUtils.java b/backend/src/main/java/com/nellyxinwei/backend/config/JwtUtils.java
index b340296..2c6f724 100644
--- a/backend/src/main/java/com/nellyxinwei/backend/config/JwtUtils.java
+++ b/backend/src/main/java/com/nellyxinwei/backend/config/JwtUtils.java
@@ -1,6 +1,6 @@
package com.nellyxinwei.backend.config;
-import java.sql.Date;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -15,7 +15,7 @@
@Component
public class JwtUtils {
- private String jwtSigningKey = "secret";
+ private String SECRET_KEY = "secret";
public String extractUsername(String token) {
return extractClaim(token, Claims::getSubject);
@@ -25,22 +25,17 @@ public Date extractExpiration(String token) {
return extractClaim(token, Claims::getExpiration);
}
- public boolean hasClaim(String token, String claimName) {
- final Claims claims = extractAllClaims(token);
- return claims.get(claimName) != null;
- }
-
public T extractClaim(String token, Function claimsResolver) {
final Claims claims = extractAllClaims(token);
return claimsResolver.apply(claims);
}
private Claims extractAllClaims(String token) {
- return Jwts.parser().setSigningKey(jwtSigningKey).parseClaimsJws(token).getBody();
+ return Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody();
}
private Boolean isTokenExpired(String token) {
- return extractExpiration(token).before(new java.util.Date());
+ return extractExpiration(token).before(new Date());
}
public String generateToken(UserDetails userDetails) {
@@ -49,21 +44,29 @@ public String generateToken(UserDetails userDetails) {
}
public String generateToken(UserDetails userDetails, Map claims) {
- return createToken(claims, jwtSigningKey);
+ return createToken(claims, userDetails);
}
- private String createToken(Map claims, String subject) {
- return Jwts.builder().setClaims(claims)
+ private String createToken(Map claims, UserDetails userDetails) {
+
+ return Jwts.builder()
+ .setClaims(claims)
.setSubject(userDetails.getUsername())
.claim("authorities", userDetails.getAuthorities())
.setIssuedAt(new Date(System.currentTimeMillis()))
.setExpiration(new Date(System.currentTimeMillis() + TimeUnit.HOURS.toMillis(24)))
- .signWith(SignatureAlgorithm.HS256, jwtSigningKey).compact();
+ .signWith(SignatureAlgorithm.HS256, SECRET_KEY).compact();
}
- public Boolean isTokenValid(String token, UserDetails userDetails) {
+ public Boolean validateToken(String token, UserDetails userDetails) {
final String username = extractUsername(token);
return (username.equals(userDetails.getUsername()) && !isTokenExpired(token));
}
+ public Boolean isTokenValid(String token, UserDetails userDetails) {
+ final String username = extractUsername(token);
+ return (username.equals(userDetails.getUsername()) &&
+ !isTokenExpired(token));
+ }
+
}
diff --git a/backend/src/main/java/com/nellyxinwei/backend/config/SecurityConfig.java b/backend/src/main/java/com/nellyxinwei/backend/config/SecurityConfig.java
index 00ab86e..cb95779 100644
--- a/backend/src/main/java/com/nellyxinwei/backend/config/SecurityConfig.java
+++ b/backend/src/main/java/com/nellyxinwei/backend/config/SecurityConfig.java
@@ -1,10 +1,5 @@
package com.nellyxinwei.backend.config;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tomcat.jni.User;
import org.springframework.context.annotation.Bean;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.AuthenticationProvider;
@@ -13,11 +8,10 @@
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+// import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.NoOpPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
@@ -38,7 +32,10 @@ public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
+ .csrf().disable()
.authorizeRequests()
+ .antMatchers("/**/auth/**")
+ .permitAll()
.anyRequest()
.authenticated()
.and()
diff --git a/backend/src/main/java/com/nellyxinwei/backend/controllers/AuthenticationController.java b/backend/src/main/java/com/nellyxinwei/backend/controllers/AuthenticationController.java
index f5c2dd5..fb97672 100644
--- a/backend/src/main/java/com/nellyxinwei/backend/controllers/AuthenticationController.java
+++ b/backend/src/main/java/com/nellyxinwei/backend/controllers/AuthenticationController.java
@@ -4,7 +4,6 @@
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/backend/src/main/java/com/nellyxinwei/backend/dao/UserDao.java b/backend/src/main/java/com/nellyxinwei/backend/dao/UserDao.java
index 6907c91..d3e520e 100644
--- a/backend/src/main/java/com/nellyxinwei/backend/dao/UserDao.java
+++ b/backend/src/main/java/com/nellyxinwei/backend/dao/UserDao.java
@@ -23,7 +23,7 @@ public class UserDao {
"password",
Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))
)
- )
+ );
public UserDetails findUserByEmail(String email) {
return APPLICATION_USERS