Interface JwtAuthenticationProvider
- All Known Implementing Classes:
DefaultJwtAuthenticationProviderImpl
JWT 기반 인증 구현 시 AuthenticationProvider를 구현할 인터페이스
DefaultJwtAuthenticationProviderImpl이 이의 구현체이며,
커스터마이징을 원할 시 이 인터페이스를 구현하거나 해당 구현체를 상속받아
구현한 후 @Primary를 적용하면 됨.
- See Also:
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptiondefault StringcreateAccessToken(org.springframework.security.core.userdetails.UserDetails user) Access Token 생성 메서드default StringcreateRefreshToken(org.springframework.security.core.userdetails.UserDetails user) Refresh Token 생성 메서드createToken(org.springframework.security.core.userdetails.UserDetails user, long expirationInMilliSeconds) JWT 토큰 생성 메서드default io.jsonwebtoken.ClaimsextractClaims(String token) JWT로부터 모든 클레임들을 추출하기 위한 메서드.default StringextractUsernameFromToken(String token) JWT로부터 유저 네임을 추출하기 위한 메서드.default org.springframework.security.core.AuthenticationgetAuthentication(String token) UsernamePasswordAuthenticationToken 반환 메서드resolveToken(jakarta.servlet.http.HttpServletRequest request) 요청 헤더에 담긴 JWT 토큰을 찾아 반환하는 메서드default StringresolveTokenInCookie(jakarta.servlet.http.HttpServletRequest request, String cookieName) 쿠키에서도 JWT를 추출하고자 할 때 구현할 메서드booleanvalidateToken(String token) 주어진 토큰의 유효성 검증 메서드
-
Field Details
-
AUTHORIZATION
- See Also:
-
BEARER
- See Also:
-
-
Method Details
-
createToken
String createToken(org.springframework.security.core.userdetails.UserDetails user, long expirationInMilliSeconds) JWT 토큰 생성 메서드
- Parameters:
user- 사용자 정보가 담긴 UserDetails 구현체expirationInMilliSeconds- JWT 만료 시간(ms)- Returns:
- 사용자 정보가 담긴 문자열 형태의 JWT
- See Also:
-
resolveToken
요청 헤더에 담긴 JWT 토큰을 찾아 반환하는 메서드
Authorization: Bearer (JWT) 형태의 요청 헤더에서 JWT를 가져온다.
- Parameters:
request-- Returns:
- JWT 토큰
-
validateToken
주어진 토큰의 유효성 검증 메서드
- Parameters:
token-- Returns:
-
getAuthentication
UsernamePasswordAuthenticationToken 반환 메서드
Provider가 아닌 Filter에 이 기능을 구현하는 경우도 있기에 default로 선언하여 구현 여부를 선택사항으로 남김.
- Parameters:
token-- Returns:
SecurityContextHolder.getContext.setAuthentication()메서드의 인자로 넘길 Authentication 구현체를 반환한다.
-
createAccessToken
Access Token 생성 메서드
기존의
createToken(UserDetails, long)메서드보다는 Access Token을 생성한다는 의미를 명확히 하고자 할 때 이 메서드를 구현한다. Access Token의 만료 시간은JwtProperties를 이용하거나 별도로 정한다.실질적인 토큰 생성 로직은 내부에
createToken(UserDetails, long)메서드를 호출하도록 구성할 수 있음.- Parameters:
user-- Returns:
- 문자열 형태의 새로 생성된 Access Token
- See Also:
-
createRefreshToken
Refresh Token 생성 메서드
기존의
createToken(UserDetails, long)메서드보다는 Refresh Token을 생성한다는 의미를 명확히 하고자 할 때 이 메서드를 구현한다. Refresh Token의 만료 시간은JwtProperties를 이용하거나 별도로 정한다.실질적인 토큰 생성 로직은 내부에
createToken(UserDetails, long)메서드를 호출하도록 구성할 수 있음.- Parameters:
user-- Returns:
- 문자열 형태의 새로 생성된 Refresh Token
- See Also:
-
resolveTokenInCookie
default String resolveTokenInCookie(jakarta.servlet.http.HttpServletRequest request, String cookieName) 쿠키에서도 JWT를 추출하고자 할 때 구현할 메서드
- Parameters:
request-cookieName- JWT가 담긴 쿠키 이름- Returns:
- JWT 토큰. 없으면 null을 반환.
-
extractClaims
JWT로부터 모든 클레임들을 추출하기 위한 메서드.
- Parameters:
token- 추출하고자 하는 JWT 토큰- Returns:
- 추출된 모든 클레임
-
extractUsernameFromToken
JWT로부터 유저 네임을 추출하기 위한 메서드.
유저 네임이 subject에 포함될 때에만 사용 가능.
- Parameters:
token- username을 추출하고자 하는 JWT 토큰- Returns:
- username
-