2016-10-20 79 views
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> 

任意の提案ですか?

答えて

0

彼らは自分のWebサービス

QName pwdTypeQName = new QName("Type"); 
thePassword.addAttribute(pwdTypeQName, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); 
のエンドポイントを変更したときに、私は、以下の2行を追加する必要がありました
関連する問題