0
リモートWebサービスにアクセスしようとしています。このようにカールから良い反応を得ることができています:com.sun.xml.ws.client.ClientTransportException:リクエストにHTTP認証が必要です:無許可
curl -X POST -H "Content-Type: text/xml" -k -H "SOAPAction:getUserActivity" --data @testFile.dat https://esp-int.my.company.com:443/UsageService/13.11
をしかし、Javaからエラーが出ます:
com.sun.xml.ws.client.ClientTransportException: request requires HTTP authentication: Unauthorized
Javaは、このような要求のセキュリティ部分を設定しています
String SECURITY_NAMESPACE = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
QName securityQName = new QName(SECURITY_NAMESPACE, "Security");
SOAPElement security = soapFactory.createElement(securityQName);
QName usernameTokenQName = new QName(SECURITY_NAMESPACE, "UsernameToken");
SOAPElement usernameToken = soapFactory.createElement(usernameTokenQName);
QName usernameQName = new QName(SECURITY_NAMESPACE, "Username");
SOAPElement theUsername = soapFactory.createElement(usernameQName);
theUsername.addTextNode(username);
QName passwordQName = new QName(SECURITY_NAMESPACE, "Password");
SOAPElement thePassword = soapFactory.createElement(passwordQName);
thePassword.addTextNode(password);
usernameToken.addChildElement(theUsername);
usernameToken.addChildElement(thePassword);
security.addChildElement(usernameToken);
usernameとpasswordはtestFile.datのものと同じです。 testFile.dat要求の
セキュリティ一部です:
<wsse:Security 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">
<wsu:Timestamp>
<wsu:Created>2016-02-19T16:36:21Z</wsu:Created>
<wsu:Expires>2016-02-19T16:41:21Z</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken>
<wsse:Username>username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
<wsu:Created>2016-02-19T16:36:21Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
任意の提案ですか?