WSO2 Identity Server 5.7.0 - Запрос политики паролей для минимального срока действия пароля - PullRequest
0 голосов
/ 06 декабря 2018

Я подробно изучил все параметры политики паролей, которые были добавлены в последнюю версию WSO2 Identity Server (5.7.0).В то время как значительное улучшение по сравнению с версиями всего год назад, мой клиент все еще не удовлетворен одной проблемой.Используя средство проверки подлинности политики паролей, похоже, что мы можем заставить пользователя менять свой пароль каждые столько дней, а использование параметров политики, которые теперь используются по умолчанию, может обеспечить выполнение требования к истории паролей любого числа по нашему вкусу.Тем не менее, параметр истории может быть преодолен определенным пользователем, просто изменив свой пароль столько раз, сколько требуется для быстрого старения его пароля в одной настройке - если не было требуемого «минимального срока действия пароля», который не позволил бы ему сделать это.Все доступные параметры в журнале «История», «Шаблоны» и «Средство проверки пароля» не решают эту проблему.В этой ссылке из защиты от угроз безопасности Windows 10 рассматривается действительность этой самой проблемы: https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/minimum-password-age.

Можно ли теперь установить минимальный возраст в WSO2 IS?Если нет, разве это не должно быть включено в политику паролей в опции истории?

1 Ответ

0 голосов
/ 08 декабря 2018

Эта функция в настоящее время недоступна в продукте WSO2 IS, но мы можем легко выполнить это требование, используя расширения, доступные в основной системе управления пользователями.Доступная функция история паролей имеет историю изменения пароля dateTime, мы можем использовать эти данные для выполнения этого требования.

  • Создание нового Identity Connector для настройки минимального срока действия пароля и обработчика абстрактных событий для обеспечения проверки во время события изменения пароля.

    открытый класс PasswordMinAgeValidationHandler расширяет AbstractEventHandler, реализует IdentityConnectorConfig {

    private static final Log log = LogFactory.getLog(PasswordMinAgeValidationHandler.class);
    
    @Override
    public void handleEvent(Event event) throws IdentityEventException {
    
        // Validate the password age with min age configured
    }
    
    @Override
    public String getName() {
        return "passwordMinAge";
    }
    
    @Override
    public String getFriendlyName() {
        return "Password Minimum Age";
    }
    
    @Override
    public String getCategory() {
        return "Password Policies";
    }
    
    @Override
    public Map<String, String> getPropertyNameMapping() {
        Map<String, String> nameMapping = new HashMap<>();
        nameMapping.put(PasswordMinAgeConstants.PM_MIN_AGE_ENABLE, "Enable Password Minimum Age Feature");
        nameMapping.put(PasswordMinAgeConstants.PW_MIN_AGE_COUNT, "Password Minimum Age (Days)");
        return nameMapping;
    }
    
    @Override
    public void init(InitConfig configuration) throws IdentityRuntimeException {
        super.init(configuration);
        IdentityPasswordMinAgeServiceDataHolder.getInstance().getBundleContext().registerService
                (IdentityConnectorConfig.class.getName(), this, null);
    }
    
    public Properties getDefaultPropertyValues(String tenantDomain) throws IdentityGovernanceException {
    
        Map<String, String> defaultProperties = new HashMap<>();
        defaultProperties.put(PasswordMinAgeConstants.PM_MIN_AGE_ENABLE, configs.getModuleProperties()
                .getProperty(PasswordMinAgeConstants.PM_MIN_AGE_ENABLE));
        defaultProperties.put(PasswordMinAgeConstants.PW_MIN_AGE_COUNT, configs.getModuleProperties()
                .getProperty(PasswordMinAgeConstants.PM_MIN_AGE_ENABLE));
        Properties properties = new Properties();
        properties.putAll(defaultProperties);
        return properties;
    }
    

    }

  • Сделайте этот класс OSGi-пакетом и зарегистрируйте PasswordMinAgeValidationHandler как AbstractEventHandler

    protected void activate(ComponentContext context) {
       try {
        BundleContext bundleContext = context.getBundleContext();
        IdentityPasswordMinAgeServiceDataHolder.getInstance().setBundleContext(bundleContext);
    
        PasswordMinAgeValidationHandler handler = new PasswordMinAgeValidationHandler();
        context.getBundleContext().registerService(AbstractEventHandler.class.getName(), handler, null);
    
    
    } catch (Exception e) {
        log.error("Error while activating identity governance password min age component.", e);
    }
    

    }

  • Разверните jar в IS_HOME / repository / components / dropins
  • Добавьте следующие конфигурации в IS_HOME / repository / conf / identity / identity-event.properties

    module.name.13=passwordMinAge passwordMinAge.subscription.1=PRE_UPDATE_CREDENTIAL passwordMinAge.subscription.2=PRE_UPDATE_CREDENTIAL_BY_ADMIN passwordMinAge.enable=false passwordMinAge.count=5

  • Перезапустите сервер IS

  • В конфигурации Resident Identity Provider -> Политики паролей включите Password History и Password Minimum Age функций.

enter image description here

Здесь вы можете найти полный исходный код

...