export/import flows
This commit is contained in:
1 parent
b3211fa8c2
commit
f4d4405c20
10 files changed
+369
-15
No files matched your search
@@ -20,9 +20,8 @@ public class DefaultAuthenticationFlows {
|
||||
public static final String LOGIN_FORMS_FLOW = "forms";
|
||||
|
||||
public static void addFlows(RealmModel realm) {
|
||||
browserFlow(realm);
|
||||
registrationFlow(realm);
|
||||
|
||||
if (realm.getFlowByAlias(BROWSER_FLOW) == null) browserFlow(realm);
|
||||
if (realm.getFlowByAlias(REGISTRATION_FLOW) == null) registrationFlow(realm);
|
||||
}
|
||||
|
||||
public static void registrationFlow(RealmModel realm) {
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package org.keycloak.models.utils;
|
||||
|
||||
import org.keycloak.models.AuthenticationExecutionModel;
|
||||
import org.keycloak.models.AuthenticationFlowModel;
|
||||
import org.keycloak.models.AuthenticatorConfigModel;
|
||||
import org.keycloak.models.ClientModel;
|
||||
import org.keycloak.models.ClientSessionModel;
|
||||
import org.keycloak.models.FederatedIdentityModel;
|
||||
@@ -17,6 +20,9 @@ import org.keycloak.models.UserFederationProviderModel;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.models.UserSessionModel;
|
||||
|
||||
import org.keycloak.representations.idm.AuthenticationExecutionRepresentation;
|
||||
import org.keycloak.representations.idm.AuthenticationFlowRepresentation;
|
||||
import org.keycloak.representations.idm.AuthenticatorConfigRepresentation;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.CredentialRepresentation;
|
||||
import org.keycloak.representations.idm.FederatedIdentityRepresentation;
|
||||
@@ -183,10 +189,30 @@ public class ModelToRepresentation {
|
||||
rep.setInternationalizationEnabled(realm.isInternationalizationEnabled());
|
||||
rep.getSupportedLocales().addAll(realm.getSupportedLocales());
|
||||
rep.setDefaultLocale(realm.getDefaultLocale());
|
||||
|
||||
if (internal) {
|
||||
exportAuthenticationFlows(realm, rep);
|
||||
}
|
||||
return rep;
|
||||
}
|
||||
|
||||
public static void exportAuthenticationFlows(RealmModel realm, RealmRepresentation rep) {
|
||||
rep.setAuthenticationFlows(new LinkedList<AuthenticationFlowRepresentation>());
|
||||
rep.setAuthenticatorConfig(new LinkedList<AuthenticatorConfigRepresentation>());
|
||||
for (AuthenticationFlowModel model : realm.getAuthenticationFlows()) {
|
||||
AuthenticationFlowRepresentation flowRep = toRepresentation(model);
|
||||
flowRep.setAuthenticationExecutions(new LinkedList<AuthenticationExecutionRepresentation>());
|
||||
for (AuthenticationExecutionModel execution : realm.getAuthenticationExecutions(model.getId())) {
|
||||
flowRep.getAuthenticationExecutions().add(toRepresentation(execution));
|
||||
}
|
||||
rep.getAuthenticationFlows().add(flowRep);
|
||||
}
|
||||
for (AuthenticatorConfigModel model : realm.getAuthenticatorConfigs()) {
|
||||
rep.getAuthenticatorConfig().add(toRepresentation(model));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static RealmEventsConfigRepresentation toEventsConfigReprensetation(RealmModel realm) {
|
||||
RealmEventsConfigRepresentation rep = new RealmEventsConfigRepresentation();
|
||||
rep.setEventsEnabled(realm.isEventsEnabled());
|
||||
@@ -404,4 +430,37 @@ public class ModelToRepresentation {
|
||||
return consentRep;
|
||||
}
|
||||
|
||||
public static AuthenticationFlowRepresentation toRepresentation(AuthenticationFlowModel model) {
|
||||
AuthenticationFlowRepresentation rep = new AuthenticationFlowRepresentation();
|
||||
rep.setBuiltIn(model.isBuiltIn());
|
||||
rep.setTopLevel(model.isTopLevel());
|
||||
rep.setProviderId(model.getProviderId());
|
||||
rep.setId(model.getId());
|
||||
rep.setAlias(model.getAlias());
|
||||
rep.setDescription(model.getDescription());
|
||||
return rep;
|
||||
|
||||
}
|
||||
|
||||
public static AuthenticationExecutionRepresentation toRepresentation(AuthenticationExecutionModel model) {
|
||||
AuthenticationExecutionRepresentation rep = new AuthenticationExecutionRepresentation();
|
||||
rep.setAuthenticatorConfig(model.getAuthenticatorConfig());
|
||||
rep.setAuthenticator(model.getAuthenticator());
|
||||
rep.setAutheticatorFlow(model.isAutheticatorFlow());
|
||||
rep.setFlowId(model.getFlowId());
|
||||
rep.setPriority(model.getPriority());
|
||||
rep.setUserSetupAllowed(model.isUserSetupAllowed());
|
||||
rep.setRequirement(model.getRequirement().name());
|
||||
return rep;
|
||||
}
|
||||
|
||||
public static AuthenticatorConfigRepresentation toRepresentation(AuthenticatorConfigModel model) {
|
||||
AuthenticatorConfigRepresentation rep = new AuthenticatorConfigRepresentation();
|
||||
rep.setId(model.getId());
|
||||
rep.setAlias(model.getAlias());
|
||||
rep.setConfig(model.getConfig());
|
||||
return rep;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -4,6 +4,9 @@ import net.iharder.Base64;
|
||||
import org.jboss.logging.Logger;
|
||||
import org.keycloak.enums.SslRequired;
|
||||
import org.keycloak.migration.MigrationProvider;
|
||||
import org.keycloak.models.AuthenticationExecutionModel;
|
||||
import org.keycloak.models.AuthenticationFlowModel;
|
||||
import org.keycloak.models.AuthenticatorConfigModel;
|
||||
import org.keycloak.models.BrowserSecurityHeaders;
|
||||
import org.keycloak.models.ClaimMask;
|
||||
import org.keycloak.models.ClientModel;
|
||||
@@ -23,6 +26,9 @@ import org.keycloak.models.UserFederationMapperModel;
|
||||
import org.keycloak.models.UserFederationProviderModel;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.representations.idm.ApplicationRepresentation;
|
||||
import org.keycloak.representations.idm.AuthenticationExecutionRepresentation;
|
||||
import org.keycloak.representations.idm.AuthenticationFlowRepresentation;
|
||||
import org.keycloak.representations.idm.AuthenticatorConfigRepresentation;
|
||||
import org.keycloak.representations.idm.ClaimRepresentation;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.CredentialRepresentation;
|
||||
@@ -288,6 +294,30 @@ public class RepresentationToModel {
|
||||
if(rep.getDefaultLocale() != null){
|
||||
newRealm.setDefaultLocale(rep.getDefaultLocale());
|
||||
}
|
||||
|
||||
importAuthenticationFlows(newRealm, rep);
|
||||
}
|
||||
|
||||
public static void importAuthenticationFlows(RealmModel newRealm, RealmRepresentation rep) {
|
||||
if (rep.getAuthenticationFlows() == null) {
|
||||
// assume this is an old version being imported
|
||||
DefaultAuthenticationFlows.addFlows(newRealm);
|
||||
} else {
|
||||
for (AuthenticationFlowRepresentation flowRep : rep.getAuthenticationFlows()) {
|
||||
AuthenticationFlowModel model = toModel(flowRep);
|
||||
model = newRealm.addAuthenticationFlow(model);
|
||||
for (AuthenticationExecutionRepresentation exeRep : flowRep.getAuthenticationExecutions()) {
|
||||
AuthenticationExecutionModel execution = toModel(exeRep);
|
||||
execution.setParentFlow(model.getId());
|
||||
newRealm.addAuthenticatorExecution(execution);
|
||||
}
|
||||
}
|
||||
for (AuthenticatorConfigRepresentation configRep : rep.getAuthenticatorConfig()) {
|
||||
AuthenticatorConfigModel model = toModel(configRep);
|
||||
newRealm.addAuthenticatorConfig(model);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void convertDeprecatedSocialProviders(RealmRepresentation rep) {
|
||||
@@ -921,7 +951,7 @@ public class RepresentationToModel {
|
||||
}
|
||||
}
|
||||
}
|
||||
public static IdentityProviderModel toModel(IdentityProviderRepresentation representation) {
|
||||
public static IdentityProviderModel toModel(IdentityProviderRepresentation representation) {
|
||||
IdentityProviderModel identityProviderModel = new IdentityProviderModel();
|
||||
|
||||
identityProviderModel.setInternalId(representation.getInternalId());
|
||||
@@ -1009,4 +1039,37 @@ public class RepresentationToModel {
|
||||
return consentModel;
|
||||
}
|
||||
|
||||
public static AuthenticationFlowModel toModel(AuthenticationFlowRepresentation rep) {
|
||||
AuthenticationFlowModel model = new AuthenticationFlowModel();
|
||||
model.setBuiltIn(rep.isBuiltIn());
|
||||
model.setTopLevel(rep.isTopLevel());
|
||||
model.setProviderId(rep.getProviderId());
|
||||
model.setId(rep.getId());
|
||||
model.setAlias(rep.getAlias());
|
||||
model.setDescription(rep.getDescription());
|
||||
return model;
|
||||
|
||||
}
|
||||
|
||||
public static AuthenticationExecutionModel toModel(AuthenticationExecutionRepresentation rep) {
|
||||
AuthenticationExecutionModel model = new AuthenticationExecutionModel();
|
||||
model.setAuthenticatorConfig(rep.getAuthenticatorConfig());
|
||||
model.setAuthenticator(rep.getAuthenticator());
|
||||
model.setAutheticatorFlow(rep.isAutheticatorFlow());
|
||||
model.setFlowId(rep.getFlowId());
|
||||
model.setPriority(rep.getPriority());
|
||||
model.setUserSetupAllowed(rep.isUserSetupAllowed());
|
||||
model.setRequirement(AuthenticationExecutionModel.Requirement.valueOf(rep.getRequirement()));
|
||||
return model;
|
||||
}
|
||||
|
||||
public static AuthenticatorConfigModel toModel(AuthenticatorConfigRepresentation rep) {
|
||||
AuthenticatorConfigModel model = new AuthenticatorConfigModel();
|
||||
model.setId(rep.getId());
|
||||
model.setAlias(rep.getAlias());
|
||||
model.setConfig(rep.getConfig());
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user