Releases: coupergateway/couper
v1.13.0
1.13.0
-
Added
can()
function (#699)url_decode()
function (#781)bearer = true
attribute forjwt
block to indicate retrieving token fromAuthorization: Bearer ...
. This is the new default token source indicator.header = "Authorization"
is now deprecated in favour of this new attribute. (#724)- IPv6 support via
-bind-address
option. (#752) - also watch files which has been referenced within the configuration file when using [
-watch
] (https://docs.couper.io/configuration/command-line#basic-options) (#747) - automatic
MAXPROCS
setting for Couper runtime to respect the number of available CPU resources in cloud environments (#840)
-
Changed
- More specific error log messages for
oauth2
andbeta_token_request
token request errors (#755) - In addition to having an appropriate JSON media type in the
Content-Type
header field, (backend) requests or backend responses for an endpoint are only JSON-parsed if indicated by a.json_body
reference in the endpoint configuration (#749) beta_rate_limit
status code429
responses are no longer wrapped as a Couper error (#827)
- More specific error log messages for
-
Fixed
WWW-Authenticate
headerrealm
param value forbasic_auth
(#715)Server-Timing
header only reporting last requests/proxies of endpoint sequences (#751)- Selecting of appropriate error handler in two cases (#753)
- Storing of digit-starting string object keys in request context and of digit-starting string header field names in request variable (#799)
- Use of boolean values for the
headers
attribute or modifiers (#805) - Duplicate CORS response headers (with backend sending CORS response headers, too) (#804)
- Erroneously sending 404 when serving from
files
due to wrong registration ofbase_path
s, and when serving from multiplefiles
orspa
in combination withapi
due to wrong selecting of the API error template (#803) - Possible deadlock for
beta_rate_limit
(#827)
-
Dependencies
v1.12.2
Note: The Couper project has been moved to a new home: https://github.com/coupergateway/couper !
The maintainer is still the same (@malud) and supported with ❤️ by Milecrew.
This affects the following locations which you have to update accordingly:
Dockerhub:
coupergateway/couper
andcoupergateway/couper-oidc-gateway
VSCode-Extension: Couper Configuration (Marketplace / Open VSX)
Homebrew:brew tap coupergateway/couper
and thenbrew install couper
(formula)
Examples: https://github.com/coupergateway/couper-examples
- Fixed
- Reading the origin response-body even if there is no origin
body
orjson_body
variable reference; piping the response-body again to the client (#766)
- Reading the origin response-body even if there is no origin
v1.12.1
1.12.1
- Fixed
- Erroneously sending an empty
Server-Timing
header (#700) - URL scheme while using the
tls
block (#703) - For OIDC, trying to request userinfo from a non-existing (not required, though recommended) userinfo endpoint (#709)
- Use of
backend_responses
'body
orjson_body
properties in api-level error handlers (#710) - Some
..._file
attributes missing for path absolutizing (#713) WWW-Authenticate
headerrealm
param value forbasic_auth
(#715)- JWT access control now creating
401
error status code, adding aWWW-Authenticate: Bearer[...]
response header if appropriate (#719) - Erroneous multiplying of health probes, jobs and requests to JWKS and OpenID configuration resources after a reload with
-watch
(#730, #736) - Reading PEM-encoded CA certificates (
ca_file
setting or-ca-file
option) containing bytes trailing the PEM message (#739)
- Erroneously sending an empty
v1.12.0
1.12.0
-
Added
beta_job
block to describe one or more jobdefinitions
for simple recurring http tasks (#610)server_timing_header
setting, that allows Couper to include an additionalServer-Timing
HTTP response header field detailing connection and transport relevant metrics for each backend request. (#657)
-
Changed
- Use nested
jwt_signing_profile
block inoauth2
block forgrant_type
"urn:ietf:params:oauth:grant-type:jwt-bearer"
in absence ofassertion
attribute (#619) - Improved the way an SPA
bootstrap_file
gets cached and served in combination withbootstrap_data
(#656) - Harmonized and improved logged error information for references to undefined blocks (#651)
- Unbeta permission features: (#673)
beta_required_permission
attribute forapi
andendpoint
blocks,beta_granted_permissions
andbeta_required_permission
request context variables,beta_insufficient_permissions
error type,beta_permissions_claim
,beta_permissions_map
,beta_permissions_map_file
,beta_roles_claim
,beta_roles_map
andbeta_roles_map_file
attributes forjwt
block.
- Use nested
-
Fixed
- Use of backend-related variables in
custom_log_fields
within abackend
block (#658) - Loop with evaluation error in
custom_log_fields
if log level is"debug"
(#659) - Removed error message with
couper help
command (#678)
- Use of backend-related variables in
VSCode-Extension
The vscode extension has been moved to our own publisher couper. The new extension can be found here:
- Marketplace: https://marketplace.visualstudio.com/items?itemName=couper.couperconf
- Open-VSX: https://open-vsx.org/extension/couper/couperconf (claiming the namespace is still pending)
v1.11.2
1.11.2
- Fixed
- Requests to wildcard (
**
) endpoints using backends with a wildcardpath
attribue, where the wildcard matches the empty string (regression; since v1.11.0) (#655) - [internal alloc] stop creating request context based jwt, oauth2 and saml (hcl) functions without related definitions (#666)
- [internal alloc] reduced allocation amount while proxying requests (#666)
- Removing websockets related headers while the proxy
websockets
option isfalse
(or no block definition exist) (#666)
- Requests to wildcard (
v1.11.1
1.11.1
- Fixed
- Endpoint sequences not being terminated by errors (e.g.
unexpected_status
) (regression; since v1.11.0) (#648) - Health route affected by access control (regression; since v1.11.0) (#654)
- Endpoint sequences not being terminated by errors (e.g.
v1.11.0
1.11.0
With this release Couper brings even more value when it comes to connecting services and security. We made mTLS configurable for both sides, the server
side and the backend
one. Couper is normally used behind an ingress but is now able to serve secured content and forces clients to present a valid certificate if configured. For the backend
blocks Couper acts as client and is able to present a client certificate to the origin
. This feature also allows to additionally configure a CA certificate per backend, unlike the ca_file
option which configures a certificate for all outgoing connections.
To configure a Single Page Application for different environments, believe it or not, things could get complicated. Couper comes with a simple but powerful spa
attribute to inject a custom JSON object into the bootstrap file via a defined placeholder while serving this to the client.
-
Added
- mTLS Support for
server
andbackend
blocks (#615) spa
block option to inject server-data to the applicationsbootstrap_file
withbootstrap_data
(#626)- OAuth2 client authentication methods (
token_endpoint_auth_method
values)"client_secret_jwt"
and"private_key_jwt"
includingjwt_signing_profile
block foroauth2
,beta_oauth2
andoidc
blocks (#599) trim()
function (#605)beta_roles_map_file
andbeta_permissions_map_file
attributes tojwt
block (#613)
- mTLS Support for
-
Changed
- Replaced the JWT library because the former library was no longer maintained (#612)
- Routing and OpenAPI validation now use gorilla/mux (#614)
- Usage of
env
variables and functions is now possible for thedefaults
block (#630)
-
Fixed
- Aligned the evaluation of
beta_oauth2
/oidc
redirect_uri
tosaml
sp_acs_url
(#589) - Proper handling of empty
beta_oauth2
/oidc
scope
(#593) - Throwing sequence errors and selecting appropriate error handlers (#595)
- Allow setting of the
typ
JWT header injwt_signing_profile
s (#616) - CVE-2021-3538 related to our
request_id_format
option if switched touuid4
: replaced the underlying package togithub.com/google/uuid
(#611) - Possible panic for nested endpoint sequences (#618)
- Cycle check for endpoint sequences (#623)
- In endpoint sequences send requests only once (#624)
- Aligned the evaluation of
v1.10.1
1.10.1
- Fixed
- endpoint
/**
path wildcards sometimes not matching (#603) - Some errors in the
default()
function (#596)
- endpoint
v1.10.0
1.10.0
Couper 1.10 is a feature release comprising new features for a more flexible and cleaner configuration. It also comes with some bug fixes and some smaller improvements. See below for a complete list of changes.
The new environment
block along with its corresponding setting and the -e
command line option allows for a cleaner and safer configuration if Couper is to be deployed in different environments. Read more about that feature in our example.
Labeled, reusable proxy
blocks provide means for a leaner and less repetitive configuration.
In case a backend request requires authorization, the new beta_token_request
block can request the required token and make the response available via the beta_token_response
variable.
Finally, a stricter endpoint
path validation for a clearer and more consistent path matching is now applied. Some characters or character sequences like ?
, #
, and /../
are no longer allowed; empty path parameters won't match anymore.
As always the Couper VSCode extension has been updated to support all new features.
We have launched our documentation website to find blocks and attributes more easily.
-
Added
environment
block, setting andcouper.environment
variable (#521, (#534, #545), (#546)- used go version in
version
command (#552) - new
grant_type
s"password"
and"urn:ietf:params:oauth:grant-type:jwt-bearer"
with related attributes foroauth2
block (#555) beta_token_request
block,backend
andbeta_token_response
variables andbeta_token(s)
properties ofbackends
variable (#517)- reusable
proxy
block (#561)
-
Changed
-
Renamed
-debug
to-pprof
and made debug port configurable via-pprof-port
. Both command line options can also be specified via the respectivesettings
. (#577) -
Fixed
form_body
,headers
andcookies
can now be properly custom-logged (#535)- Disallow empty path parameters (#526)
- Disallow endpoint path patterns not starting with
/
, endpoint path patterns andbase_path
s having.
or..
segments (#584) - Basic Auth client authentication with OAuth2 (client ID and secret must be URL encoded) (#537)
- Config validation, e.g. label-uniqueness checks (#563)
- OIDC not using referenced backends, if only specific backends (
configuration_backend
,jwks_uri_backend
,token_backend
,userinfo_backend
) were configured (#570) - OIDC configuration related go-routine leak after retrieving a new payload due to config ttl (#564)
-
Removed
- Endpoint path normalization to better match OpenAPI behavior (#526)
v1.9.2
1.9.2
- Fixed
- configuration related panic while loading backends with
oauth2
block which depends on other defined backends (#524) - erroneous retries for
oauth2
backend authorization (#529) - race condition resulting in empty
backends.<label>.health.state
variable (#530) - enabled json html escaping inherited from Go lib (#531)
- configuration related panic while loading backends with