使用空手道框架的oAuth 1.0身份验证

时间:2018-10-15 20:26:20

标签: oauth karate

我看不到空手道框架中提供用于0auth 1.0身份验证测试的示例或文档。 我在标题中提供了以下授权问题和面临的问题。

Given url 'https://api.twitter.com/1.1/statuses/update.json'
And header Content-Type = 'application/json'
And header Authorization = 'OAuth oauth_consumer_key="********",oauth_consumer_Secret="**********",oauth_token="********",oauth_token_secret="*********"'
And form field status = 'I am tweeting using karate'
When method post
Then status 201

1 个答案:

答案 0 :(得分:0)

最近添加了一个:commit

肉在Java代码中:

package demo.oauth;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import static org.apache.commons.codec.digest.DigestUtils.md5Hex;
import static org.apache.commons.codec.digest.DigestUtils.sha256Hex;

public class Signer {

public static void sign(String token, Map<String, String> params) {
        List<String> list = new ArrayList();
        String tokenClientSlat = "";
        for (String key : params.keySet()) {
            if (key.equals("token_client_salt")) {
                tokenClientSlat = params.get(key);
            }
            String paramString = key + "=" + params.get(key);
            list.add(paramString);
        }
        Collections.sort(list);
        StringBuilder sb = new StringBuilder();
        for (String s : list) {
            sb.append(s);
        }
        sb.append(token);
        String sig = md5Hex(sb.toString());
        String tokenSig = sha256Hex(sig + tokenClientSlat);
        params.put("sig", sig);
        params.put("__NStokensig", tokenSig);
    }        
}

然后是功能:

* def Signer = Java.type('demo.oauth.Signer')    
* def params =
"""
{ 
  'userId': '399645532', 
  'os':'android', 
  'client_key': '3c2cd3f3',
  'token': '141a649988c946ae9b5356049c316c5d-838424771',
  'token_client_salt': 'd340a54c43d5642e21289f7ede858995'
}
"""
* eval Signer.sign('382700b563f4', params)
* path 'echo'
* form fields params
* method post
* status 200