Skip to content

malformed authority header for ExtensionService #4278

Closed
@cortopy

Description

@cortopy

What steps did you take and what happened:

I wrote an AuthorizationServer using Rust. In Rust, the main package to handle http2 connections is called h2, which happens to be a very strict implementation of the http2 protocol.

I then registered my server as an ExtensionService

When Envoy makes a request, the authority header is set to:

"extension/{{ namespace }}/{{ ExtensionService name }}"

That is an invalid authority header according to the specs. As a result, h2 refuses to handle the request as reported here a while ago

What did you expect to happen:

A valid authority header is sent to the server. Maybe only the ExtensionService name, or the virtual host fqdn?

Anything else you would like to add:

I've tried with h2 and h2c protocols without any diffrence.

I also tried not providing a protocol to see if maybe a http1 request could be handled (Rust has utilities already to convert http1/grpc-web on the fly and it could work) but, in this case, no protocol is set and the server doesn't know what to do with the TCP request

Environment:

  • Contour version: 1.19.1
  • Kubernetes version: (use kubectl version): 1.23
  • Kubernetes installer & version: k0s
  • Cloud provider or hardware configuration: bare metal
  • OS (e.g. from /etc/os-release): Ubuntu

Metadata

Metadata

Assignees

Labels

kind/bugCategorizes issue or PR as related to a bug.lifecycle/needs-triageIndicates that an issue needs to be triaged by a project contributor.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions