Interface JwtAuthenticationProvider

All Known Implementing Classes:
DefaultJwtAuthenticationProviderImpl

public interface JwtAuthenticationProvider

JWT 기반 인증 구현 시 AuthenticationProvider를 구현할 인터페이스

DefaultJwtAuthenticationProviderImpl이 이의 구현체이며, 커스터마이징을 원할 시 이 인터페이스를 구현하거나 해당 구현체를 상속받아 구현한 후 @Primary를 적용하면 됨.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
     
    static final String
     
  • Method Summary

    Modifier and Type
    Method
    Description
    default String
    createAccessToken(org.springframework.security.core.userdetails.UserDetails user)
    Access Token 생성 메서드
    default String
    createRefreshToken(org.springframework.security.core.userdetails.UserDetails user)
    Refresh Token 생성 메서드
    createToken(org.springframework.security.core.userdetails.UserDetails user, long expirationInMilliSeconds)
    JWT 토큰 생성 메서드
    default io.jsonwebtoken.Claims
    JWT로부터 모든 클레임들을 추출하기 위한 메서드.
    default String
    JWT로부터 유저 네임을 추출하기 위한 메서드.
    default org.springframework.security.core.Authentication
    UsernamePasswordAuthenticationToken 반환 메서드
    resolveToken(jakarta.servlet.http.HttpServletRequest request)
    요청 헤더에 담긴 JWT 토큰을 찾아 반환하는 메서드
    default String
    resolveTokenInCookie(jakarta.servlet.http.HttpServletRequest request, String cookieName)
    쿠키에서도 JWT를 추출하고자 할 때 구현할 메서드
    boolean
    주어진 토큰의 유효성 검증 메서드
  • Field Details

  • 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

      String resolveToken(jakarta.servlet.http.HttpServletRequest request)

      요청 헤더에 담긴 JWT 토큰을 찾아 반환하는 메서드

      Authorization: Bearer (JWT) 형태의 요청 헤더에서 JWT를 가져온다.

      Parameters:
      request -
      Returns:
      JWT 토큰
    • validateToken

      boolean validateToken(String token)

      주어진 토큰의 유효성 검증 메서드

      Parameters:
      token -
      Returns:
    • getAuthentication

      default org.springframework.security.core.Authentication getAuthentication(String token)

      UsernamePasswordAuthenticationToken 반환 메서드

      Provider가 아닌 Filter에 이 기능을 구현하는 경우도 있기에 default로 선언하여 구현 여부를 선택사항으로 남김.

      Parameters:
      token -
      Returns:
      SecurityContextHolder.getContext.setAuthentication() 메서드의 인자로 넘길 Authentication 구현체를 반환한다.
    • createAccessToken

      default String createAccessToken(org.springframework.security.core.userdetails.UserDetails user)

      Access Token 생성 메서드

      기존의 createToken(UserDetails, long) 메서드보다는 Access Token을 생성한다는 의미를 명확히 하고자 할 때 이 메서드를 구현한다. Access Token의 만료 시간은 JwtProperties를 이용하거나 별도로 정한다.

      실질적인 토큰 생성 로직은 내부에 createToken(UserDetails, long) 메서드를 호출하도록 구성할 수 있음.

      Parameters:
      user -
      Returns:
      문자열 형태의 새로 생성된 Access Token
      See Also:
    • createRefreshToken

      default String createRefreshToken(org.springframework.security.core.userdetails.UserDetails user)

      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

      default io.jsonwebtoken.Claims extractClaims(String token)

      JWT로부터 모든 클레임들을 추출하기 위한 메서드.

      Parameters:
      token - 추출하고자 하는 JWT 토큰
      Returns:
      추출된 모든 클레임
    • extractUsernameFromToken

      default String extractUsernameFromToken(String token)

      JWT로부터 유저 네임을 추출하기 위한 메서드.

      유저 네임이 subject에 포함될 때에만 사용 가능.

      Parameters:
      token - username을 추출하고자 하는 JWT 토큰
      Returns:
      username