Я столкнулся с этой проблемой, и я решил ее в своей работе ...
этот тип сообщения устанавливается, когда на вашем сервере нет обработчика для обеспечения безопасности. xsdd
в моем случае реализация xsdd была построена на оси 1.4 с использованием java.rmi и javax.xml.rpc.Service
если это ваш случай, у вас будет 2 xsdd для сервера (ns декларация вашего сервиса) и deploy.xsdd для других настроек вашего звонка.
сначала я добавляю к своей нс: операция это ссылки на oasis security, после этого я добавляю к моей службе поток запросов
должно быть что-то вроде этого
<ns1:service name="YOUR SERVICE"> <!-- wss_username_token_over_ssl --> <requestFlow>
<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
<parameter name="passwordCallbackClass" value=" YOUR PASSWORD HANDLER JAVA PATH LOCATION"/>
<parameter name="action" value="UsernameToken"/>
</handler> </requestFlow>
<ns1:operation name="YOUR OPERATION NAME"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
.... other declarations ... />
в зависимости от уровня безопасности, который вы создаете, в вашем passwordCallbackClassHandler вы должны / или не проверять пользователя и пароль
обработчик должен выглядеть примерно так
открытый класс PWCallback реализует CallbackHandler {
private static final byte[] key = {
(byte)0x31, (byte)0xfd, (byte)0xcb, (byte)0xda,
(byte)0xfb, (byte)0xcd, (byte)0x6b, (byte)0xa8,
(byte)0xe6, (byte)0x19, (byte)0xa7, (byte)0xbf,
(byte)0x51, (byte)0xf7, (byte)0xc7, (byte)0x3e,
(byte)0x80, (byte)0xae, (byte)0x98, (byte)0x51,
(byte)0xc8, (byte)0x51, (byte)0x34, (byte)0x04,
};
public void handle(Callback[] callbacks)
throws IOException, UnsupportedCallbackException {
System.out.println("DENTROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO");
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof WSPasswordCallback) {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
/*
* here call a function/method to lookup the password for
* the given identifier (e.g. a user name or keystore alias)
* e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier))
* for testing we supply a fixed name/fixed key here.
*/
if (pc.getUsage() == WSPasswordCallback.KEY_NAME) {
pc.setKey(key);
}
else {
pc.setPassword("security");
}
} else {
throw new UnsupportedCallbackException(
callbacks[i], "Unrecognized Callback");
}
}
}
* *} Тысяча двадцать-один
надеюсь, это поможет вам
С уважением