[CALCITE-4152] Upgrade Avatica to use the configurable SPNEGO Jetty implementation

Jetty has deprecated the previously-used version of SPNEGO login code.
This change requires a few other changes to adopt:

1. Removal of automatic server login via JAAS (Jetty removed this and
    expects explicit logins for the server).
2. Separation of Authentication and Authorization (we're required to
    use a LoginService for authz to use the new SPNEGO authentication).

For the benefit of making this change, we automatically inherit the
Jetty Session logic which can skip SPNEGO authentication for the 2nd
to Nth call to Avatica. For a "workload" which previously took N HTTP calls
to Avatica to perform, this can now be done in (N/2)+1 HTTP calls
which, for average Avatica calls, results in a nearly 2x speed-up.

Jetty Sessions will cause a JSESSIONID cookie to be sent back on the
successful SPNEGO authentication handshake. As long as the client
resubmits this cookie for subsequent requests, the identity of the
client is kept intact.

To test this more easily, this change also includes updates to the
Avatica StandaloneServer, which more easily enables setup of Avatica
against any database (e.g. hsqldb with the SCOTT dataset).
15 files changed
tree: 0b6740ae952927211d6830f4a0a2b6f4626d5600
  1. .github/
  2. bom/
  3. core/
  4. docker/
  5. gradle/
  6. metrics/
  7. metrics-dropwizardmetrics/
  8. noop-driver/
  9. release/
  10. server/
  11. shaded/
  12. site/
  13. src/
  14. standalone-server/
  15. tck/
  16. .editorconfig
  17. .gitattributes
  18. .gitignore
  19. .ratignore
  20. .travis.yml
  21. build.gradle.kts
  22. docker-compose.yml
  23. docker.sh
  24. gradle.properties
  25. gradlew
  26. gradlew.bat
  27. LICENSE
  28. NOTICE
  29. README
  30. README.md
  31. settings.gradle.kts
README.md

Build Status CI Status

Apache Calcite -- Avatica

Apache Calcite's Avatica is a framework for building database drivers.

Avatica is a sub-project of Apache Calcite.

For more details, see the home page.

Release notes for all published versions are available on the history page.