@ -16,6 +16,9 @@
@@ -16,6 +16,9 @@
package org.springframework.security.jackson2 ;
import java.io.IOException ;
import java.util.List ;
import com.fasterxml.jackson.core.JsonParser ;
import com.fasterxml.jackson.core.JsonProcessingException ;
import com.fasterxml.jackson.core.type.TypeReference ;
@ -24,12 +27,10 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -24,12 +27,10 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode ;
import com.fasterxml.jackson.databind.ObjectMapper ;
import com.fasterxml.jackson.databind.node.MissingNode ;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken ;
import org.springframework.security.core.GrantedAuthority ;
import java.io.IOException ;
import java.util.List ;
/ * *
* Custom deserializer for { @link UsernamePasswordAuthenticationToken } . At the time of deserialization
* it will invoke suitable constructor depending on the value of < b > authenticated < / b > property .
@ -39,6 +40,7 @@ import java.util.List;
@@ -39,6 +40,7 @@ import java.util.List;
* you can also registered it with your own mixin class .
*
* @author Jitendra Singh
* @author Greg Turnquist
* @see UsernamePasswordAuthenticationTokenMixin
* @since 4 . 2
* /
@ -65,7 +67,13 @@ class UsernamePasswordAuthenticationTokenDeserializer extends JsonDeserializer<U
@@ -65,7 +67,13 @@ class UsernamePasswordAuthenticationTokenDeserializer extends JsonDeserializer<U
} else {
principal = principalNode . asText ( ) ;
}
Object credentials = readJsonNode ( jsonNode , "credentials" ) . asText ( ) ;
JsonNode credentialsNode = readJsonNode ( jsonNode , "credentials" ) ;
Object credentials ;
if ( credentialsNode . isNull ( ) ) {
credentials = null ;
} else {
credentials = credentialsNode . asText ( ) ;
}
List < GrantedAuthority > authorities = mapper . readValue (
readJsonNode ( jsonNode , "authorities" ) . traverse ( mapper ) , new TypeReference < List < GrantedAuthority > > ( ) {
} ) ;
@ -74,7 +82,12 @@ class UsernamePasswordAuthenticationTokenDeserializer extends JsonDeserializer<U
@@ -74,7 +82,12 @@ class UsernamePasswordAuthenticationTokenDeserializer extends JsonDeserializer<U
} else {
token = new UsernamePasswordAuthenticationToken ( principal , credentials ) ;
}
token . setDetails ( readJsonNode ( jsonNode , "details" ) ) ;
JsonNode detailsNode = readJsonNode ( jsonNode , "details" ) ;
if ( detailsNode . isNull ( ) ) {
token . setDetails ( null ) ;
} else {
token . setDetails ( detailsNode ) ;
}
return token ;
}