add PublicJwtService
This commit is contained in:
28
src/main/kotlin/ltd/hlaeja/jwt/service/PublicJwtService.kt
Normal file
28
src/main/kotlin/ltd/hlaeja/jwt/service/PublicJwtService.kt
Normal file
@@ -0,0 +1,28 @@
|
||||
package ltd.hlaeja.jwt.service
|
||||
|
||||
import io.jsonwebtoken.Claims
|
||||
import io.jsonwebtoken.Jws
|
||||
import io.jsonwebtoken.JwtParser
|
||||
import io.jsonwebtoken.Jwts
|
||||
import ltd.hlaeja.jwt.util.PublicKeyProvider
|
||||
import org.springframework.beans.factory.annotation.Value
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
|
||||
import org.springframework.stereotype.Service
|
||||
|
||||
@Service
|
||||
@ConditionalOnProperty(prefix = "jwt", name = ["public-key"])
|
||||
class PublicJwtService(
|
||||
@Value("\${jwt.public-key}")
|
||||
jwtPublicKey: String,
|
||||
) {
|
||||
|
||||
private val parser: JwtParser = Jwts.parser()
|
||||
.verifyWith(PublicKeyProvider.load(jwtPublicKey))
|
||||
.build()
|
||||
|
||||
fun <T> verify(
|
||||
token: String,
|
||||
block: (claims: Jws<Claims>) -> T,
|
||||
): T = parser.parseSignedClaims(token)
|
||||
.let(block)
|
||||
}
|
||||
Reference in New Issue
Block a user