我在docker容器里运行一个key斗篷服务器。然后我编写了一个自定义用户存储提供程序来检查身份验证。
问题是在我的credentialinputvalidator实现中
public boolean isValid(RealmModel realmModel, UserModel userModel, CredentialInput credentialInput)
使用org.keydape.models.cache.infinispan.useradapter示例作为第二个参数(usermodel)调用。
我希望改为使用mycustomusermodel示例,这就是
public UserModel getUserByUsername(String username, RealmModel realm)
他回来了。因此,我尝试将usermodel强制转换为mycustomusermodel,它会引发以下异常:
未捕获的服务器错误:java.lang.classcastexception:类org.keydepot.models.cache.infinispan.useradapter无法强制转换到类com.package.mycustomusermodel(org.keydepot.models.cache.infinispan.useradapter位于加载器的org.keydepot的未命名模块中)。keycloak-model-infinispan@11.0.0'@35823d20;com.package.mycustomusermodel位于loader'deployment.keydepot\u custom\u ext\u ear-0.0.1-snapshot.ear.keydepot\u custom\u ext-0.0.1-snapshot.jar'@139eb90f)的未命名模块中
事实上,使用我在其他测试中使用的其他keydepot服务器,同一个用户存储提供程序正在按预期工作(mycustomusermodel的一个示例)。
也许我在配置keydepot服务器时失败了,但是我不知道会涉及到什么选项。知道问题出在哪里吗?
1条答案
按热度按时间2w2cym1i1#
问题在缓存策略中。在key斗篷的管理应用程序中,在“用户联合”部分下,编辑了“我的用户存储提供程序”,并选择“无缓存作为缓存策略”。
classcastexception不再出现。
我想如果我将来需要缓存的话,我需要在这个问题上再努力一点。