Commit Graph

35 Commits

Author SHA1 Message Date
Andrew Martinez 8297a817b7 fixes #3734 enforce client certificate proof-of-possession for OIDC sessions (#3805)
* fixes #3734 enforce client certificate proof-of-possession for OIDC sessions

- adds verifyCertProofOfPossession() in resolveOidcSession() to require
  TLS client cert matching a z_cfs fingerprint or SPIFFE ID when the
  OIDC token was issued with cert bindings
- adds z_cae (CertAllowExpired) claim from auth policy, propagated
  through token issuance and refresh
- adds TrustCache.VerifyClientCert() with tiered pool matching
  (first-party roots, trust anchors, third-party) and TTL cache
- adds WrapIdentityWithCertValidation() on the router to verify client
  certs at the TLS level against RDM PublicKeys
- adds IsFirstPartyCert() on the router to gate SPIFFE ID matching by
  checking whether the cert chains to the controller root CA
- adds VerifySpiffeId() in common/spiffehlp with SpiffeMatchApiSession,
  SpiffeMatchIdentity, and SpiffeMatchNone return types
- adds SPIFFE IDs to OTT and token enrollment certs (/identity/<id>)
- enforces cert expiry by match type: API session certs must be valid,
  fingerprint-matched certs respect z_cae, legacy sessions skip checks
- shallow-copies leaf certs before overriding time fields in all cert
  verification paths to avoid races on shared x509.Certificate pointers
- fixes controllerRootCache setting inited=true before the ctrl channel
  is available, which permanently cached the failure
2026-04-23 12:00:46 -04:00
Paul Lorenz 4df6ae564d Update package paths for newly imported storage and ziti-db-explorer packages 2026-04-16 09:18:55 -04:00
Andrew Martinez fb2034245d fixes openziti/ziti#3356 adds www-authenticate headers (#3561)
* fixes openziti/ziti#3356 adds www-authenticate headers

- www-authenticate headers are returned on 401s from API requests
- www-authenticate headers are returned during authentication to signal
  addtional JWT bearer tokens needed (secondary ext jwt)
- adds support for additional headers on API errors
- adds SecurityTokenCtx for centralized security header processing
  (legacy, jwt, etc.)
- adds SecurityCtx for centralized identity, auth policy, MFA handling
- refactors existing JWT authentication methods (oidc, legacy) to use
  centralized processing where possible
2026-02-24 10:01:36 -05:00
Paul Lorenz 2ffc6e1151 Update ziti version to 2.0 2026-01-28 12:34:10 -05:00
Paul Lorenz af09450961 Fix golangci-lint errors 2025-10-17 12:54:25 -04:00
Paul Lorenz 6df9532920 Add indexes for authenticator username and fingerprint. Fixes #3219 Also use externalId index in IdentityManager. 2025-09-02 21:55:01 -04:00
Andrew Martinez 23e8211a16 fixed #3117 authenticators last auth to root, updatedAt, createdAt flags (#3118) 2025-06-18 09:18:13 -04:00
Andrew Martinez 0506ef251b fix.3048.auth.events.impropert.chain.flag (#3050)
fixes #3084 adds events and improper chain flag

- splits cert resolution into root, legacy root + intermediate,
  and third-party pool. Allowing the detection of client authentication
  with incomplete chains if root + intermediate succeeds after root only fails
- adds `improperClientCertChain` to API Sessions and Current API Session.
  Added for OIDC and legacy auth. Set to true when a client certificate is used
  that was issued by the network and did not pass the root-only pool.
2025-05-21 11:49:39 -04:00
Andrew Martinez 31bb7fec0a updates change log fixes broken integration test (#3033) 2025-05-02 14:27:53 -04:00
Andrew Martinez 0ca892060f fix #2996 add ability to flag cert authenticators for extension/key roll (#3025)
* fix #2996 add ability to flag cert authenticators for extension/key roll
2025-05-01 17:41:00 -04:00
Andrew Martinez 7cbd3fe21a Fix.2999.404.during.OIDC.backed.cert.extend (#3000)
* fixes #2999 oidc backed sessions do not 404 anymore during verification

- add double extend test, use JWT authenticator id
2025-04-15 10:42:20 -04:00
Andrew Martinez c4b89e9d01 fixes #2904 limit client certs requested/allowed (#2974)
* fixes #2904 limit client certs requested/allowed

Some clients (browsers) show a popup when interacting with our TLS
servers and a pop-up or other UI to select certificates for
interacting with our server. If not limited, this causes any client cert
available to be shown, allowing the user to choose a certificate
that will never work. This fix limits the issuer's allowed so the popup
never appears or only appears with viable options.

- use new xweb to modify server TLS configs with static and 3rd party
  CAs
- centralize CA certificates for re-use
2025-04-11 14:33:21 -04:00
Andrew Martinez 0e61edb2f9 fix #2984 identity/router enrollment do not return full chains (#2990)
* fix #2984 identity/router enrollment do not return full chains

- router extend via REST/ctrl now return full chains
- identity extend via REST now return full chains
- updates tests to allow for chain lengths
- modifies verification to look at the first cert in the chain (leaf)
- modifies edge routers to not start extension if new certs can't be
  saved
- adds network-jwt tests
2025-04-11 11:27:57 -04:00
Andrew Martinez 0ef6f03570 updates authenticator/api session logic for isCertExtendable
- updates legacy and oidc authentication for isCertExtendable
- updates authenticators REST responses to include isIsssuedByNetwork
2024-08-29 10:13:47 -04:00
Paul Lorenz c3b43133d1 Merge fabric and controller model code. Fixes #2205 2024-07-09 16:11:01 -04:00
Paul Lorenz 881ec14b63 Fix validation perf. Fixes #1428. Remove duplicate LoadOneById method. 2024-03-21 10:10:07 -04:00
Paul Lorenz a84369a6e9 Consolidate fabric and edge persistence code. Fixes #1555 2023-12-06 17:36:37 -05:00
Paul Lorenz f3d67b7f49 Update fabric imports 2023-09-28 23:34:28 -04:00
Paul Lorenz 07da3cd513 Merge remote-tracking branch 'edge/main' into merge-edge
Updated package names
Merged golangci-lint configurations
2023-09-27 16:54:53 -04:00
Paul Lorenz 453e6cae2a Consolidate controller/apierror/helpers and messages 2023-08-30 17:16:10 -04:00
Paul Lorenz b061fe9a39 Move internal/certs to common. Remove some incidental files that weren't used. 2023-08-07 10:20:06 -04:00
Paul Lorenz dba0fb6f7c Move protobufs to common 2023-08-04 17:01:15 -04:00
Paul Lorenz 8b3092a3d9 Merge pull request #1566 from openziti/prep-for-ziti-merge-p2
Move eid to common
2023-08-04 16:35:26 -04:00
Paul Lorenz f368b631b0 Merge remote-tracking branch 'origin/main' into prep-for-ziti-merge-p1 2023-08-04 16:26:16 -04:00
Paul Lorenz 1f5eed5956 Move eid to common 2023-08-04 11:46:53 -04:00
Paul Lorenz 7d6f4ef700 Reorganize code in preparation for merging to ziti repo, first pass. 2023-08-04 09:48:06 -04:00
Andrew Martinez 414cff49d7 adds support OIDC authentication, api access, and ER connections 2023-07-20 09:41:12 -04:00
Paul Lorenz 70008bfc8f Update for fabric api changes. Fixes #1295 2023-04-25 13:26:25 -04:00
Paul Lorenz 63f9dad3df Updated model for storage api changes 2023-04-25 13:26:02 -04:00
Andrew Martinez e192f271ba remove old "sessionCert" (not ApiSessionCert) bit rot 2023-03-20 18:04:21 -04:00
Paul Lorenz 63c161224a Add linter and fix issues found by linter 2022-10-10 16:56:51 -04:00
Paul Lorenz 0d1dfb9779 Fixes for raft command encoding and decoding 2022-08-18 12:22:30 -04:00
Paul Lorenz 5c27d8308c Update enrollments to use raft commands. Fixes #1130 2022-08-04 10:14:39 -04:00
Paul Lorenz fe1b0463d7 Update authenticators to use raft commands. Fixes #1099 2022-08-04 10:14:21 -04:00
Paul Lorenz f60c06491e Update MFA to use raft commands. Closes #1128 2022-08-02 14:56:51 -04:00