상황 "트랜잭션없이 대리자를 액세스 할 수 없습니다" Keycloak의 classpath property 제휴 프로 바이더의 예 속성 파일에서 사용자 이름을 읽는 대신 외부 웹 서비스에서 가져옵니다. 이 예외 occures 이유Keycloak 예외가
Failed authentication: java.lang.IllegalStateException: Cannot access delegate without a transaction
at org.keycloak.models.cache.infinispan.UserCacheSession.getDelegate(UserCacheSession.java:78)
at org.keycloak.models.cache.infinispan.UserCacheSession.addUser(UserCacheSession.java:442)
at com.example.keycloak.MyFederationProvider.getUserModel(MyFederationProvider.java:324)
at com.example.keycloak.MyFederationProvider.getUserByUsername(MyFederationProvider.java:206)
at org.keycloak.models.UserFederationManager.getUserByUsername(UserFederationManager.java:237)
at org.keycloak.models.utils.KeycloakModelUtils.findUserByNameOrEmail(KeycloakModelUtils.java:273)
at org.keycloak.authentication.authenticators.browser.AbstractUsernameFormAuthenticator.validateUserAndPassword(AbstractUsernameFormAuthenticator.java:127)
at org.keycloak.authentication.authenticators.browser.UsernamePasswordForm.validateForm(UsernamePasswordForm.java:56)
at org.keycloak.authentication.authenticators.browser.UsernamePasswordForm.action(UsernamePasswordForm.java:49)
at org.keycloak.authentication.DefaultAuthenticationFlow.processAction(DefaultAuthenticationFlow.java:84)
at org.keycloak.authentication.AuthenticationProcessor.authenticationAction(AuthenticationProcessor.java:759)
at org.keycloak.services.resources.LoginActionsService.processFlow(LoginActionsService.java:359)
at org.keycloak.services.resources.LoginActionsService.processAuthentication(LoginActionsService.java:341)
at org.keycloak.services.resources.LoginActionsService.authenticateForm(LoginActionsService.java:386)
...
내가 알아낼 수 없습니다 :
내 문제는 테스트 사용자 인증을 시도 할 때 가끔 다음과 같은 예외를 얻을 수 있다는 것입니다. org.keycloak.models.cache.infinispan.UserCacheSession
클래스를 살펴보면 transactionActive
변수가 false 일 때 예외가 throw 된 것을 볼 수 있지만 어떤 조건에서는 false로 설정되어 있는지 이해할 수 없습니다.
KeycloakModelUtils.runJobInTransaction()
방법 또는
addUser()
전화를 arround
begin()
및
commit()
를 추가하여 거래를 강요했지만,이 문제를 (I 트랜잭션이 이미 활성화되어 있음을 알리는 새로운 오류가 발생했습니다) 해결되지 않았다.
이미이 예외가 발생했으며이를 피하는 방법을 알고 있습니까?
덕분에 많은
"영역 설정"에서 영역 및 사용자 캐시를 강제로 재설정하고 즉시 Keycloak을 다시 시작하면 로그인이 한 번 작동합니다. 다른 로그인으로 로그인하면 예외가 발생합니다. – morbac