[Spring] Rop Spring REST风格调用老 报签名不合法

A新绝版 2014-08-15
用的是Spring MVC 框架整合ROP JUnit能把rop跑成功,但是换成Spring REST构建的时候就报错。签名用的是ROPUtils.sign方法,代码如下:

        RestTemplate restTemplate = new RestTemplate(); 
        MultiValueMap<String, String> form = new LinkedMultiValueMap<String, String>(); 
        //指定服务名 
        form.add("method", "user.getSession");
        form.add("appKey", "00001");
       //<--指定客户端应用的key,我们在rop.appSecret.properties 
       //中预定义了两个appKey,服务端可通过实现AppSecretManager 
       //定义自己的appKey管理策略。 
        form.add("v", "1.0"); 
        form.add("sessionId", "SeesionID");//真实系统时,必须是真正的sessionId. 
        form.add("format", "xml"); 
        form.add("locale", "en"); 
 
        form.add("userName", "tomson"); 
        form.add("password", "123456"); 
 
        //对请求参数进行签名,对于"00001" appKey的密钥是"abcdeabcdeabcdeabcdeabcde" 
        String sign = RopUtils.sign(form.toSingleValueMap(),new ArrayList<String>( form.keySet()),  "abcdeabcdeabcdeabcdeabcde"); 
        form.add("sign", sign); 
 
 
        //发送请求,调用服务 
        String response = restTemplate.postForObject("http://localhost:8080/rop/router", form, String.class); 
        System.out.println("response:\n" + response); 


Tomcat打印:
ERROR com.rop.security.DefaultSecurityManager  - 00001的签名不合法,请检查

控制台输出:
response:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error code="25">
    <message>Invalid Signature</message>
    <solution>Signature is invalid, please press the right to request the algorithm of data signature:SHA1(&lt;secret&gt; &lt;paramName1&gt;&lt;paramValue&gt;&lt;secret&gt;), attention parameter list in alphabetical order</solution>
</error>
pingfan520 2014-08-20
password是不是忽略签名的呀,去掉password试试,或者修改LogonRequest的@IgnoreSign
shineer 2014-09-20
同上,password不需要签名,把password放最后试试呢
Global site tag (gtag.js) - Google Analytics