JsonMappingException: Can not construct instance of org.springframework.security.core.GrantedAuthority
When populating the authorities field in a JSON/YAML edu.wisc.uwss.local.userDetailsLoader.resource
, like so:
[
{
"username": "admin",
"password": "admin",
"fullName": "Amy Administrator",
"firstName": "Amy",
"lastName": "Administrator",
"authorities": [ "SERVICE" ]
},
...
]
Observe the following stacktrace:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of org.springframework.security.core.GrantedAuthority, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information
at [Source: java.io.BufferedInputStream@2de96eba; line: 8, column: 22] (through reference chain: java.util.ArrayList[0]->edu.wisc.uwss.UWUserDetailsImpl["authorities"]->java.util.ArrayList[0])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:892) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:139) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:520) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:463) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:378) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1099) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:296) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:133) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:217) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3736) ~[jackson-databind-2.6.6.jar:2.6.6]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2803) ~[jackson-databind-2.6.6.jar:2.6.6]
at edu.wisc.uwss.local.LocalUserDetailsLoader$Default.loadUsers(LocalUserDetailsLoader.java:53) ~[uw-spring-security-core-1.5.0.jar:na]
Affects 1.4.0 and 1.5.0.