auth spi initialization
This commit is contained in:
1 parent
f5e301fe0d
commit
a1f7cfaf3a
6 files changed
+262
-53
No files matched your search
@@ -1,6 +1,7 @@
|
||||
package org.keycloak.migration;
|
||||
|
||||
import org.jboss.logging.Logger;
|
||||
import org.keycloak.migration.migrators.MigrateTo1_3_0_Beta1;
|
||||
import org.keycloak.migration.migrators.MigrationTo1_2_0_CR1;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
|
||||
@@ -24,6 +25,12 @@ public class MigrationModelManager {
|
||||
}
|
||||
new MigrationTo1_2_0_CR1().migrate(session);
|
||||
}
|
||||
if (stored == null || stored.lessThan(MigrateTo1_3_0_Beta1.VERSION)) {
|
||||
if (stored != null) {
|
||||
logger.debug("Migrating older model to 1.3.0.Beta1 updates");
|
||||
}
|
||||
new MigrateTo1_3_0_Beta1().migrate(session);
|
||||
}
|
||||
|
||||
model.setStoredVersion(MigrationModel.LATEST_VERSION);
|
||||
}
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package org.keycloak.migration.migrators;
|
||||
|
||||
import org.keycloak.migration.ModelVersion;
|
||||
import org.keycloak.models.KeycloakSession;
|
||||
import org.keycloak.models.RealmModel;
|
||||
import org.keycloak.models.utils.DefaultAuthenticationFlows;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
||||
* @version $Revision: 1 $
|
||||
*/
|
||||
public class MigrateTo1_3_0_Beta1 {
|
||||
public static final ModelVersion VERSION = new ModelVersion("1.3.0.Beta1");
|
||||
|
||||
|
||||
public void migrate(KeycloakSession session) {
|
||||
List<RealmModel> realms = session.realms().getRealms();
|
||||
for (RealmModel realm : realms) {
|
||||
if (realm.getAuthenticationFlows().size() == 0) {
|
||||
DefaultAuthenticationFlows.addFlows(realm);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -78,6 +78,23 @@ public class AuthenticationExecutionModel {
|
||||
public enum Requirement {
|
||||
REQUIRED,
|
||||
OPTIONAL,
|
||||
ALTERNATIVE
|
||||
ALTERNATIVE,
|
||||
DISABLED
|
||||
}
|
||||
|
||||
public boolean isRequired() {
|
||||
return requirement == Requirement.REQUIRED;
|
||||
}
|
||||
public boolean isOptional() {
|
||||
return requirement == Requirement.OPTIONAL;
|
||||
}
|
||||
public boolean isAlternative() {
|
||||
return requirement == Requirement.ALTERNATIVE;
|
||||
}
|
||||
public boolean isDisabled() {
|
||||
return requirement == Requirement.DISABLED;
|
||||
}
|
||||
public boolean isEnabled() {
|
||||
return requirement != Requirement.DISABLED;
|
||||
}
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
package org.keycloak.models.utils;
|
||||
|
||||
import org.keycloak.models.AuthenticationExecutionModel;
|
||||
import org.keycloak.models.AuthenticationFlowModel;
|
||||
import org.keycloak.models.AuthenticatorModel;
|
||||
import org.keycloak.models.RealmModel;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
|
||||
* @version $Revision: 1 $
|
||||
*/
|
||||
public class DefaultAuthenticationFlows {
|
||||
public static void addFlows(RealmModel realm) {
|
||||
AuthenticatorModel model = new AuthenticatorModel();
|
||||
model.setProviderId("auth-cookie");
|
||||
model.setAlias("Cookie");
|
||||
AuthenticatorModel cookieAuth = realm.addAuthenticator(model);
|
||||
model = new AuthenticatorModel();
|
||||
model.setProviderId("auth-login-form-otp");
|
||||
model.setAlias("Login Form OTP");
|
||||
AuthenticatorModel loginFormOtp = realm.addAuthenticator(model);
|
||||
model = new AuthenticatorModel();
|
||||
model.setProviderId("auth-login-form-password");
|
||||
model.setAlias("Login Form Password");
|
||||
AuthenticatorModel password = realm.addAuthenticator(model);
|
||||
model = new AuthenticatorModel();
|
||||
model.setProviderId("auth-login-form-username");
|
||||
model.setAlias("Login Form Username");
|
||||
AuthenticatorModel username = realm.addAuthenticator(model);
|
||||
model = new AuthenticatorModel();
|
||||
model.setProviderId("auth-otp-form");
|
||||
model.setAlias("Single OTP Form");
|
||||
AuthenticatorModel otp = realm.addAuthenticator(model);
|
||||
|
||||
AuthenticationFlowModel browser = new AuthenticationFlowModel();
|
||||
browser.setAlias("browser");
|
||||
browser.setDescription("browser based authentication");
|
||||
browser = realm.addAuthenticationFlow(browser);
|
||||
AuthenticationExecutionModel execution = new AuthenticationExecutionModel();
|
||||
execution.setParentFlow(browser.getId());
|
||||
execution.setRequirement(AuthenticationExecutionModel.Requirement.ALTERNATIVE);
|
||||
execution.setAuthenticator(cookieAuth.getId());
|
||||
execution.setPriority(0);
|
||||
execution.setUserSetupAllowed(false);
|
||||
execution.setAutheticatorFlow(false);
|
||||
realm.addAuthenticatorExecution(execution);
|
||||
AuthenticationFlowModel forms = new AuthenticationFlowModel();
|
||||
forms.setAlias("forms");
|
||||
forms.setDescription("Username, password, otp and other auth forms.");
|
||||
forms = realm.addAuthenticationFlow(forms);
|
||||
execution = new AuthenticationExecutionModel();
|
||||
execution.setParentFlow(browser.getId());
|
||||
execution.setRequirement(AuthenticationExecutionModel.Requirement.ALTERNATIVE);
|
||||
execution.setAuthenticator(forms.getId());
|
||||
execution.setPriority(1);
|
||||
execution.setUserSetupAllowed(false);
|
||||
execution.setAutheticatorFlow(true);
|
||||
realm.addAuthenticatorExecution(execution);
|
||||
|
||||
// forms
|
||||
// Username processing
|
||||
execution = new AuthenticationExecutionModel();
|
||||
execution.setParentFlow(forms.getId());
|
||||
execution.setRequirement(AuthenticationExecutionModel.Requirement.REQUIRED);
|
||||
execution.setAuthenticator(username.getId());
|
||||
execution.setPriority(10);
|
||||
execution.setUserSetupAllowed(false);
|
||||
execution.setAutheticatorFlow(false);
|
||||
realm.addAuthenticatorExecution(execution);
|
||||
|
||||
// password processing
|
||||
execution = new AuthenticationExecutionModel();
|
||||
execution.setParentFlow(forms.getId());
|
||||
execution.setRequirement(AuthenticationExecutionModel.Requirement.REQUIRED);
|
||||
execution.setAuthenticator(password.getId());
|
||||
execution.setPriority(11);
|
||||
execution.setUserSetupAllowed(false);
|
||||
execution.setAutheticatorFlow(false);
|
||||
realm.addAuthenticatorExecution(execution);
|
||||
|
||||
// otp processing
|
||||
execution = new AuthenticationExecutionModel();
|
||||
execution.setParentFlow(forms.getId());
|
||||
execution.setRequirement(AuthenticationExecutionModel.Requirement.OPTIONAL);
|
||||
execution.setAuthenticator(otp.getId());
|
||||
execution.setPriority(12);
|
||||
execution.setUserSetupAllowed(true);
|
||||
execution.setAutheticatorFlow(false);
|
||||
realm.addAuthenticatorExecution(execution);
|
||||
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user