Миксины Spring Security jackson игнорируютсяJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Миксины Spring Security jackson игнорируются

Сообщение Anonymous »

Я пытаюсь улучшить объектное отображение Spring-autoconfigure для (де)сериализации объекта аутентификации. Вот как я выполняю десериализацию (в контексте задания Quartz):

Код: Выделить всё

@Component
class MyJob : Job {
@Autowired
internal lateinit var objectMapper: ObjectMapper

override fun execute(context: JobExecutionContext) {
val loader = javaClass.classLoader
val modules = SecurityJackson2Modules.getModules(loader)
objectMapper.registerModules(modules)
val jobDataMap = context.jobDetail.jobDataMap
val context = objectMapper.readValue(jobDataMap["context"] as String, SecurityContextImpl::class.java)
SecurityContextHolder.setContext(context)

// other task code
}
}

jobDataMap["context"] содержит сериализованную аутентификацию, которая выглядит следующим образом

Код: Выделить всё

{
"@class" : "org.springframework.security.core.context.SecurityContextImpl",
"authentication" : {
"@class" : "org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken",
"authorities" : [ "java.util.Collections$UnmodifiableRandomAccessList", [ {
"@class" : "org.springframework.security.core.authority.SimpleGrantedAuthority",
"authority" : "ROLE_Corporate_CLIENT"
} ] ],
"details" : {
"@class" : "org.springframework.security.web.authentication.WebAuthenticationDetails",
"remoteAddress" : "127.0.0.1"
},
"authenticated" : true,
"principal" : {
"@class" : "my.package.UserInfo",
"origin" : "EXTERNAL",
"subject" : "9007-04-19-08.06.54.856184",
"displayName" : "9007-04-19-08.06.54.856184",
"roles" : [ "java.util.Collections$SingletonList", [ "Corporate_CLIENT" ] ]
},
"credentials" : "9007-04-19-08.06.54.856184"
}
}
Чтобы десериализовать «аннотированные» объекты @class, мне нужны специальные миксины безопасности Spring, которые должны быть предоставлены путем регистрации SecurityJackson2Modules. И действительно, отладка показывает, что они действительно зарегистрированы в objectMapper (см., например, запись SimpleGrantedAuthority).
[img]https://i .sstatic.net/pB8oLaAf.png[/img]

Тем не менее, objectMapper.readValue не может десериализовать этот фрагмент

Код: Выделить всё

{"@class":"org.springframework.security.core.authority.SimpleGrantedAuthority","authority":"ROLE_Corporate_CLIENT"}
в экземпляр SimpleGrantedAuthority. Вместо этого он, вероятно, игнорирует зарегистрированный миксин и просто десериализует его в HashMap.
Что мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/784 ... re-ignored
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»