← Back to team overview

dhis2-devs team mailing list archive

Re: API not showing 401 Unauthorized error

 

It's also documented here so if this behavior really has changed and this
is not a bug, we need to change the docs as well:

https://docs.dhis2.org/master/en/developer/html/webapi_
system_resource.html#d0e12069


JIRA issue here:

https://jira.dhis2.org/browse/DHIS2-3519

On Tue, Apr 24, 2018 at 10:05 AM, Morten Olav Hansen <morten@xxxxxxxxx>
wrote:

> I think maybe its related to openldap, there was some issues with our ldap
> configuration a while back
>
> Please file a jira issue for it, and I will have Viet have a look at it
> (at least we can confirm the reason)
>
> --
> Morten Olav Hansen
> Senior Engineer, DHIS 2
> University of Oslo
> http://www.dhis2.org
>
> On Tue, Apr 24, 2018 at 12:21 PM, Jason Pickering <
> jason.p.pickering@xxxxxxxxx> wrote:
>
>> Hi Morten,
>> All of the information is provided in this thread. What both Ranga and I
>> are saying is that when authenticating with basic authentication, and the
>> authentication is not successful the following behavior is seen
>>
>> 1) In versions below 2.27 and below, a 401 response is sent from the
>> server.
>> 2) In versions 2.28 and above, a 302 response is sent from the server.
>>
>> The API tests were developed against 2.27, and it was a 401 response sent
>> by the server with basic authentication was not successful.
>>
>> https://github.com/dhis2/api-tests/blob/master/features/step
>> _definitions/authentication.js#L38
>>
>> Regards,
>> Jason
>>
>>
>> On Tue, Apr 24, 2018 at 4:39 AM, Morten Olav Hansen <morten@xxxxxxxxx>
>> wrote:
>>
>>> In what version did this return a 401? because that sounds like a bug to
>>> me.. if you give me the version number, I can have a look
>>>
>>> --
>>> Morten Olav Hansen
>>> Senior Engineer, DHIS 2
>>> University of Oslo
>>> http://www.dhis2.org
>>>
>>> On Tue, Apr 24, 2018 at 9:38 AM, Morten Olav Hansen <morten@xxxxxxxxx>
>>> wrote:
>>>
>>>> I'm not sure exactly what you mean Jason, this has been like this
>>>> always? Are you saying this behavior has changed? because it should not
>>>> have. To make the browser properly redirect to the login page, it needs to
>>>> send a 302 to forward it.
>>>>
>>>> In 2.28 we introduced the X-Requested-With header which tells DHIS2
>>>> that this request is done by XHR (and not a browser), we can't change the
>>>> default to 401 as it would break things badly.
>>>>
>>>>
>>>> --
>>>> Morten Olav Hansen
>>>> Senior Engineer, DHIS 2
>>>> University of Oslo
>>>> http://www.dhis2.org
>>>>
>>>> On Mon, Apr 23, 2018 at 7:17 PM, Jason Pickering <
>>>> jason.p.pickering@xxxxxxxxx> wrote:
>>>>
>>>>> Hi Bob,
>>>>>
>>>>> Yeah,I am not sure its fine either but what I am trying to get
>>>>> information on is what the expected behavior actually should be. Seems it
>>>>> should not be this though from what you and Ranga are saying.  Just to
>>>>> exclude any possible effect from the reverse proxy, its the same against a
>>>>> localhost:
>>>>>
>>>>> *   Trying 127.0.0.1...
>>>>> * TCP_NODELAY set
>>>>> * Connected to localhost (127.0.0.1) port 8080 (#0)
>>>>> * Server auth using Basic with user 'admin'
>>>>> > GET /api/me HTTP/1.1
>>>>> > Host: localhost:8080
>>>>> > Authorization: Basic YWRtaW46ZGlzdHJpY3Q=
>>>>> > User-Agent: curl/7.53.1
>>>>> > Accept: */*
>>>>> >
>>>>> < HTTP/1.1 302 Found
>>>>> < Server: Apache-Coyote/1.1
>>>>> < X-XSS-Protection: 1; mode=block
>>>>> < X-Frame-Options: SAMEORIGIN
>>>>> < X-Content-Type-Options: nosniff
>>>>> < Location: http://localhost/dhis-web-commons/security/login.action
>>>>> < Content-Length: 0
>>>>> < Date: Mon, 23 Apr 2018 12:15:22 GMT
>>>>>
>>>>>
>>>>> On Mon, Apr 23, 2018 at 11:36 AM, Bob Jolliffe <bobjolliffe@xxxxxxxxx>
>>>>> wrote:
>>>>>
>>>>>> Hi Jason
>>>>>>
>>>>>> I am not sure that this is all fine.  It looks to me like this is a
>>>>>> bug which has slipped in and that the original 401 response is the
>>>>>> correct expected behaviour.  API users using pre-emptive basic
>>>>>> authentication have no good reason to be redirected to the login page
>>>>>> with invalid credentials.
>>>>>>
>>>>>> Regards
>>>>>> Bob
>>>>>>
>>>>>> On 23 April 2018 at 09:46, Jason Pickering <
>>>>>> jason.p.pickering@xxxxxxxxx> wrote:
>>>>>> > Hi Morten,
>>>>>> >
>>>>>> > I am going to persist here, as its still not clear to me what has
>>>>>> changed in
>>>>>> > the API.
>>>>>> >
>>>>>> > Ranga documents that the API behavior has changed when trying to
>>>>>> access
>>>>>> > /api/me with basic authentication. It has changed from a 401 to a
>>>>>> 302. This
>>>>>> > also breaks the API tests
>>>>>> > (https://github.com/dhis2/api-tests/blob/master/features/ste
>>>>>> p_definitions/authentication.js#L38)
>>>>>> > which also expects a 401. This is all fine, but could you provide a
>>>>>> bit more
>>>>>> > context on the change in behavior and whether this is expected?
>>>>>> >
>>>>>> > Regards,
>>>>>> > Jason
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > On Mon, Apr 23, 2018 at 2:53 AM, Morten Olav Hansen <
>>>>>> morten@xxxxxxxxx>
>>>>>> > wrote:
>>>>>> >>
>>>>>> >> Try and set the header "X-Requested-With" to "XMLHttpRequest"
>>>>>> >>
>>>>>> >> --
>>>>>> >> Morten Olav Hansen
>>>>>> >> Senior Engineer, DHIS 2
>>>>>> >> University of Oslo
>>>>>> >> http://www.dhis2.org
>>>>>> >>
>>>>>> >> On Sat, Apr 21, 2018 at 8:19 PM, Rangarirai Matavire <
>>>>>> matavirer@xxxxxxxxx>
>>>>>> >> wrote:
>>>>>> >>>
>>>>>> >>> Thanks Jason,
>>>>>> >>>
>>>>>> >>> In addition, if you add the '-L' option to the 2.28 and 2.29
>>>>>> queries as
>>>>>> >>> follows:
>>>>>> >>>
>>>>>> >>> curl -I -L -u admin:distric -H 'Accept: application/json'
>>>>>> >>> https://play.dhis2.org/2.29/api/me
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> You get a redirect loop which seems infinite until it terminates
>>>>>> in error
>>>>>> >>> as follows:
>>>>>> >>>
>>>>>> >>> HTTP/1.1 302
>>>>>> >>>
>>>>>> >>> Server: nginx/1.4.6 (Ubuntu)
>>>>>> >>>
>>>>>> >>> Date: Sat, 21 Apr 2018 13:13:18 GMT
>>>>>> >>>
>>>>>> >>> Content-Length: 0
>>>>>> >>>
>>>>>> >>> Connection: keep-alive
>>>>>> >>>
>>>>>> >>> X-XSS-Protection: 1; mode=block
>>>>>> >>>
>>>>>> >>> X-Frame-Options: SAMEORIGIN
>>>>>> >>>
>>>>>> >>> X-Content-Type-Options: nosniff
>>>>>> >>>
>>>>>> >>> Location:
>>>>>> >>> https://play.dhis2.org/2.29/dhis-web-commons/security/login.
>>>>>> action
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> HTTP/1.1 302
>>>>>> >>>
>>>>>> >>> Server: nginx/1.4.6 (Ubuntu)
>>>>>> >>>
>>>>>> >>> Date: Sat, 21 Apr 2018 13:13:18 GMT
>>>>>> >>>
>>>>>> >>> Content-Length: 0
>>>>>> >>>
>>>>>> >>> Connection: keep-alive
>>>>>> >>>
>>>>>> >>> X-XSS-Protection: 1; mode=block
>>>>>> >>>
>>>>>> >>> X-Frame-Options: SAMEORIGIN
>>>>>> >>>
>>>>>> >>> X-Content-Type-Options: nosniff
>>>>>> >>>
>>>>>> >>> Location:
>>>>>> >>> https://play.dhis2.org/2.29/dhis-web-commons/security/login.
>>>>>> action
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> HTTP/1.1 302
>>>>>> >>>
>>>>>> >>> Server: nginx/1.4.6 (Ubuntu)
>>>>>> >>>
>>>>>> >>> Date: Sat, 21 Apr 2018 13:13:18 GMT
>>>>>> >>>
>>>>>> >>> Content-Length: 0
>>>>>> >>>
>>>>>> >>> Connection: keep-alive
>>>>>> >>>
>>>>>> >>> X-XSS-Protection: 1; mode=block
>>>>>> >>>
>>>>>> >>> X-Frame-Options: SAMEORIGIN
>>>>>> >>>
>>>>>> >>> X-Content-Type-Options: nosniff
>>>>>> >>>
>>>>>> >>> Location:
>>>>>> >>> https://play.dhis2.org/2.29/dhis-web-commons/security/login.
>>>>>> action
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> HTTP/1.1 302
>>>>>> >>>
>>>>>> >>> Server: nginx/1.4.6 (Ubuntu)
>>>>>> >>>
>>>>>> >>> Date: Sat, 21 Apr 2018 13:13:19 GMT
>>>>>> >>>
>>>>>> >>> Content-Length: 0
>>>>>> >>>
>>>>>> >>> Connection: keep-alive
>>>>>> >>>
>>>>>> >>> X-XSS-Protection: 1; mode=block
>>>>>> >>>
>>>>>> >>> X-Frame-Options: SAMEORIGIN
>>>>>> >>>
>>>>>> >>> X-Content-Type-Options: nosniff
>>>>>> >>>
>>>>>> >>> Location:
>>>>>> >>> https://play.dhis2.org/2.29/dhis-web-commons/security/login.
>>>>>> action
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> HTTP/1.1 302
>>>>>> >>>
>>>>>> >>> Server: nginx/1.4.6 (Ubuntu)
>>>>>> >>>
>>>>>> >>> Date: Sat, 21 Apr 2018 13:13:19 GMT
>>>>>> >>>
>>>>>> >>> Content-Length: 0
>>>>>> >>>
>>>>>> >>> Connection: keep-alive
>>>>>> >>>
>>>>>> >>> X-XSS-Protection: 1; mode=block
>>>>>> >>>
>>>>>> >>> X-Frame-Options: SAMEORIGIN
>>>>>> >>>
>>>>>> >>> X-Content-Type-Options: nosniff
>>>>>> >>>
>>>>>> >>> Location:
>>>>>> >>> https://play.dhis2.org/2.29/dhis-web-commons/security/login.
>>>>>> action
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> curl: (47) SSLRead() return error -9806
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> This causes bug in applications that access the api for
>>>>>> authentication
>>>>>> >>> and I can also see how this can be used to diminish system
>>>>>> performance in
>>>>>> >>> general.
>>>>>> >>>
>>>>>> >>> Regards,
>>>>>> >>>
>>>>>> >>> Ranga
>>>>>> >>>
>>>>>> >>> On Sat, Apr 21, 2018 at 8:51 AM, Jason Pickering
>>>>>> >>> <jason.p.pickering@xxxxxxxxx> wrote:
>>>>>> >>>>
>>>>>> >>>> Just to try and make it a bit more clear Morten, I think this is
>>>>>> the
>>>>>> >>>> issue Rangarai is asking about is  below:
>>>>>> >>>>
>>>>>> >>>> In 2.29 and 2.28, an unauthorized username/password returns a
>>>>>> 302.
>>>>>> >>>>
>>>>>> >>>> curl -I -u admin:distric -H 'Accept: application/json'
>>>>>> >>>> https://play.dhis2.org/2.29/api/me
>>>>>> >>>> HTTP/1.1 302
>>>>>> >>>> Server: nginx/1.4.6 (Ubuntu)
>>>>>> >>>> Date: Sat, 21 Apr 2018 06:44:10 GMT
>>>>>> >>>> Content-Length: 0
>>>>>> >>>> Connection: keep-alive
>>>>>> >>>> X-XSS-Protection: 1; mode=block
>>>>>> >>>> X-Frame-Options: SAMEORIGIN
>>>>>> >>>> X-Content-Type-Options: nosniff
>>>>>> >>>> Location:
>>>>>> >>>> https://play.dhis2.org/2.29/dhis-web-commons/security/login.
>>>>>> action
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> In 2.27, this same request returns a 401.
>>>>>> >>>>
>>>>>> >>>> curl -I -u admin:distric -H 'Accept: application/json'
>>>>>> >>>> https://play.dhis2.org/2.27/api/me
>>>>>> >>>> HTTP/1.1 401
>>>>>> >>>> Server: nginx/1.4.6 (Ubuntu)
>>>>>> >>>> Date: Sat, 21 Apr 2018 06:44:27 GMT
>>>>>> >>>> Content-Type: text/html;charset=utf-8
>>>>>> >>>> Content-Length: 1071
>>>>>> >>>> Connection: keep-alive
>>>>>> >>>> X-XSS-Protection: 1; mode=block
>>>>>> >>>> X-Frame-Options: SAMEORIGIN
>>>>>> >>>> X-Content-Type-Options: nosniff
>>>>>> >>>> Set-Cookie: JSESSIONID=05596EBFC26A7C1843D298E98619C7FB;
>>>>>> Path=/2.27;
>>>>>> >>>> HttpOnly
>>>>>> >>>> WWW-Authenticate: Basic realm="DHIS2"
>>>>>> >>>> Content-Language: en
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> On Fri, Apr 20, 2018 at 1:40 PM, Rangarirai Matavire
>>>>>> >>>> <matavirer@xxxxxxxxx> wrote:
>>>>>> >>>>>
>>>>>> >>>>> Hi Morten,
>>>>>> >>>>>
>>>>>> >>>>> The password is set wrong deliberately so as to get a 401 or
>>>>>> other
>>>>>> >>>>> response. The problem is when you set the wrong password or
>>>>>> username you get
>>>>>> >>>>> endless redirects from the API.
>>>>>> >>>>>
>>>>>> >>>>> Regards,
>>>>>> >>>>>
>>>>>> >>>>>
>>>>>> >>>>> On Fri, Apr 20, 2018 at 1:24 PM, Morten Olav Hansen <
>>>>>> morten@xxxxxxxxx>
>>>>>> >>>>> wrote:
>>>>>> >>>>>>
>>>>>> >>>>>> It should be district, not distric... but also people keep
>>>>>> changing
>>>>>> >>>>>> our internal passwords (our database resets every 24 hour)
>>>>>> >>>>>>
>>>>>> >>>>>> --
>>>>>> >>>>>> Morten Olav Hansen
>>>>>> >>>>>> Senior Engineer, DHIS 2
>>>>>> >>>>>> University of Oslo
>>>>>> >>>>>> http://www.dhis2.org
>>>>>> >>>>>>
>>>>>> >>>>>> On Fri, Apr 20, 2018 at 12:09 PM, Rangarirai Matavire
>>>>>> >>>>>> <matavirer@xxxxxxxxx> wrote:
>>>>>> >>>>>>>
>>>>>> >>>>>>> By the way, its not just the error response code that is
>>>>>> worrying,
>>>>>> >>>>>>> but also the loop of redirects that starts, this makes it
>>>>>> difficult to
>>>>>> >>>>>>> handle the response for an http client. To see this loop of
>>>>>> redirects, you
>>>>>> >>>>>>> can add -L to curl as below.
>>>>>> >>>>>>>
>>>>>> >>>>>>> curl -I -L -u admin:distric -H 'Accept: application/json'
>>>>>> >>>>>>> https://play.dhis2.org/2.28/api/me
>>>>>> >>>>>>>
>>>>>> >>>>>>>
>>>>>> >>>>>>> I think this behaviour should be corrected as it may lead to
>>>>>> >>>>>>> unexpected behaviour of apps.
>>>>>> >>>>>>>
>>>>>> >>>>>>> Regards
>>>>>> >>>>>>>
>>>>>> >>>>>>> On Wed, Apr 18, 2018 at 11:10 PM, Rangarirai Matavire
>>>>>> >>>>>>> <matavirer@xxxxxxxxx> wrote:
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> Hi Devs,
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> I am wondering whether the behaviour I am seeing is a bug or
>>>>>> >>>>>>>> something to be expected due to some change.
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> When I run the following curl command:
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> curl -I -u admin:distric -H 'Accept: application/json'
>>>>>> >>>>>>>> https://play.dhis2.org/2.29/api/me
>>>>>> >>>>>>>>
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> I get an HTTP 302 response. Note that I have deliberately
>>>>>> set the
>>>>>> >>>>>>>> password wrong so I can mock a 401 unauthorized response. I
>>>>>> get the same
>>>>>> >>>>>>>> response when I run the command on version 2.28. However, as
>>>>>> expected, when
>>>>>> >>>>>>>> I run it on 2.27, 2.26 etc I get a 401 HTTP response.
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> I hope someone can assist.
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> Regards,
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> Ranga
>>>>>> >>>>>>>
>>>>>> >>>>>>>
>>>>>> >>>>>>>
>>>>>> >>>>>>> _______________________________________________
>>>>>> >>>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>> >>>>>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>>>> >>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>> >>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>> >>>>>>>
>>>>>> >>>>>>
>>>>>> >>>>>
>>>>>> >>>>>
>>>>>> >>>>> _______________________________________________
>>>>>> >>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>> >>>>> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>>>> >>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>> >>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>> >>>>>
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> --
>>>>>> >>>> Jason P. Pickering
>>>>>> >>>> email: jason.p.pickering@xxxxxxxxx
>>>>>> >>>> tel:+46764147049
>>>>>> >>>
>>>>>> >>>
>>>>>> >>
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > --
>>>>>> > Jason P. Pickering
>>>>>> > email: jason.p.pickering@xxxxxxxxx
>>>>>> > tel:+46764147049
>>>>>> >
>>>>>> > _______________________________________________
>>>>>> > Mailing list: https://launchpad.net/~dhis2-devs
>>>>>> > Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
>>>>>> > Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>> > More help   : https://help.launchpad.net/ListHelp
>>>>>> >
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Jason P. Pickering
>>>>> email: jason.p.pickering@xxxxxxxxx
>>>>> tel:+46764147049
>>>>>
>>>>
>>>>
>>>
>>
>>
>> --
>> Jason P. Pickering
>> email: jason.p.pickering@xxxxxxxxx
>> tel:+46764147049
>>
>
>


-- 
Jason P. Pickering
email: jason.p.pickering@xxxxxxxxx
tel:+46764147049

References