Skip to content

Antalya 26.6: Token authentication/authorization + OAuth client login - #2140

Open
zvonand wants to merge 13 commits into
antalya-26.6from
feature/antalya-26.6/auto-grp-pr-1658
Open

Antalya 26.6: Token authentication/authorization + OAuth client login#2140
zvonand wants to merge 13 commits into
antalya-26.6from
feature/antalya-26.6/auto-grp-pr-1658

Conversation

@zvonand

@zvonand zvonand commented Jul 31, 2026

Copy link
Copy Markdown
Member

Changelog category (leave one):

  • New Feature

Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):

Add token-based authentication and authorization, with a new Entra processor type that validates Entra ID tokens locally through the OIDC flow using published JWKS (the tenant ID must now be set in the configuration, and the older azure type remains as an alias). Extend clickhouse-client with OAuth2 login, including browser and device code flows, and with an option to obtain a JWT from an external command, re-invoked on every reconnect.
Add token-based authentication and authorization, with a new Entra processor type that validates Entra ID tokens locally through the OIDC flow using published JWKS (the tenant ID must now be set in the configuration, and the older azure type remains as an alias). Extend clickhouse-client with OAuth2 login, including browser and device code flows, and with an option to obtain a JWT from an external command, re-invoked on every reconnect (#1658 by @zvonand, #1749 by @zvonand, #1777 by @zvonand, #1784 by @zvonand, #1799 by @zvonand, #1809 by @zvonand, #2086 by @zvonand, #2114 by @zvonand).

CI/CD Options

Exclude tests:

  • Fast test
  • Integration Tests
  • Stateless tests
  • Stateful tests
  • Performance tests
  • All with ASAN
  • All with TSAN
  • All with MSAN
  • All with UBSAN
  • All with Coverage
  • All with Aarch64
  • All Regression
  • Disable CI Cache

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

Combined port of 8 PR(s) (group auto-grp-pr-1658). Cherry-picked from #1658, #1749, #1777, #1784, #1799, #1809, #2086, #2114.

zvonand added 10 commits July 31, 2026 14:48
…next commit)

---
Original cherry-pick message follows:

Merge pull request #1658 from Altinity/feature/antalya-26.3/pr-1430-1596

Antalya 26.3 forward-port: Token Authentication and Authorization
# Conflicts:
#	ci/jobs/scripts/check_style/aspell-ignore/en/aspell-dict.txt
#	docs/en/operations/external-authenticators/index.md
#	src/Access/IAccessStorage.cpp
#	src/Access/UsersConfigParser.cpp
#	src/Parsers/Access/ASTAuthenticationData.cpp
Adapted the JWT users.xml parsing to antalya-26.6's refactored
`parseUserAuthMethod` (returns AuthenticationData, uses `auth_method_path`
and `num_authentication_types` instead of pushing into
`user->authentication_methods` with `user_config`).

Kept antalya-26.6's `jwt_use_authenticator` prefix selection inside the
source PR's `if (!children.empty())` guard in ASTAuthenticationData.

Dropped the re-added aspell dictionary: the file was removed from
antalya-26.6 by 3a5d8a3 ("Remove aspell and codespell from style
check"), so the source PR's new dictionary words have no destination.

Source-PR: #1658 (#1658)
…next commit)

---
Original cherry-pick message follows:

Merge pull request #1749 from Altinity/feature/antalya-26.3/pr-1606

Antalya 26.3: Add OAuth2 login to clickhouse-client (--login / --login=device)
# Conflicts:
#	docs/en/interfaces/cli.md
The clickhouse-client documentation moved from docs/en/interfaces/cli.md to docs/en/interfaces/client.md on antalya-26.6 (commit 266165b "Add clickhousectl docs page and move ClickHouse Client to /interfaces/client"); cli.md now documents clickhousectl. Applied the source PR's doc changes (--login[=<mode>] / --oauth-credentials rows and the "OAuth credentials file" section) to docs/en/interfaces/client.md and restored cli.md to the base-branch content.

Adapted: docs/en/interfaces/cli.md doc changes relocated to docs/en/interfaces/client.md (clickhouse-client docs moved on antalya-26.6)
Source-PR: #1749 (#1749)
…next commit)

---
Original cherry-pick message follows:

Merge pull request #1777 from Altinity/fix/antalya-26.3/oauth-address-audit

Antalya 26.3: address OAuth security audit
# Conflicts:
#	src/Interpreters/Session.h
#	src/Parsers/Access/ASTAuthenticationData.cpp
#	src/Parsers/Access/ASTAuthenticationData.h
Session.h: kept both additions (antalya-26.6's certificate_info and the PR's auth_token_expires_at) - they are independent members. ASTAuthenticationData: took the PR's JWT formatting block; kept antalya-26.6's unused jwt_use_authenticator field declaration untouched.

Source-PR: #1777 (#1777)
[WiP] Antalya 26.3: OAuth -- rework Entra ID workflow

Source-PR: #1784 (#1784)
…-polish

Antalya 26.3: OAuth improvements

Source-PR: #1799 (#1799)
…next commit)

---
Original cherry-pick message follows:

Merge pull request #1809 from Altinity/feature/antalya-26.3/oauth-executable-token-in-client

Antalya 26.3: add `--jwt-command` to client
# Conflicts:
#	docs/en/interfaces/cli.md
#	src/Client/Connection.cpp
#	src/Interpreters/Session.h
- src/Client/Connection.cpp: kept the base branch's TOO_LARGE_ARRAY_SIZE
  error-code declaration next to the PR's AUTHENTICATION_FAILED one.
- src/Interpreters/Session.h: applied the PR's removal of
  `auth_token_expires_at` while keeping the base branch's
  `certificate_info` member (out of the PR's scope).
- docs: the PR patched docs/en/interfaces/cli.md, but commit 266165b
  on antalya-26.6 moved the ClickHouse Client reference to
  docs/en/interfaces/client.md (cli.md now documents `clickhousectl`).
  Applied the PR's `--jwt-command` / `--jwt-command-timeout` rows and the
  `--jwt-command` details section verbatim to client.md and restored
  cli.md to its antalya-26.6 content.

Adapted: docs/en/interfaces/cli.md changes moved to docs/en/interfaces/client.md (file renamed on antalya-26.6 by 266165b)
Source-PR: #1809 (#1809)
@zvonand zvonand added releasy Created/managed by RelEasy antalya-26.6 ai-resolved Port conflict auto-resolved by Claude labels Jul 31, 2026
@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown

Workflow [PR], commit [e7a28b3]

@zvonand zvonand self-assigned this Aug 4, 2026
@zvonand zvonand added the forwardport This is a frontport of code that existed in previous Antalya versions label Aug 4, 2026
zvonand added 2 commits August 4, 2026 15:52
…low-fix

Antalya 26.3: Fixes for OAuth --login flow

Source-PR: #2086 (#2086)
…ueries

Antalya 26.3: fix interserver JWT

Source-PR: #2114 (#2114)
@zvonand
zvonand force-pushed the feature/antalya-26.6/auto-grp-pr-1658 branch from de7c96f to 4b17690 Compare August 4, 2026 13:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-resolved Port conflict auto-resolved by Claude antalya-26.6 forwardport This is a frontport of code that existed in previous Antalya versions releasy Created/managed by RelEasy

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants