Skip to content

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

Open
zvonand wants to merge 10 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 10 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, including an entra provider type that validates tokens locally against Entra JWKS and requires tenant_id to be set in the configuration (the previous azure type remains as an alias). Add OAuth2 login to clickhouse-client via --login and --login=device, along with --jwt-command and --jwt-command-timeout to obtain a JWT from an external script on every connect.
Add token-based authentication and authorization, including an entra provider type that validates tokens locally against Entra JWKS and requires tenant_id to be set in the configuration (the previous azure type remains as an alias). Add OAuth2 login to clickhouse-client via --login and --login=device, along with --jwt-command and --jwt-command-timeout to obtain a JWT from an external script on every connect (#1658 by @zvonand, #1749 by @zvonand, #1777 by @zvonand, #1784 by @zvonand, #1799 by @zvonand, #1809 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 6 PR(s) (group auto-grp-pr-1658). Cherry-picked from #1658, #1749, #1777, #1784, #1799, #1809.

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

Copy link
Copy Markdown

Workflow [PR], commit [3e191b2]

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 releasy Created/managed by RelEasy

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant