|
| 1 | +--- |
| 2 | +title: "Release Apache APISIX 3.8.0" |
| 3 | +authors: |
| 4 | + - name: "Xin Rong" |
| 5 | + title: "Author" |
| 6 | + url: "https://github.com/AlinsRan" |
| 7 | + image_url: "https://github.com/AlinsRan.png" |
| 8 | + - name: "Traky Deng" |
| 9 | + title: "Technical Writer" |
| 10 | + url: "https://github.com/kayx23" |
| 11 | + image_url: "https://github.com/kayx23.png" |
| 12 | +keywords: |
| 13 | +- Apache APISIX |
| 14 | +- API Gateway |
| 15 | +- API Management Platform |
| 16 | +- New Release |
| 17 | +- Cloud Native |
| 18 | +description: The Apache APISIX 3.8.0 version is released on January 15, 2024. This release includes a few new features, bug fixes, and other improvements to user experiences. |
| 19 | +tags: [Community] |
| 20 | +--- |
| 21 | + |
| 22 | +We are glad to present Apache APISIX 3.8.0 with exciting new features, bug fixes, and other improvements to user experiences. |
| 23 | + |
| 24 | +<!--truncate--> |
| 25 | + |
| 26 | +This new release adds a number of new features, including the support for JWE decryption, brotli compression, multiple authentication methods on routes and services, required scopes in `openid-connect` plugin, and more. |
| 27 | + |
| 28 | +## New Features |
| 29 | + |
| 30 | +### Support decrypting JWE in requests using `jwe-decrypt` plugin |
| 31 | + |
| 32 | +Support the decryption of [JWE](https://datatracker.ietf.org/doc/html/rfc7516) authorization headers in requests with the new `jwe-decrypt` plugin. |
| 33 | + |
| 34 | +The plugin creates an internal endpoint `/apisix/plugin/jwe/encrypt` for JWE encryption, which can be exposed using the `public-api` plugin. You will also configure the decryption key in Consumers. |
| 35 | + |
| 36 | +For more information, see [PR #10252](https://github.com/apache/apisix/pull/10252) and [plugin documentation](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/jwe-decrypt.md). |
| 37 | + |
| 38 | +### Support multiple authentication methods on routes and services |
| 39 | + |
| 40 | +Support multiple authentication methods on routes and services with the new `multi-auth` plugin. The plugin iterates through the list of authentication plugins configured in the `auth_plugins` attribute. It allows consumers using different authentication methods to share the same route or service. |
| 41 | + |
| 42 | +For example, you can have one consumer using basic authentication: |
| 43 | + |
| 44 | +```shell |
| 45 | +curl http://127.0.0.1:9180/apisix/admin/consumers -X PUT \ |
| 46 | + -H "X-API-KEY: ${ADMIN_API_KEY}" \ |
| 47 | + -d '{ |
| 48 | + "username": "consumer1", |
| 49 | + "plugins": { |
| 50 | + "basic-auth": { |
| 51 | + "username": "consumer1", |
| 52 | + "password": "consumer1_pwd" |
| 53 | + } |
| 54 | + } |
| 55 | + }' |
| 56 | +``` |
| 57 | + |
| 58 | +And another consumer using key authentication: |
| 59 | + |
| 60 | +```shell |
| 61 | +curl http://127.0.0.1:9180/apisix/admin/consumers -X PUT \ |
| 62 | + -H "X-API-KEY: ${ADMIN_API_KEY}" \ |
| 63 | + -d '{ |
| 64 | + "username": "consumer2", |
| 65 | + "plugins": { |
| 66 | + "key-auth": { |
| 67 | + "key": "consumer2_s3cr3t" |
| 68 | + } |
| 69 | + } |
| 70 | + }' |
| 71 | +``` |
| 72 | + |
| 73 | +Both consumers can access the route below upon successful authentication using their respective authentication method: |
| 74 | + |
| 75 | +```shell |
| 76 | +curl http://127.0.0.1:9180/apisix/admin/routes/1 -X PUT \ |
| 77 | + -H "X-API-KEY: ${ADMIN_API_KEY}" \ |
| 78 | + -d '{ |
| 79 | + "methods": ["GET"], |
| 80 | + "uri": "/get", |
| 81 | + "plugins": { |
| 82 | + "multi-auth":{ |
| 83 | + "auth_plugins":[ |
| 84 | + { |
| 85 | + "basic-auth":{ } |
| 86 | + }, |
| 87 | + { |
| 88 | + "key-auth":{ |
| 89 | + "query":"apikey", |
| 90 | + "hide_credentials":true, |
| 91 | + "header":"apikey" |
| 92 | + } |
| 93 | + } |
| 94 | + ] |
| 95 | + } |
| 96 | + }, |
| 97 | + "upstream": { |
| 98 | + "type": "roundrobin", |
| 99 | + "nodes": { |
| 100 | + "httpbin.org": 1 |
| 101 | + } |
| 102 | + } |
| 103 | + }' |
| 104 | +``` |
| 105 | + |
| 106 | +For more information, see [PR #10482](https://github.com/apache/apisix/pull/10482) and [plugin documentation](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/multi-auth.md). |
| 107 | + |
| 108 | +### Support the use of `filters.regex` with compressed data in `response-rewrite` plugin |
| 109 | + |
| 110 | +Support the use of `filters.regex` with brotli and gzip compressed data in `response-rewrite` plugin. |
| 111 | + |
| 112 | +For more information, see [PR #10588](https://github.com/apache/apisix/pull/10588) and [PR #10637](https://github.com/apache/apisix/pull/10637). |
| 113 | + |
| 114 | +### Support specifying the required scopes in `openid-connect` plugin |
| 115 | + |
| 116 | +Support specifying the required scopes in `openid-connect` plugin in the `required_scopes` attribute. When configured, the plugin will check if all required scopes are present in the scopes returned by the introspection endpoint. |
| 117 | + |
| 118 | +For more information, see [PR #10493](https://github.com/apache/apisix/pull/10493). |
| 119 | + |
| 120 | +### Support `Timing-Allow-Origin` header in `cors` plugin |
| 121 | + |
| 122 | +New attributes `timing_allow_origins` and `timing_allow_origins_by_regex` are available in the cors plugin to support selective viewing of timing by origin. |
| 123 | + |
| 124 | +For more information, see [PR #9365](https://github.com/apache/apisix/pull/9365). |
| 125 | + |
| 126 | +### Support brotli compression algorithm |
| 127 | + |
| 128 | +Support brotli compression algorithm in the new `brotli` plugin, which dynamically sets the behavior of [brotli in NGINX](https://github.com/google/ngx_brotli). Before using the plugin, you should first build and install brotli shared libraries. |
| 129 | + |
| 130 | +For more information, see [PR #10515](https://github.com/apache/apisix/pull/10515) and [plugin documentation](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins/brotli.md). |
| 131 | + |
| 132 | +### Expand capability of parameter parsing in `body-transformer` plugin |
| 133 | + |
| 134 | +Support parsing parameters from POST requests of `application/x-www-form-urlencoded` content type and URI parameters from GET requests in `body-transformer` plugin. |
| 135 | + |
| 136 | +For more information, see [PR #10496](https://github.com/apache/apisix/pull/10496). |
| 137 | + |
| 138 | +### Support the use of variables for sensitive information in `limit-count` plugin attributes |
| 139 | + |
| 140 | +Support the use of variables for sensitive information in `limit-count` plugin attributes. For example, you could save `redis_password` to an environment variable and configure the value in the plugin as `$ENV://REDIS_PASSWORD`. |
| 141 | + |
| 142 | +For more information, see [PR #10597](https://github.com/apache/apisix/pull/10597). |
| 143 | + |
| 144 | +## Other Updates |
| 145 | + |
| 146 | +- Improve performance with lua-resty-events module ([PR #10550](https://github.com/apache/apisix/pull/10550) and [PR #10558](https://github.com/apache/apisix/pull/10558)) |
| 147 | +- Upgrade OpenSSL 1.1.1 to OpenSSL 3 ([PR #10724](https://github.com/apache/apisix/pull/10724)) |
| 148 | +- Reduce the required number of `redis_cluster_nodes` from 2 to 1 in `limit-count` plugin ([PR #10612](https://github.com/apache/apisix/pull/10612)) |
| 149 | +- Allow port to be an optional field when upstream nodes are of array type ([PR #10477](https://github.com/apache/apisix/pull/10477)) |
| 150 | +- Fix counter sharing among consumers when using the `limit-count` plugin ([PR #10540](https://github.com/apache/apisix/pull/10540)) |
| 151 | +- Add `redirect_after_logout_uri` attribute for `openid-connect` plugin, used when `end_session_endpoint` is not provided ([PR #10653](https://github.com/apache/apisix/pull/10653)) |
| 152 | +- Fix counter sharing among consumers when using the `limit-count` plugin ([PR #10540](https://github.com/apache/apisix/pull/10540)) |
| 153 | +- Fix `forward-auth` plugin 403 error when POST request body is too large ([PR #10589](https://github.com/apache/apisix/pull/10589)) |
| 154 | + |
| 155 | +## Changelog |
| 156 | + |
| 157 | +For a complete list of changes in this release, please see [CHANGELOG](https://github.com/apache/apisix/blob/master/CHANGELOG.md#380). |
0 commit comments