oAuth 1.0 Аутентификация с использованием Karate Framework
Я не вижу примеров или документации, доступной в рамках карате для проверки подлинности 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 ответ
Недавно было добавлено: коммит
Мясо в коде 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