electrum wallet jsonRPC authentication

拈花ヽ惹草 提交于 2019-12-11 02:32:33

问题


i am trying to use electrum rpc , it is giving me authentication error. i have tried user pass via Basic Authentication on Linux bash and via php but non of them works.

My php code was working fine before plectrum vulnerability upgrade. also i have tried curl on bash , but i get same error

Error code explanation: 401 - No permission -- see authorization schemes.

I have tried

curl --data-binary '{"id":"curltext","method":"listaddresses","params":{"funded":true}}' http://test:abc@127.0.0.1:7777

and

curl --data-binary '{"id":"curltext","method":"listaddresses","params":{"funded":true}}' http://127.0.0.1:7777

and

curl -utest http://127.0.0.1:7777

but electrum server never accepts any authentication.

I have also tried by disabling the rpc authentication , but still I get the same error


回答1:


You have to use basic authentication using the appropriate curl parameter.

Quoting the relevant part of the manual:

6.1 Basic Authentication

HTTP Authentication is the ability to tell the server your username and password so that it can verify that you're allowed to do the request you're doing. The Basic authentication used in HTTP (which is the type curl uses by default) is plain text based, which means it sends username and password only slightly obfuscated, but still fully readable by anyone that sniffs on the network between you and the remote server.

To tell curl to use a user and password for authentication:

curl --user name:password http://www.example.com

So, in a terminal, your command should start somewhat like this:

curl --user RPCusername:RPCpassword http://127.0.0.1:7777 …

And (as a bonus) in PHP, it would look like this:

<?php
$RPCusername = 'test';
$RPCpassword = 'abc';
$somefundedBTCaddress = '1FeexV6bAHb8ybZjqQMjJrcCrHGW9sb6uF';

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $RPCusername.':'.$RPCpassword);
curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1:7777'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"id":"curltext","method":"getaddressbalance","params":{"address":"'.$somefundedBTCaddress.'"}}'); 
curl_setopt($ch, CURLOPT_POST, 1);

$headers = array(); 
$headers[] = "Content-Type: application/x-www-form-urlencoded"; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch); 
if (curl_errno($ch)) 
{ 
    echo 'Error:'.curl_error($ch).PHP_EOL; 
} 
else 
{
    $result =json_decode($result,true);
    echo($result['result']['confirmed'].PHP_EOL);
    echo($result['result']['unconfirmed'].PHP_EOL);
}
curl_close ($ch);
exit();



回答2:


You can also use an other schema of passing user and password to curl, for example:

curl --data-binary '{"params": {"amount": 0.0021651117760957575, "expiration": 1212}, "method": "addrequest", "id": "c6cf406e-0c4b-4eb7-b3d2-1712a4d3a553"}' http://user:LMt2FDyG-c543kc23H-NA==@10.78.1.1:7049


来源:https://stackoverflow.com/questions/48976101/electrum-wallet-jsonrpc-authentication

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!