当前位置: 首页 > 知识库问答 >
问题:

如果为用户存储SPI选择“无缓存”缓存策略,KeyClope 7.0.0将抛出NullPointerException

向实
2023-03-14

我创建了一个用户存储SPI,用于对外部数据库中的用户进行身份验证,我可以在keydeport的“用户”页面列出所有用户,用户可以从keydeport登录页面登录http://127.0.0.1:8080/auth/realms/dev/account/.但如果我想从http://127.0.0.1:8080/auth/realms/dev/protocol/openid-connect/token,keydrope抛出异常,如下所示。如果我将缓存策略设置为“默认”,KeyClope工作得很好。

09:18:04,972 ERROR [org.keycloak.services.error.KeycloakErrorHandler] (default task-3) Uncaught server error: java.lang.NullPointerException
        at org.keycloak.models.utils.KeycloakModelUtils.resolveAttribute(KeycloakModelUtils.java:415)
        at org.keycloak.protocol.oidc.mappers.UserAttributeMapper.setClaim(UserAttributeMapper.java:101)
        at org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.setClaim(AbstractOIDCProtocolMapper.java:119)
        at org.keycloak.protocol.oidc.mappers.AbstractOIDCProtocolMapper.transformAccessToken(AbstractOIDCProtocolMapper.java:81)
        at org.keycloak.protocol.oidc.TokenManager.transformAccessToken(TokenManager.java:553)
        at org.keycloak.protocol.oidc.TokenManager.createClientAccessToken(TokenManager.java:411)
        at org.keycloak.protocol.oidc.TokenManager$AccessTokenResponseBuilder.generateAccessToken(TokenManager.java:712)
        at org.keycloak.protocol.oidc.endpoints.TokenEndpoint.resourceOwnerPasswordCredentialsGrant(TokenEndpoint.java:609)
        at org.keycloak.protocol.oidc.endpoints.TokenEndpoint.processGrantRequest(TokenEndpoint.java:190)

共有2个答案

乐欣可
2023-03-14

我通过让我的UserModel扩展AbstractUserAdapter来解决同样的问题,使其变得如此常见(对我来说是不必要的)方法以标准/无故障的方式运行。

利博远
2023-03-14

在您自己的UserModel实现中,如果属性不存在,请重写下面的方法以返回空列表。

@重写公共列表getAtinn(字符串名称){最终列表值=super.get属性(名称);返回Optional.ofNullable(值). orElse(Collections.emptyList());}

 类似资料:
  • 创建了一个用户存储SPI,用于对外部数据库中的用户进行身份验证,可以在KeyCloak的“用户”页面中列出所有用户,用户可以从KeyCloak登录页面http://127.0.0.1:8080/auth/realms/dev/account/登录。但是如果我想从http://127.0.0.1:8080/auth/realms/dev/protocol/openid-connect/token获取

  • 问题内容: 我该如何决定使用哪个? , , , 。 我阅读了https://www.hibernate.org/hib_docs/v3/api/org/hibernate/cache/CacheConcurrencyStrategy.html,但没有足够详细地解释。 问题答案: 在Hibernate文档确实在他们定义了很好的工作: 19.2.2。策略:只读 如果您的应用程序需要读取而不是修改持久类

  • 问题内容: 我该如何决定使用哪个? , , , 。 我阅读了https://www.hibernate.org/hib_docs/v3/api/org/hibernate/cache/CacheConcurrencyStrategy.html,但没有足够详细地解释。 问题答案: 在Hibernate文档确实在他们定义了很好的工作: 19.2.2。策略:只读 如果您的应用程序需要读取而不是修改持久类

  • 本文向大家介绍iOS 缓存存储方式有哪些策略?相关面试题,主要包含被问及iOS 缓存存储方式有哪些策略?时的应答技巧和注意事项,需要的朋友参考一下 你可以设置缓存的数据需要保存多长时间,ASIHTTPRequest提供了两种策略: a,ASICacheForSessionDurationCacheStoragePolicy,默认策略,基于session的缓存数据存储。当下次运行或[ASIHTTPR

  • 本文向大家介绍Android图片三级缓存策略(网络、本地、内存缓存),包括了Android图片三级缓存策略(网络、本地、内存缓存)的使用技巧和注意事项,需要的朋友参考一下 一、简介 现在的Android应用程序中,不可避免的都会使用到图片,如果每次加载图片的时候都要从网络重新拉取,这样不但很耗费用户的流量,而且图片加载的也会很慢,用户体验很不好。所以一个应用的图片缓存策略是很重要的。通常情况下,A

  • 我的团队一直在Spring中使用@Cacable注释,缓存是可选的 我试着在文档中查找,但我找不到任何地方可以解释Spring在进入缓存时的行为,找到空并且应该返回可选