Uploaded image for project: 'Guacamole'
  1. Guacamole
  2. GUACAMOLE-1794

KSM Vault extension broken with any record containing new "passkey" field type

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.5.2
    • 1.5.3
    • guacamole-vault-ksm
    • None

    Description

      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:

      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)

      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

      Attachments

        Activity

          People

            Unassigned Unassigned
            jmuehlner James Muehlner
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: