есть ли возможность доступа к ConfigurationAPI внутри расширенного класса UserAuthenticationSecurityCheck - PullRequest
0 голосов
/ 13 июня 2018

адаптер UserAuthenticationSecurityCheck, где мы ввели некоторые свойства в файле adapter.xml за пределами securityCheckDefinition.Что я могу настроить на вкладке «Адаптер -> Конфигурация» в консоли mfp.

Мы пытаемся получить доступ к значению конфигурации через ConfigurationAPI с помощью импорта import com.ibm.mfp.adapter.api.ConfigurationAPI внутриUserAuthenticationSecurityCheck расширенный класс.

Но мы получаем исключение нулевого указателя во время этого процесса.Я могу получить к ним доступ внутри класса java-адаптера через ConfigurationAPI, но не внутри класса UserAuthenticationSecurityCheck безопасности.

Требуется получить доступ к свойствам изображения ниже в расширенном классе UserAuthenticationSecurityCheck.

enter image description here

public class userSecurityCheck extends UserAuthenticationSecurityCheck {


    @Context
    ConfigurationAPI configurationAPI;


    @Override
    protected boolean validateCredentials(Map<String, Object> credentials){


        String instancename = credentials.get("instancename").toString();
        // java null pointer exception is happening at the below line
        String httpUrl = configurationAPI.getPropertyValue(instancename);



    }


}

1 Ответ

0 голосов
/ 09 августа 2018

Существует действительно способ указать настраиваемые свойства для варианта «Проверка безопасности» адаптера, и он отличается от обычного типа адаптера.Это задокументировано здесь .Я подтвердил, что этот подход работает.В документации пропущено несколько ключевых элементов, таких как имена пакетов, поэтому ниже приведен очень простой пример кода для демонстрации:

UserAuth.java:

public class UserAuth extends UserAuthenticationSecurityCheck {
  @Override
  protected boolean validateCredentials(Map<String, Object> credentials) {
    String test_property = ((UserAuthSecurityCheckConfig) this.config).test_property;
    LOG.warning("auth test_property=" + test_property);
    return true;
  }

  @Override
  public SecurityCheckConfiguration createConfiguration(Properties properties) {
      return new UserAuthSecurityCheckConfig(properties);
  }
}

UserAuthSecurityCheckConfig.java:

import java.util.Properties;
import com.ibm.mfp.security.checks.base.UserAuthenticationSecurityCheckConfig;

public class UserAuthSecurityCheckConfig extends UserAuthenticationSecurityCheckConfig {
    public String test_property;

    public UserAuthSecurityCheckConfig(Properties properties) {
        super(properties);
        this.test_property = this.getStringProperty("test_property", properties, "defaultValueInCode");
    }
}

adapter.xml:

<securityCheckDefinition name="UserLogin" class="com.xyz.UserAuth">
    <property name="test_property" displayName="Test Property Auth" defaultValue="foo_default_in_xml"  />
</securityCheckDefinition>
...