@Override public void start() { logger.info("Initializing Shiro environment"); WebEnvironment environment = environmentLoader.initEnvironment(servletContext); RealmSecurityManager rsm = (RealmSecurityManager) environment.getWebSecurityManager(); logger.debug("Creating SecurityGroovyRealm"); try { String securityGroovy = new File(groovyClasspath, "Security.groovy").toURI().toString(); logger.debug("Security.groovy URL: {}", securityGroovy); SecurityGroovyRealm realm = new SecurityGroovyRealm(groovyScriptEngine, securityGroovy, servletContext); LifecycleUtils.init(realm); rsm.setRealm(realm); status = ModuleStatus.STARTED; } catch (Exception e) { logger.error("Security.groovy not found or invalid; installing dummy realm", e); SimpleAccountRealm realm = new SimpleAccountRealm(); LifecycleUtils.init(realm); rsm.setRealm(realm); status = ModuleStatus.FAILED; } }
SecurityClassRealm realm = new SecurityClassRealm(codeBase, "Security", applicationContext); LifecycleUtils.init(realm); rsm.setRealm(realm); status = ModuleStatus.STARTED; } catch (Exception e) { SimpleAccountRealm realm = new SimpleAccountRealm(); LifecycleUtils.init(realm); rsm.setRealm(realm); status = ModuleStatus.FAILED;
private void injectRealms(JSON config, SecurityManager currentManager, InjectionContext manager) throws InvocationTargetException { JSON realmsJSON = config.getJSON("realms"); Iterable beans = manager.resolveBeans(AuthorizingRealm.class); for (Object bean : beans) { Object instance = manager.createContext(bean); AuthorizingRealm realm = AuthorizingRealm.class.cast(manager.getInstance(bean, instance)); JSON realmJSON = realmsJSON.getJSON(realm.getClass().getName()); if (realmJSON != null) { if (realmJSON.get("name") != null) { realm.setName(realmJSON.getString("name")); } Collection<Realm> realms = ((RealmSecurityManager)currentManager).getRealms(); if (realms == null) { ((RealmSecurityManager)currentManager).setRealm(realm); } else { ((RealmSecurityManager)currentManager).getRealms().add(realm); } } } } }