protected void checkJtaEnabled(KeycloakSessionFactory factory) { jtaLookup = (JtaTransactionManagerLookup) factory.getProviderFactory(JtaTransactionManagerLookup.class); if (jtaLookup != null) { if (jtaLookup.getTransactionManager() != null) { jtaEnabled = true; } } }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(event -> { }); }
public ScramSaslAuthenticator(final KeycloakSessionFactory keycloakSessionFactory, final String hostname, String digestName, String hmacName, Map<String, Function<CredentialModel, StoredAndServerKey>> keyRetrievalFunctions) { this.keycloakSession = keycloakSessionFactory.create(); this.hostname = hostname; this.randomBytes = new byte[32]; (new SecureRandom()).nextBytes(this.randomBytes); this.digestName = digestName; this.hmacName = hmacName; this.keyRetrievalFunctions = new HashMap<>(keyRetrievalFunctions); }
@Override public void updateClient() { em.flush(); session.getKeycloakSessionFactory().publish(new RealmModel.ClientUpdatedEvent() { @Override public ClientModel getUpdatedClient() { return ClientAdapter.this; } @Override public KeycloakSession getKeycloakSession() { return session; } }); }
@Override protected void generateStatementsImpl() throws CustomChangeException { List<ProviderFactory> factories = kcSession.getKeycloakSessionFactory().getProviderFactories(UserStorageProvider.class); for (ProviderFactory factory : factories) { if (!factory.getId().equals(LDAPConstants.LDAP_PROVIDER)) { convertFedProviderToComponent(factory.getId(), null); } } }
@Override public void init(KeycloakSession session) { UserSessionPersisterProvider persister = session.getProvider(UserSessionPersisterProvider.class); int startTime = (int)(session.getKeycloakSessionFactory().getServerStartupTimestamp() / 1000); log.debugf("Clearing detached sessions from persistent storage and updating timestamps to %d", startTime); persister.clearDetachedUserSessions(); persister.updateAllTimestamps(startTime); }
@Override public void updateClient() { updateMongoEntity(); session.getKeycloakSessionFactory().publish(new RealmModel.ClientUpdatedEvent() { @Override public ClientModel getUpdatedClient() { return ClientAdapter.this; } @Override public KeycloakSession getKeycloakSession() { return session; } }); }
@Override public void update(KeycloakSession session) { List<ProviderFactory> factories = session.getKeycloakSessionFactory().getProviderFactories(UserStorageProvider.class); for (ProviderFactory factory : factories) { portUserFedToComponent(factory.getId()); } DBCollection realms = db.getCollection("realms"); try (DBCursor realmsCursor = realms.find()) { while (realmsCursor.hasNext()) { BasicDBObject realm = (BasicDBObject) realmsCursor.next(); realm.append("loginWithEmailAllowed", true); realm.append("duplicateEmailsAllowed", false); realms.save(realm); } } }
protected int initClusterStartupTime(KeycloakSession session) { Integer existingClusterStartTime = (Integer) crossDCAwareCacheFactory.getCache().get(InfinispanClusterProvider.CLUSTER_STARTUP_TIME_KEY); if (existingClusterStartTime != null) { logger.debugf("Loaded cluster startup time: %s", Time.toDate(existingClusterStartTime).toString()); return existingClusterStartTime; } else { // clusterStartTime not yet initialized. Let's try to put our startupTime int serverStartTime = (int) (session.getKeycloakSessionFactory().getServerStartupTimestamp() / 1000); existingClusterStartTime = putIfAbsentWithRetries(crossDCAwareCacheFactory, InfinispanClusterProvider.CLUSTER_STARTUP_TIME_KEY, serverStartTime, -1); if (existingClusterStartTime == null) { logger.debugf("Initialized cluster startup time to %s", Time.toDate(serverStartTime).toString()); return serverStartTime; } else { logger.debugf("Loaded cluster startup time: %s", Time.toDate(existingClusterStartTime).toString()); return existingClusterStartTime; } } }
@Override public void postInit(KeycloakSessionFactory factory) { UserSecretAdapter userSecretAdapter = factory.getProviderFactory(UserSecretAdapter.class).create(null); singleton = new STSUsernamePasswordForm(userSecretAdapter); }
public boolean removeUser(RealmModel realm, UserModel user, UserProvider userProvider) { if (userProvider.removeUser(realm, user)) { session.getKeycloakSessionFactory().publish(new UserModel.UserRemovedEvent() { @Override public RealmModel getRealm() { return realm; } @Override public UserModel getUser() { return user; } @Override public KeycloakSession getKeycloakSession() { return session; } }); return true; } return false; }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (event instanceof PostMigrationEvent) { KeycloakModelUtils.runJobInTransaction(factory, (KeycloakSession session) -> { registerClusterListeners(session); }); } } }); }
@Override public void postInit(KeycloakSessionFactory factory) { Cache<ActionTokenReducedKey, ActionTokenValueEntity> cache = this.actionTokenCache; // It is necessary to put the cache initialization here, otherwise the cache would be initialized lazily, that // means also listeners will start only after first cache initialization - that would be too late if (cache == null) { synchronized (this) { cache = this.actionTokenCache; if (cache == null) { this.actionTokenCache = initActionTokenCache(factory.create()); } } } }
@Override public void postInit(KeycloakSessionFactory factory) { super.postInit(factory); userSecretAdapter = factory.getProviderFactory(UserSecretAdapter.class).create(null); }
@Override public void removeIdentityProviderByAlias(String alias) { for (IdentityProviderEntity entity : realm.getIdentityProviders()) { if (entity.getAlias().equals(alias)) { IdentityProviderModel model = entityToModel(entity); em.remove(entity); em.flush(); session.getKeycloakSessionFactory().publish(new RealmModel.IdentityProviderRemovedEvent() { @Override public RealmModel getRealm() { return RealmAdapter.this; } @Override public IdentityProviderModel getRemovedIdentityProvider() { return model; } @Override public KeycloakSession getKeycloakSession() { return session; } }); } } }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (keysCache == null) { return; } SessionAndKeyHolder cacheKey = getCacheKeyToInvalidate(event); if (cacheKey != null) { log.debugf("Invalidating %s from keysCache", cacheKey); InfinispanPublicKeyStorageProvider provider = (InfinispanPublicKeyStorageProvider) cacheKey.session.getProvider(PublicKeyStorageProvider.class, getId()); provider.addInvalidation(cacheKey.cacheKey); } } }); }
private Set<String> getPasswordHashAlgorithms() { Set<String> hashAlgos = new HashSet<>(); boolean enmasseRealmsFound = false; KeycloakSession keycloakSession = keycloakSessionFactory.create(); KeycloakTransactionManager transactionManager = keycloakSession.getTransactionManager(); transactionManager.begin(); try { List<RealmModel> realms = keycloakSession.realms().getRealms(); for(RealmModel realm : realms) { if(realm.getAttribute("enmasse-realm",Boolean.FALSE)) { enmasseRealmsFound = true; hashAlgos.add(realm.getPasswordPolicy().getHashAlgorithm()); } } } finally { transactionManager.commit(); keycloakSession.close(); } if(!enmasseRealmsFound) { LOG.warn("No realms with attribute \"enmasse-realm\" found, only universally accepted SASL mechanisms will be offered"); } return hashAlgos; }
@GET @Path("/user-by-username-from-fed-factory") @Produces(MediaType.APPLICATION_JSON) public UserRepresentation getUserByUsernameFromFedProviderFactory(@QueryParam("realmName") String realmName, @QueryParam("userName") String userName) { RealmModel realm = getRealmByName(realmName); UserFederationProviderFactory factory = (UserFederationProviderFactory)session.getKeycloakSessionFactory().getProviderFactory(UserFederationProvider.class, "dummy"); UserModel user = factory.getInstance(session, null).getUserByUsername(realm, userName); if (user == null) return null; return ModelToRepresentation.toRepresentation(user); }
@Override public RealmModel createRealm(String id, String name) { RealmEntity realm = new RealmEntity(); realm.setName(name); realm.setId(id); em.persist(realm); em.flush(); final RealmModel adapter = new RealmAdapter(session, em, realm); session.getKeycloakSessionFactory().publish(new RealmModel.RealmCreationEvent() { @Override public RealmModel getCreatedRealm() { return adapter; } }); return adapter; }
@Override public void postInit(KeycloakSessionFactory factory) { factory.register(new ProviderEventListener() { @Override public void onEvent(ProviderEvent event) { if (event instanceof RealmModel.UserFederationProviderCreationEvent) { RealmModel.UserFederationProviderCreationEvent fedCreationEvent = (RealmModel.UserFederationProviderCreationEvent)event; UserFederationProviderModel providerModel = fedCreationEvent.getCreatedFederationProvider(); if (providerModel.getProviderName().equals(getId())) { onProviderModelCreated(fedCreationEvent.getRealm(), providerModel); } } } }); }