-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ext_authz injected headers not propagating to HTTP router #12195
Comments
Envoy chooses and caches the route before executing http filters. There is a mechanism where an HTTP filter can cause the route to be recomputed (at which point I believe it should see the additional headers and select the route you expect). The tradeoff is the performance hit of recomputing the routes. I think the trick will be deciding how to modify the ext_authz filter to trigger route recomputation -- it probably shouldn't do it blindly. |
@zuercher Thanks for the information. I do see there is Any idea of the magnitude of the performance hit? Are we talking microseconds per request or milliseconds? |
That However, a related question, in my real implementation I have an RBAC filter after the authorization filter. I am now noticing that HTTP routes that has a For example: - match: # fails due to RBAC
path: /foo
redirect:
path_redirect: /foo/
- match: # fine with RBAC
prefix: /foo/
route:
cluster: foo
timeout: 0s |
This issue has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in the next 7 days unless it is tagged "help wanted" or other activity occurs. Thank you for your contributions. |
This issue has been automatically closed because it has not had activity in the last 37 days. If this issue is still valid, please ping a maintainer and ask them to label it as "help wanted". Thank you for your contributions. |
Description:
This was tested with v0.12.3 through v0.15.0 with both the v2 and v3 APIs.
I have an external authorization service configured which adds headers to the request on a successful check. This works correctly per the trace logs (see below). However when using header-based matching in HTTP routes, the header does not match, as if it is not present.
Repro steps:
Config:
Logs:
I added the Lua filter just to confirm the headers are propagated to the next filter.
The text was updated successfully, but these errors were encountered: