2012-02-15 3 views
1

WSO2의 PHP 용 웹 서비스 프레임 워크를 사용하여 SOAP 요청을 보호하려고합니다.WS SOAP 보안 헤더 오류

Missing wsse:Security header in request 

가 어떻게 위의 요청에 wsse:Security 헤더를 설정해야합니다

$reqPayloadString = <<<XML 
     <echo> 
     <echoRequest>TEST</echoRequest> 
     </echo> 
XML; 


$reqMessage = new WSMessage($reqPayloadString, 
           array("to" => "http://localhost/service/echo", 
             "action" => "echo")); 

$sec_token = new WSSecurityToken(array("user" => "myusername", 
             "password" => "mypassword", 
             "passwordType" => "Digest")); 

$client = new WSClient(array("useWSA" => TRUE, 
          "policy" => new WSPolicy(file_get_contents("policy.xml")), 
          "securityToken" => $sec_token)); 

$resMessage = $client->request($reqMessage); 

는 그러나, 나는 다음과 같은 오류가 나타납니다 여기에

내 요청입니다?

답변

0

나는 이것을 유감스럽게 해결할 수 없었다. 나는 그의 답변에서 @Peter가 제안한 팁을 시도했다.

이제 보안 요청을 위해 PHP/Java Bridge과 기본 Java 클래스를 사용하고 있습니다.

1

배열과 함께 WSPolicy를 사용하지 않고 정책 파일을 사용하므로 WSSecurityToken 생성자에 "ttl"=> 300을 추가 할 수 있습니다. 그래서 코드는 다음과 비슷해야합니다

$sec_token = new WSSecurityToken(array("user" => "myusername", 
             "password" => "mypassword", 
             "passwordType" => "Digest", 
             "ttl" => 300)); 

은 적어도이 무엇인지 매뉴얼에 장 8.1 : http://wso2.org/project/wsf/php/2.1.0/docs/security_manual.html#1

If you want to have the UsernameToken, then the user, password and passwordType (optional) options must be set. For TimeStamp, the ttl option must be set.

몇 가지 추가 정보 :

귀하의 passwordType 다이제스트이며,이 수단 수신자가 wsse : Nonce 및 wsu : 헤더에서 사용할 수 있도록 작성 (타임 스탬프)해야합니다. passwordType이 Text 인 경우,이 경우에 언급 된 두 요소가 필요하지 않으므로 ttl을 지정할 필요가 없습니다.

PHP WSSecurityToken 클래스가 wsse : Nonce를 추가하는지 여부는 확실하지 않습니다. 제공된 정책에 따라 처리 될 수 있습니다. 나는 (아직)을 시도하지 않은 :

<sp:SupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> 
<wsp:Policy> 
<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> 
<wsp:Policy> 
<sp:HashPassword/> 
</wsp:Policy> 
</sp:UsernameToken> 
</wsp:Policy> 
</sp:SupportingTokens> 

소스 : http://blog.rampartfaq.com/2009/08/how-to-ask-for-hashed-password-in.html

참고

어쨌든, 당신의 정책은 다이제스트의 경우에는 다음과 같이 보일 것이다. 필자는 WSO2의 PHP 용 웹 서비스 프레임 워크를 사용하지 않았습니다.

+1

고맙습니다. 좋은 반응 +1. 그러나 여전히 동일한 오류가 발생합니다. 현재 PHP/Java Bridge와 같은 대안을 찾고 WS02 프레임 워크의 필요성을 제거하고 원시 Java를 사용하여 요청을 보호합니다. 다시 한번 감사드립니다. – Kit