James Muehlner created GUACAMOLE-1794:
-----------------------------------------

             Summary: KSM Vault extension broken with unk
                 Key: GUACAMOLE-1794
                 URL: https://issues.apache.org/jira/browse/GUACAMOLE-1794
             Project: Guacamole
          Issue Type: Bug
          Components: guacamole-vault-ksm
    Affects Versions: 1.5.2
            Reporter: James Muehlner


It looks like a new field type "passkey" was added in the KSM vault, and 
whenever a record is edited in the vault, it may add this new field, which 
blows up the attempt to fetch records using the KSM SDK with the following 
error:


{code:java}
kotlinx.serialization.json.internal.JsonDecodingException: Polymorphic 
serializer was not found for class discriminator 'passkey'
JSON input: {"type":"passkey","value":[]}
              at 
kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24)
              at 
kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:32)
              at 
kotlinx.serialization.json.internal.PolymorphicKt.throwSerializerNotFound(Polymorphic.kt:76)
              at 
kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:66)
              at 
kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:38)
              at 
kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)
              at 
kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70)
              at 
kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(StreamingJsonDecoder.kt:111)
              at 
kotlinx.serialization.encoding.CompositeDecoder$DefaultImpls.decodeSerializableElement$default(Decoding.kt:537)
              at 
kotlinx.serialization.internal.CollectionLikeSerializer.readElement(CollectionSerializers.kt:80)
              at 
kotlinx.serialization.internal.AbstractCollectionSerializer.readElement$default(CollectionSerializers.kt:51)
              at 
kotlinx.serialization.internal.AbstractCollectionSerializer.merge(CollectionSerializers.kt:36)
              at 
kotlinx.serialization.internal.AbstractCollectionSerializer.deserialize(CollectionSerializers.kt:43)
              at 
kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:59)
              at 
kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:38)
              at 
kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableValue(AbstractDecoder.kt:43)
              at 
kotlinx.serialization.encoding.AbstractDecoder.decodeSerializableElement(AbstractDecoder.kt:70)
              at 
kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableElement(StreamingJsonDecoder.kt:111)
              at 
com.keepersecurity.secretsManager.core.KeeperRecordData$$serializer.deserialize(RecordData.kt:9)
              at 
com.keepersecurity.secretsManager.core.KeeperRecordData$$serializer.deserialize(RecordData.kt:9)
              at 
kotlinx.serialization.json.internal.PolymorphicKt.decodeSerializableValuePolymorphic(Polymorphic.kt:59)
              at 
kotlinx.serialization.json.internal.StreamingJsonDecoder.decodeSerializableValue(StreamingJsonDecoder.kt:38)
              at kotlinx.serialization.json.Json.decodeFromString(Json.kt:100)
              at 
com.keepersecurity.secretsManager.core.SecretsManager.decryptRecord(SecretsManager.kt:1151)
              at 
com.keepersecurity.secretsManager.core.SecretsManager.fetchAndDecryptSecrets(SecretsManager.kt:618)
              at 
com.keepersecurity.secretsManager.core.SecretsManager.getSecrets(SecretsManager.kt:323)
              at 
com.keepersecurity.secretsManager.core.SecretsManager.getSecrets$default(SecretsManager.kt:322)
              at 
com.keepersecurity.secretsManager.core.SecretsManager.getSecrets(SecretsManager.kt)
              at 
org.apache.guacamole.vault.ksm.secret.KsmClient.validateCache(KsmClient.java:269){code}

Thankfully, it looks like support for the new "passkey" field type was added in 
the 16.5.3 version of the SDK, so fixing this should hopefully be as easy as 
updating the KSM SDK version:
https://github.com/Keeper-Security/secrets-manager/tree/master/sdk/java/core#readme



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to