Базовая аутентификация для службы WSO2 EI API

Я использую WSO2-EI 6.4.0. Я пробовал эту разработку с помощью ссылки. Это работает для меня. Но мне нужно получить имя пользователя и пароль от другой серверной службы. В этом примере были показаны жестко привязанные имя пользователя и пароль. Я добавил этот код для вашей справки. Пожалуйста, помогите мне получить эти имя пользователя и пароль из файла свойств.

public boolean processSecurity(String credentials) {
        String decodedCredentials = new String(new Base64().decode(credentials.getBytes()));
        String usernName = decodedCredentials.split(":")[0];
        String password = decodedCredentials.split(":")[1];
        if ("admin".equals(username) && "admin".equals(password)) {
            return true;
        } else {
            return false;
        }
}

Я добавил обработчик WSO2 EI, как показано ниже. Мне нужно передать значение из службы поддержки или вызвать другую последовательность и загрузить.

<api context="/test">
    <resource methods="POST">
        <inSequence>
        ................
        </inSequence>
        <outSequence>
        ................
        </outSequence>
    </resource>
    <handlers>        
         <handler class="rezg.ride.common.BasicAuthHandler">
            <property name="cm_password" value="admin"/>
            <property name="cm_userName" value="admin"/>
         </handler>
    </handlers>
</api>

Когда мы запускаем вышеуказанный API, сначала запускаются обработчики, а затем выполняются последовательности входа и выхода. Поэтому мне нужно получить имя пользователя и пароль для вызова Sequence или любого другого метода перед запуском этого BasicAuthHandler.


person Thusitha Indunil    schedule 25.10.2019    source источник


Ответы (1)


Если вам нужно прочитать файл свойств из посредника класса, это просто прямое чтение файла свойств java. См. Следующий пример вызова для чтения файла свойств. В этом случае просто прочтите файл carbon.properties в каталоге conf.

public boolean mediate(MessageContext context) {
        String passwordFileLocation = System.getProperty("conf.location")+"/carbon.properties";
        try (FileInputStream input = new FileInputStream(passwordFileLocation)) {
            Properties prop = new Properties();

            // load a properties file
            prop.load(input);
            log.info("------org.wso2.CipherTransformation : " + prop.getProperty("org.wso2.CipherTransformation"));

        } catch (IOException ex) {
            ex.printStackTrace();
        }
       return true;
    }

Чтобы получить расположение сервера и конфигурацию, во время запуска сервера wso2 задаются системные свойства JAVA. Ниже приведены некоторые из полезных свойств системы.

  • carbon.local.ip
  • углерод. дом
  • conf.location
person Shanaka Sandanayaka    schedule 28.10.2019
comment
Спасибо за помощь. Но мне нужны эти данные с помощью вызова последовательности. Поскольку мне нужны эти данные из серверной службы, это имя пользователя и данные пароля на основе значений запроса. - person Thusitha Indunil; 28.10.2019
comment
Вам нужно было вызвать другую конечную точку HTTP и получить значения? В этом случае для этого можно использовать посредника вызовов [1]. [1] docs.wso2.com/display/EI650/Call+Mediator - person Shanaka Sandanayaka; 29.10.2019
comment
Могу ли я использовать этот посредник вызовов перед вызовом обработчиков? - person Thusitha Indunil; 29.10.2019