Piszę program który jest klientem usługi WebService. W programie każdy użytkownik będzie miał własny identyfikator do podpisywania koperty (ENVELOPE). Więc zamiast statycznej autentykacji uzyłem dynamicznej:
<?xml version="1.0" encoding="utf-8"?><wsdl:...........</wsdl:service>
<wsp1:Policy wsu:Id="UslugaObslugiPakietowPolicy">
<wsp1:ExactlyOne>
<wsp1:All>
<sc:CallbackHandlerConfiguration wspp:visibility="private">
<sc:CallbackHandler name="usernameHandler" classname="pl.callbackhadler.UsernameAndPasswordCallbackHandler"/>
<sc:CallbackHandler name="passwordHandler" classname="pl.callbackhadler.UsernameAndPasswordCallbackHandler"/>
</sc:CallbackHandlerConfiguration>
</wsp1:All>
</wsp1:ExactlyOne>
</wsp1:Policy>
</wsdl:definitions>
a klasa CallbakHadlera jest następująca:
public class UsernameAndPasswordCallbackHandler implements CallbackHandler {
@Override
public void handle(Callback[] callbacks)
throws IOException, UnsupportedCallbackException {
for (int i = 0; i < callbacks.length; i++) {
if (callbacks[i] instanceof TextOutputCallback) {
// display the message according to the specified type
TextOutputCallback toc = (TextOutputCallback) callbacks[i];
switch (toc.getMessageType()) {
case TextOutputCallback.INFORMATION:
System.out.println(toc.getMessage());
break;
case TextOutputCallback.ERROR:
System.out.println("ERROR: " + toc.getMessage());
break;
case TextOutputCallback.WARNING:
System.out.println("WARNING: " + toc.getMessage());
break;
default:
throw new IOException("Unsupported message type: "
+ toc.getMessageType());
}
} else if (callbacks[i] instanceof NameCallback) {
NameCallback nc = (NameCallback) callbacks[i];
nc.setName("user");
} else if (callbacks[i] instanceof PasswordCallback) {
PasswordCallback pc = (PasswordCallback) callbacks[i];
pc.setPassword("password".toCharArray());
} else {
throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
}
}
}
}
Pytanie brzmi jak teraz do pól user i password pobrać dane zalogowanego użytkownika do aplikacji webowej np przechowywanej w zmiennych sesji?