Как включить / отключить аутентификацию Широ?

Есть ли способ включить и отключить аутентификацию Широ в моей службе REST? В настоящее время я использую dropwizard с Широ для моих услуг REST? Также, как я могу подтвердить, что Широ отключен?

У меня также есть файл shiro.ini, но есть ли какие-либо настройки, которые я могу включить для переключения аутентификации shiro?

@Override
protected ShiroConfiguration narrow(T configuration) {
    return configuration.getShiroConfiguration();
}

@Override
protected Filter createFilter(T configuration) {
    IniWebEnvironment shiroEnv = new IniWebEnvironment();
    shiroEnv.setConfigLocations(this.narrow(configuration).iniConfigs());
    shiroEnv.init();

    return new AbstractShiroFilter() {
        public void init() throws Exception {
            Collection<Realm> realms = MyShiroBundle.this.createRealms(configuration);

            DefaultWebSecurityManager webSecurityManager =
                    (DefaultWebSecurityManager)shiroEnv.getWebSecurityManager();

            if (webSecurityManager.getRealms() != null) {
                webSecurityManager.setRealms(mergeRealms(webSecurityManager.getRealms(), realms));
            } else {
                webSecurityManager.setRealms(realms);
            }

            this.setSecurityManager(webSecurityManager);
            this.setFilterChainResolver(shiroEnv.getFilterChainResolver());
        }
    };
}

@Override
protected Collection<Realm> createRealms(T configuration) {
    return mergeRealms(super.createRealms(configuration), Collections.singleton(createJdbcRealm(configuration)));
}

private static Collection<Realm> mergeRealms(Collection<Realm> realms, Collection<Realm> realms2) {
    return ImmutableList.<Realm>builder().addAll(realms).addAll(realms2).build();
}

private static Realm createJdbcRealm(ReferenceDataConfiguration configuration) {
    DataSource ds = configuration.getMyDatabaseDataSourceFactory().build(new MetricRegistry(), "my-shiro");
    JdbcRealm realm = new JdbcRealm();
    realm.setDataSource(ds);
    realm.setPermissionsLookupEnabled(false);
    realm.setCredentialsMatcher(new AllowAllCredentialsMatcher());
    realm.setAuthenticationQuery(
            "select UserId from AppUser where IsActive = 1 and UserId = ?");
    realm.setUserRolesQuery("select Role from UserRoles where UserId = ? and ValidToTime = " + VALID_TIME);
    realm.setPermissionsQuery(
            "select Permission from RolesPermissions where Role = ? and ValidToTime = " + VALID_TIME);
    return realm;
}

0 ответов

Другие вопросы по тегам