我创建了一个用户存储提供程序,它通过外部数据库与keycloak连接,并成功获取用户和其他相关详细信息。同样,我试图从外部存储中获取与特定用户关联的组,以将它们填充到用户组页面中,主要是在生成令牌时。
我一直在尝试使用getGroups()
UserFederatedStorageProvider 中的方法来执行此操作,但它不会从keycloak的任何地方调用,甚至在生成令牌时也不会调用。我已经在本地部署了keycloak并对其进行了测试。附上我的代码片段以供参考。
@Override
public Set<GroupModel> getGroups(RealmModel realm, String userId) {
// TODO Auto-generated method stub
HashSet<GroupModel> testGroup = new HashSet<GroupModel>();
logger.info("IN GET GROUPS ----------" + userId);
GroupModel group1 = new Groups();
group1.setName("testGroup1");
testGroup.add(group1);
return testGroup;
}
我正在使用 UserStorageProviderFactory,然后在我的 UserStorageProvider 类中,我正在为用户和凭据处理上的 CRUD 实现这些。正在为组实现的一个是 UserFederatedStorageProvider。
public class StorageProvider implements UserStorageProvider,
UserLookupProvider,
UserRegistrationProvider,
UserQueryProvider,
UserFederatedStorageProvider,
CredentialInputUpdater,
CredentialInputValidator {