kilork/keycloak

Keycloak server deserialization errors: `ClientPolicyExecutorConfigurationRepresentation` and `ClientPolicyConditionConfigurationRepresentation`

SimonThormeyer opened this issue · 5 comments

We at wire are using this crate to test our oidc flow with keycloak running in dev mode in a docker container. Thanks a lot!

However, we're currently running into issues when updating both the docker container and this crate to version 25.0.2.

When calling realm_client_policies_profiles_put() with a ClientPolicyExecutorRepresentation in the body and realm_client_policies_policies_put() with a ClientPolicyConditionRepresentation in the body, the server responds with a 500 caused by a deserialization error.

When we change the configurations in

keycloak/src/types.rs

Lines 380 to 383 in 19ce7ca

pub struct ClientPolicyExecutorRepresentation {
pub configuration: Option<TypeVec<TypeValue>>,
pub executor: Option<TypeString>,
}

and

keycloak/src/types.rs

Lines 372 to 375 in 19ce7ca

pub struct ClientPolicyConditionRepresentation {
pub condition: Option<TypeString>,
pub configuration: Option<TypeVec<TypeValue>>,
}

to be an Option<TypeMap<String, TypeValue>> instead, our tests appear to be fixed.

Please note, if it's relevant, that the classes in the keycloak repository (see here and here) use a map internally.

What's the issue here?

Hi @SimonThormeyer Thank you for the report. I am not sure how exactly handle this, as the problem related to type description provided by keycloak. Basically it is in the OpenAPI description provided. You fix would not be permanent, as these structures are generated.

I previously had quite advanced way to patch types in HTML representation they used to have, could be we need here similar thing. Or we could report this to upstream and hope for better.

@kilork Thanks for your response.
Reported to upstream in keycloak/keycloak#32004.
Would it be possible to release a temporary fix until this is addressed, so that we do not need to keep a fork of this repository to make our use case work?

@SimonThormeyer to test changes you can use update.ts. It allows to run generator and some other nice things. I do releases with its help. About temporal fix need to think, how to do it better.

@SimonThormeyer to test changes you can use update.ts. It allows to run generator and some other nice things. I do releases with its help. About temporal fix need to think, how to do it better.

@kilork Any update on this?

@istankovic no, no update from my side, and upstream bug is also open. I actually do not think it is such a big deal to have proper swagger there.

On our side I need some almost zero-cost maintenance solution, releases here are pretty regular.