unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: "Aleix Conchillo Flaqué" <aconchillo@gmail.com>
To: guile-devel <guile-devel@gnu.org>
Subject: Re: [PATCH] web: authorization header scheme should be capitalized
Date: Thu, 23 Jun 2022 13:33:52 -0700	[thread overview]
Message-ID: <CA+XASoU0Y5YSrLRcgjQqH_zSGp1tR4zTrE4cFkd8P3dKBSXBMQ@mail.gmail.com> (raw)
In-Reply-To: <20220623202759.3578506-1-aconchillo@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2506 bytes --]

Sorry, forgot to fix tests in my original email.

This is actually an important bug fix since some servers won't accept
lowercase Authorization header schemes and there's no way around this in
Guile, AFAIK.

Here are a few RFC where they explicitly mention capitalized strings:

"Basic" scheme: https://datatracker.ietf.org/doc/html/rfc7617#section-2
"Bearer" scheme: https://datatracker.ietf.org/doc/html/rfc6750#section-2.1

Aleix

On Thu, Jun 23, 2022 at 1:28 PM Aleix Conchillo Flaqué <aconchillo@gmail.com>
wrote:

> * module/web/http.scm (write-credentials): capitalize authorization
> header scheme. See, for example,
> https://datatracker.ietf.org/doc/html/rfc7617#section-2
> ---
>  module/web/http.scm            | 4 ++--
>  test-suite/tests/web-http.test | 7 ++++---
>  2 files changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/module/web/http.scm b/module/web/http.scm
> index 4276e1744..312c28934 100644
> --- a/module/web/http.scm
> +++ b/module/web/http.scm
> @@ -965,10 +965,10 @@ as an ordered alist."
>  (define (write-credentials val port)
>    (match val
>      (('basic . cred)
> -     (put-string port "basic ")
> +     (put-string port "Basic ")
>       (put-string port cred))
>      ((scheme . params)
> -     (put-symbol port scheme)
> +     (put-string port (string-titlecase (symbol->string scheme)))
>       (put-char port #\space)
>       (write-key-value-list params port))))
>
> diff --git a/test-suite/tests/web-http.test
> b/test-suite/tests/web-http.test
> index 63377349c..df25030de 100644
> --- a/test-suite/tests/web-http.test
> +++ b/test-suite/tests/web-http.test
> @@ -336,9 +336,10 @@
>    (pass-if-parse authorization "Digest foooo" '(digest foooo))
>    (pass-if-parse authorization "Digest foo=bar,baz=qux"
>                   '(digest (foo . "bar") (baz . "qux")))
> -  (pass-if-round-trip "Authorization: basic foooo\r\n")
> -  (pass-if-round-trip "Authorization: digest foooo\r\n")
> -  (pass-if-round-trip "Authorization: digest foo=bar, baz=qux\r\n")
> +  (pass-if-round-trip "Authorization: Basic foooo\r\n")
> +  (pass-if-round-trip "Authorization: Bearer token\r\n")
> +  (pass-if-round-trip "Authorization: Digest foooo\r\n")
> +  (pass-if-round-trip "Authorization: Digest foo=bar, baz=qux\r\n")
>    (pass-if-parse expect "100-continue, foo" '((100-continue) (foo)))
>    (pass-if-parse from "foo@bar" "foo@bar")
>    (pass-if-parse host "qux" '("qux" . #f))
> --
> 2.34.1
>
>

[-- Attachment #2: Type: text/html, Size: 4139 bytes --]

  reply	other threads:[~2022-06-23 20:33 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-23 20:27 [PATCH] web: authorization header scheme should be capitalized Aleix Conchillo Flaqué
2022-06-23 20:33 ` Aleix Conchillo Flaqué [this message]
2022-06-23 20:40 ` Maxime Devos
2022-06-23 20:42   ` Aleix Conchillo Flaqué
2022-06-23 20:45     ` Maxime Devos
2022-06-23 21:13       ` Aleix Conchillo Flaqué
2022-06-23 22:20         ` Maxime Devos
2022-06-24  1:46           ` Aleix Conchillo Flaqué
2022-06-24  8:35             ` Maxime Devos
2022-06-24 13:41               ` Aleix Conchillo Flaqué
2022-06-24 12:16             ` Dr. Arne Babenhauserheide
  -- strict thread matches above, loose matches on Subject: below --
2022-06-23 19:15 Aleix Conchillo Flaqué

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+XASoU0Y5YSrLRcgjQqH_zSGp1tR4zTrE4cFkd8P3dKBSXBMQ@mail.gmail.com \
    --to=aconchillo@gmail.com \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).