WS-security (usernametoken) для CXF - возможны ли зашифрованные пароли?

Я пытаюсь разобраться с реализацией WS-безопасности CXF (usernametoken). Я сделал все, как сказано на http://cxf.apache.org/docs/ws-security.html . Мой PasswordCallbackHandler, похоже, работает, но меня беспокоит его часть:

    if (pc.getIdentifier().equals("joe")) {
        // set the password on the callback. This will be compared to the
        // password which was sent from the client.
        pc.setPassword("password");
    }

как сказано

Обратите внимание, что до CXF 2.3.x включительно проверка пароля для особого случая пароля в виде простого текста (или любой другой, но неизвестный тип пароля) делегируется классу обратного вызова, см. org.apache.ws.security.processor.UsernameTokenProcessor # handleUsernameToken () метод javadoc проекта WSS4J. В этом случае ServerPasswordCallback должен быть примерно таким:

поэтому до cxf 2.3.x это было сделано так

   if (pc.getIdentifer().equals("joe") {
       if (!pc.getPassword().equals("password")) {
            throw new IOException("wrong password");
       }
    }

Моя проблема: я не хочу использовать pc.setPassword ("plainTextPassword") так как хочу хранить его на любом ресурсе. Этот дизайн до 2.3.x позволил бы мне сделать это, поскольку я мог бы зашифровать его вручную. Есть ли способы установить зашифрованный пароль в обратном вызове или выполнить аутентификацию с помощью токена пользователя для сохраненных зашифрованных паролей?

Я использую cxf 2.5.x

7
задан Jan 19 January 2012 в 12:02
поделиться