all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH v2 proxmox-openid-rs] fix Open ID with Azure as provider
@ 2022-04-01  9:32 Mira Limbeck
  2022-04-01  9:40 ` Mira Limbeck
  0 siblings, 1 reply; 2+ messages in thread
From: Mira Limbeck @ 2022-04-01  9:32 UTC (permalink / raw)
  To: pve-devel

Azure doesn't accept `Transfer-Encoding: chunked` on their token endpoint,
but with the switch to ureq we always send requests with this set.

Fix by switching to `Content-Length` in the header instead. ureq only
sets `Transfer-Encoding: chunked` when the body length is not known
beforehand, which is the case when using `send`. See 
https://docs.rs/ureq/2.4.0/ureq/index.html#content-length-and-transfer-encoding

See https://forum.proxmox.com/threads/openid-401-with-azure-ad.105892/
for the issue.

Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
---
v2:
 - added inline comment
 - removed the unnecessary `let bytes = ...` line
 - changed link in commit message to versioned docs.rs

probably also fixes https://bugzilla.proxmox.com/show_bug.cgi?id=3916,
but I could only reproduce this exact error message with Azure until
now.

 src/http_client.rs | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/http_client.rs b/src/http_client.rs
index a2bf6ee..1a16ff3 100644
--- a/src/http_client.rs
+++ b/src/http_client.rs
@@ -75,7 +75,10 @@ pub fn http_client(request: HttpRequest) -> Result<HttpResponse, Error> {
     }
 
     let response = if let Method::POST = request.method {
-        req.send(&*request.body)
+        // send_bytes makes sure that Content-Length is set. This is important, because some
+        // endpoints don't accept `Transfer-Encoding: chunked`, which would otherwise be set.
+        // see https://github.com/algesten/ureq/blob/main/README.md#content-length-and-transfer-encoding
+        req.send_bytes(request.body.as_slice())
     } else {
         req.call()
     }
-- 
2.30.2





^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [pve-devel] [PATCH v2 proxmox-openid-rs] fix Open ID with Azure as provider
  2022-04-01  9:32 [pve-devel] [PATCH v2 proxmox-openid-rs] fix Open ID with Azure as provider Mira Limbeck
@ 2022-04-01  9:40 ` Mira Limbeck
  0 siblings, 0 replies; 2+ messages in thread
From: Mira Limbeck @ 2022-04-01  9:40 UTC (permalink / raw)
  To: pve-devel

On 4/1/22 11:32, Mira Limbeck wrote:
> Azure doesn't accept `Transfer-Encoding: chunked` on their token endpoint,
> but with the switch to ureq we always send requests with this set.
>
> Fix by switching to `Content-Length` in the header instead. ureq only
> sets `Transfer-Encoding: chunked` when the body length is not known
> beforehand, which is the case when using `send`. See
> https://docs.rs/ureq/2.4.0/ureq/index.html#content-length-and-transfer-encoding
>
> See https://forum.proxmox.com/threads/openid-401-with-azure-ad.105892/
> for the issue.
>
> Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com>
> ---
> v2:
>   - added inline comment
>   - removed the unnecessary `let bytes = ...` line
>   - changed link in commit message to versioned docs.rs
>
> probably also fixes https://bugzilla.proxmox.com/show_bug.cgi?id=3916,
> but I could only reproduce this exact error message with Azure until
> now.
>
>   src/http_client.rs | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/http_client.rs b/src/http_client.rs
> index a2bf6ee..1a16ff3 100644
> --- a/src/http_client.rs
> +++ b/src/http_client.rs
> @@ -75,7 +75,10 @@ pub fn http_client(request: HttpRequest) -> Result<HttpResponse, Error> {
>       }
>   
>       let response = if let Method::POST = request.method {
> -        req.send(&*request.body)
> +        // send_bytes makes sure that Content-Length is set. This is important, because some
> +        // endpoints don't accept `Transfer-Encoding: chunked`, which would otherwise be set.
> +        // see https://github.com/algesten/ureq/blob/main/README.md#content-length-and-transfer-encoding
> +        req.send_bytes(request.body.as_slice())
>       } else {
>           req.call()
>       }

disregard this patch, it contains the wrong link in the inline comment

will send a v3





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-04-01  9:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-01  9:32 [pve-devel] [PATCH v2 proxmox-openid-rs] fix Open ID with Azure as provider Mira Limbeck
2022-04-01  9:40 ` Mira Limbeck

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal