View Issue Details

IDProjectCategoryView StatusLast Update
0004993Talerexchangepublic2017-06-06 12:18
ReporterMarcello Stanisci Assigned ToChristian Grothoff Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
PriorityhighSeveritytweakReproducibilityhave not tried
Status closedResolutionfixed 
Product Versiongit (master) 
Target Version0.3Fixed in Version0.3 
Summary0004993: aggregator needs to authenticate
DescriptionDue to recent changes, the bank's /admin/add/incoming, used to perform
wire transfers from account A to account B, requires username and password
of the client using this API, among the POSTed data.

The aggregator thus must provide the following JSON:

{
  "amount": {"value": x, "fraction": y, "currency": "z"},
  "wtid": "wtid_string",
  "exchange_url": "https://exchange_url",
  "credit_account": n,
  "username": "Exchange",
  "password": ""
}

Yes, for the moment the bank assigns a "" password to the Exchange user,
but that's another (not reported yet) issue.
TagsNo tags attached.

Required notifications

Address or linkRemarkAdded byNotifiedActions

Activities

Christian Grothoff

2017-04-23 18:11

manager   ~0012059

This is incredibly ugly as an authentication mechanism. Can't we at least use something like HTTP digest authentication where the PW is not transmitted in the clear, and where the nonce provides some minimal protection against replay attacks? MHD supports this.

Marcello Stanisci

2017-04-24 09:04

reporter   ~0012060

I'm pretty sure this ugly way came out from some discussion we had. In any case,
note there is no MHD involved, as this API is offered by the bank, and used by
the aggregator, that goes with libcurl.

Christian Grothoff

2017-04-24 09:26

manager   ~0012061

Well, Django and curl also support digest authentication:

https://github.com/juanriaza/django-rest-framework-digestauth

https://curl.haxx.se/libcurl/c/CURLOPT_HTTPAUTH.html

As far as our discussion is concerned, I recall saying that we should authenticate using username/password, but I don't recall discussing a precise specification.

Marcello Stanisci

2017-04-26 09:21

reporter   ~0012068

Last edited: 2017-04-26 09:22

digestauth package is unfortunate - fails hard on installation
(the last commit on the project dates back 2014).
Do we still want this authentication? We can fall back to the
old approach: run the /admin/add/incoming service on some protected interface.

Opinions?

(peel) mstan@tripwire:~$ pip3 install djangorestframework-digestauth
Collecting djangorestframework-digestauth
  Downloading djangorestframework-digestauth-1.1.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-vituz1c9/djangorestframework-digestauth/setup.py", line 52
        print "You probably want to also tag the version now:"
                                                             ^
    SyntaxError: Missing parentheses in call to 'print'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-vituz1c9/djangorestframework-digestauth/

Christian Grothoff

2017-05-04 09:19

manager   ~0012099

Implemented in 27c921c..405859d.

Issue History

Date ModifiedUsernameFieldChange
2017-04-22 22:51Marcello StanisciNew Issue
2017-04-22 22:51Marcello StanisciStatusnew => assigned
2017-04-22 22:51Marcello StanisciAssigned To => Christian Grothoff
2017-04-23 18:11Christian GrothoffNote Added: 0012059
2017-04-24 09:04Marcello StanisciNote Added: 0012060
2017-04-24 09:26Christian GrothoffNote Added: 0012061
2017-04-26 09:21Marcello StanisciNote Added: 0012068
2017-04-26 09:22Marcello StanisciNote Edited: 0012068
2017-05-03 00:19Christian GrothoffPrioritynormal => high
2017-05-03 00:19Christian GrothoffSeverityminor => tweak
2017-05-03 00:19Christian GrothoffProduct Version => git (master)
2017-05-03 00:19Christian GrothoffTarget Version => 0.3
2017-05-04 09:19Christian GrothoffNote Added: 0012099
2017-05-04 09:19Christian GrothoffStatusassigned => informing
2017-05-04 09:19Christian GrothoffResolutionopen => fixed
2017-05-04 09:19Christian GrothoffFixed in Version => 0.3
2017-06-06 12:18Christian GrothoffStatusinforming => closed