Come ottenere il token jwt da Authorization
Oct 04 2020
Sto inviando la richiesta con il token jwt in autorizzazione. Devo recuperarlo in qualche modo e ho provato in questo modo:
@GetMapping
fun getUser(@AuthenticationPrincipal jwt: Jwt<*, *>): ResponseEntity<UserDto?> {
val allClaimsFromToken: Claims? = getAllClaimsFromToken(jwt.toString());
val userNameFromJwtToken: Any? = allClaimsFromToken?.get("sub");
....
}
Sfortunatamente ottengo sempre null come variabile jwt. Potresti dirmi cosa sto facendo di sbagliato?
Risposte
ced-b Oct 05 2020 at 03:13
Probabilmente il modo più semplice per farlo sarebbe ottenere il valore dell'intestazione non elaborato e quindi analizzarlo con JJWT.
@GetMapping
fun getUser(@RequestHeader (name="Authorization") tokenEncoded: String): ResponseEntity<UserDto?> {
Jwt myToken = Jwts.parserBuilder()
.setSigningKey(yourKeyHere)
.build()
.parseClaimsJws(tokenEncoded.removePrefix("Bearer").trim());
// do something
}
Potresti anche cercare di utilizzare la libreria Spring per OAuth2 che automatizza un po 'di più. Oppure puoi creare un filtro che esegue l'analisi in modo da non doverlo ripetere a ogni chiamata web.
Vedi anche questo post per ulteriori idee Accesso al token JWT da un controller Spring Boot Rest . È Java, ma fondamentalmente vale lo stesso.