Stiamo provando a eseguire un'implementazione di sicurezza nei nostri servizi Web JAX e stiamo passando l'UserName e la Password nell'intestazione come di seguito.Recupero dell'intestazione del sapone sul lato server JAXWS
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken wsu:Id="Id-8zvykuwmK8yg6dxn3632nQJB" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>gears_user</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">##########</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
In Java Stiamo provando il recuperare il nome utente e la password, ma non siamo sicuri come farlo come, la sua parte di sapone Intestazione e non abbiamo recuperate le informazioni di intestazione prima.
.....
@Resource
WebServiceContext wsctx;
public ServiceAvailabilityResponseType inquireGeographicEligibility(ServiceAvailabilityRequestType inquireGeographicEligibilityRequest)
throws WSException
{
HeaderList hl=(HeaderList)wsctx.getMessageContext().get(JAXWSProperties.INBOUND_HEADER_LIST_PROPERTY);
QName security = new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"Security");
Header hd = hl.get(security, false);
QName userName = new QName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"Username");
try
{
System.out.println(hd.readHeader());
System.out.println(hd.getAttribute(userName));
}catch (Exception e) {
System.out.println(e.getMessage());
}
}
che stiamo cercando di fare come sopra e ottenere gli elementi di intestazione, ma la sua non ci restituire il valore. Sarà gradito qualsiasi aiuto sul modo di recuperare Username e Password.
Ho svalutato questa risposta, ma poi ho capito che non funziona in ogni caso. Ora ho un validatore che implementa 'PasswordValidationCallback.PasswordValidator', e in questo caso' header.examineAllHeaderElements() 'restituisce un interator vuoto, come se non ci fossero nodi nell'intestazione,' getChildElements() 'fa lo stesso. Perché? Il validatore in qualche modo cancella l'intestazione dalla richiesta? – apcuk