Возможно, вы захотите добавить «ttl» => 300 в конструктор WSSecurityToken, поскольку вы используете WSPolicy не с массивом, а с файлом политики.Таким образом, ваш код должен выглядеть следующим образом:
$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
Если вы хотите использовать UsernameToken, тогдадолжны быть установлены опции user, password и passwordType (необязательно).Для TimeStamp должна быть установлена опция ttl.
Некоторая дополнительная информация:
Ваш passwordType - Дайджест, это означает, что получателю нужно, чтобы в заголовке были доступны и wsse: Nonce, и wsu: Created (timestamp).Если вы используете passwordType is 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>
source: http://blog.rampartfaq.com/2009/08/how-to-ask-for-hashed-password-in.html
Примечание: я еще не пробовал (пока).Я никогда не использовал WSO2 Web Services Framework для PHP.