запустить запрос на завивание с базовой аутентификацией

Я пытаюсь запустить запрос на завивку, но получаю неавторизованный ответ, который, как я боюсь, основан на настройке моего сервера.

Запрос следующий:

curl  -X PUT -v -u 'admin:adminpwd' https://myexampledomain.com/cloud/ocs/v1.php/cloud/users/pinuccio -d 'key=display' -d 'value=ajeje' -H "OCS-APIRequest: true"

Ответ, который я получаю, является неавторизованным (401). Это подробный журнал:

*   Trying 127.0.1.1...
* TCP_NODELAY set
* Connected to myexampledomain.com (127.0.1.1) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Unknown (8):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Client hello (1):
* TLSv1.3 (OUT), TLS Unknown, Certificate Status (22):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=myexampledomain.com
*  start date: May  1 17:18:35 2020 GMT
*  expire date: Jul 30 17:18:35 2020 GMT
*  subjectAltName: host "myexampledomain.com" matched cert's "myexampledomain.com"
*  issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
*  SSL certificate verify ok.
* Server auth using Basic with user 'admin'
* TLSv1.3 (OUT), TLS Unknown, Unknown (23):
> PUT /cloud/ocs/v1.php/cloud/users/pinuccio HTTP/1.1
> Host: mydomain.com
> Authorization: Basic YWRtaW46QzRsMW0zcjA=
> User-Agent: curl/7.58.0
> Accept: */*
> OCS-APIRequest: true
> Content-Length: 23
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 23 out of 23 bytes
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS Unknown, Unknown (23):
< HTTP/1.1 401 Unauthorized
< Date: Tue, 30 Jun 2020 14:07:28 GMT
< Server: Apache/2.4.29 (Ubuntu)
< Strict-Transport-Security: max-age=15552000; includeSubDomains
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< X-Robots-Tag: none
< X-Frame-Options: SAMEORIGIN
< X-Download-Options: noopen
< X-Permitted-Cross-Domain-Policies: none
< Set-Cookie: oczw6f5q1725=a8va678tu6ifnku9qqb8ad6g9r; path=/cloud; secure; HttpOnly
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< Set-Cookie: oc_sessionPassphrase=aX2nBbeRkkjX2AOsL9pWoxCcB5vvtdiR4wT9UtOAxfM61oVxCX5LvX02eZkNSfqUPekCdo20A65%2BplZBgHQo%2FyaVQdiQ42d7O4TAqyWpsx8f3gBAeNV%2B2EphYBGNxLmW; path=/cloud; secure; HttpOnly
< Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *
< Set-Cookie: oczw6f5q1725=0h8mkv831pq6aukvoivr7gf5t2; path=/cloud; secure; HttpOnly
< Set-Cookie: cookie_test=test; expires=Tue, 30-Jun-2020 15:07:28 GMT; Max-Age=3600
< Set-Cookie: oc_username=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/cloud; secure; HttpOnly
< Set-Cookie: oc_token=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/cloud; secure; HttpOnly
< Set-Cookie: oc_remember_login=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/cloud; secure; HttpOnly
< Set-Cookie: oc_username=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/cloud/; secure; HttpOnly
< Set-Cookie: oc_token=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/cloud/; secure; HttpOnly
< Set-Cookie: oc_remember_login=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/cloud/; secure; HttpOnly
< Set-Cookie: oczw6f5q1725=pi2oc8f3cgut57emv2ikflsooq; path=/cloud; secure; HttpOnly
< Set-Cookie: oczw6f5q1725=4hhk94mvb1l6j6re7qi9v68kjo; path=/cloud; secure; HttpOnly
* Authentication problem. Ignoring this.
< WWW-Authenticate: Basic realm="Authorisation Required"
< Access-Control-Allow-Origin: https://myexampledomain.com/cloud
< Content-Length: 132
< Content-Type: text/xml; charset=UTF-8
< 
* TLSv1.3 (IN), TLS Unknown, Unknown (23):

Я не могу понять из журнала, где он терпит неудачу. Может ли кто-нибудь помочь мне понять? Я запускаю запрос непосредственно с сервера, на котором работает API. Я также добавил разрешение CORS для mydomain.com/cloud, но ничего не изменилось.

В том же API я могу выполнить запрос POST без базовой аутентификации. Этот запрос работает плавно. Похоже, в какой-то момент TLS1.3 не может продолжать аутентификацию...

Это документация по API: API подготовки пользователей — Изменить пользователя


person Lelio Faieta    schedule 30.06.2020    source источник
comment
Ваш пароль действительно «C4l1m3r0»? зачем беспокоиться о строчных цифрах в верхнем регистре, если это просто перестановка calimero?   -  person on8tom    schedule 30.06.2020
comment
нет, мой пароль явно не тот :-)   -  person Lelio Faieta    schedule 30.06.2020
comment
ваш сервер отвечает 401 и WWW-Authenticate: Basic. обычно это означает, что вы указали неправильную комбинацию имени пользователя и пароля.   -  person on8tom    schedule 30.06.2020
comment
а не обычно? эти учетные данные работают нормально. Я могу войти с ними, и я могу выполнять другие запросы   -  person Lelio Faieta    schedule 30.06.2020
comment
это похоже на неправильно настроенный веб-сервер или плохое программное обеспечение, которое выдает 401 вместо 403 (запрещено). вам также необходимо предоставить файлы cookie. или что-то в этом роде, запросы cur предоставляют базовую аутентификацию. так что наверняка его серверная часть. перед сервером есть WAF или какой-то балансировщик нагрузки?   -  person on8tom    schedule 30.06.2020
comment
нет нет. Самое сложное заключается в том, что у меня есть обратный прокси-сервер в /store, который разрешается в myexampledomain.com:4343 (сервер узла), но больше ничего.   -  person Lelio Faieta    schedule 30.06.2020
comment
Давайте продолжим обсуждение в чате.   -  person on8tom    schedule 30.06.2020


Ответы (1)


API Owncloud 10 требует включения TLS1.3. Я использовал Apache 2.4.29 (это последняя версия при написании на сервере Ubuntu 18.04), которая не поддерживает TLS1.3. Первая версия, поддерживающая это, — 2.4.37.

Я обновил Apache, и теперь все работает как положено. Для принудительного обновления мне пришлось:

//add the repository
sudo add-apt-repository ppa:ondrej/apache2
//get the updates
sudo apt update
//do the upgrade
sudo apt upgrade

Надеюсь, это решит чью-то головную боль

person Lelio Faieta    schedule 30.06.2020