#5129·apollo

在 OIDC 配置文件中执行 createLocalUser 时, OidcLocalUserService 会抛出异常

作者: xyohn创建于 2024年4月17日更新于 2026年9月6日
标签need investigation

描述错误 清楚和简洁地描述错误是什么。最近,我试图调试Apollo Portal以了解如何实现身份验证。然而,我在com.ctrip.framework.apollo.portal.spi.oidc.OidcLocalUserServiceImpl#createLocalUser执行时发现了一个异常。在OIDC配置文件中,com.ctrip.framework.apollo.portal.spi.oidc.OidcAuthenticationSuccessEventListener将监听名为AuthenticationSuccessEvent的事件,这是来自Spring Security的。如果是第一次登录的人,它将执行com.ctrip.framework.apollo.portal.spi.oidc.OidcLocalUserServiceImpl#createLocalUser以在数据库中创建用户。然后,该方法将调用JdbcUserDetailsManager#createUser,这是在com.ctrip.framework.apollo.portal.spi.configuration.AuthConfiguration.SpringSecurityAuthAutoConfiguration#jdbcUserDetailsManager中配置的,但参数中不包含电子邮件,在com.ctrip.framework.apollo.portal.entity.po.UserPO中设置为非空。因此,这导致了一个JdbcSQLIntegrityConstraintViolationException。 尽管我使用了h2数据库,但我认为在MySQL下的情况也是一样的,因为com.ctrip.framework.apollo.portal.spi.configuration.AuthConfiguration.SpringSecurityAuthAutoConfiguration#jdbcUserDetailsManager中的配置。 我想问一下,这是一个错误吗? 重现 重现行为的步骤: 1. 使用h2数据库(但我认为在MySQL下情况相同) 2. 使用OIDC属性,并正确配置它 3. 尝试通过OIDC登录,并观察com.ctrip.framework.apollo.portal.spi.oidc.OidcLocalUserServiceImpl#createLocalUser 4. 就是这样 预期行为 清楚和简洁地描述您预期会发生的行为。我认为它不应该抛出异常,并且正确保存数据。 屏幕截图 如果适用,请添加屏幕截图来帮助解释您的问题。 image image image 其他详细信息和日志 - 版本2.2.0 - 错误日志 2024-04-17 19:19:43.997 ERROR 69260 --- [nio-8070-exec-3] com.ctrip.framework.apollo.portal.spi.oidc.OidcLocalUserServiceImpl: createLocalUser: user: userId=1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

内容来源: apolloconfig/apollo