fix(auth): address PR #758 auto-review (id-token verify, nonce, CI key)
Blocking: - AS proxy callback now calls verify_id_token before caching the proxy code so a tampered IdP response can't smuggle identity claims. Important: - Browser OAuth flow generates and verifies an OIDC nonce; new alembic migration 006 adds the nonce column to oauth_sessions. - _origin_matches_self logs a warning when CSRF check is bypassed. - oauth_tools.py uses get_shared_storage instead of fresh handles. Nits: - New token_utils.get_oidc_discovery shares the 5-minute cache with verify_id_token; oauth_login (integrated) and _revoke_refresh_token_at_idp now use it instead of issuing fresh discovery fetches. - Drop typing.Optional from oauth_tools.py in favour of X | None. CI: - test.yml generates an ephemeral Fernet TOKEN_ENCRYPTION_KEY per run with openssl, removing the dependency on a missing repo secret. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
2ef4bfc4af
commit
4c84d82984
@@ -129,6 +129,18 @@ jobs:
|
||||
# npm ci
|
||||
# npm run build
|
||||
|
||||
# Generate an ephemeral Fernet key per CI run. docker-compose.yml
|
||||
# requires TOKEN_ENCRYPTION_KEY (PR #758 finding 5 removed the
|
||||
# hardcoded default), but the CI tokens.db is destroyed at the end of
|
||||
# the job so there is no value in persisting the key as a repo secret.
|
||||
# ``openssl rand -base64 32`` produces 32 bytes encoded as 44 base64
|
||||
# chars; ``tr '+/' '-_'`` converts to URL-safe base64, which is
|
||||
# exactly what Fernet expects.
|
||||
- name: Generate ephemeral TOKEN_ENCRYPTION_KEY
|
||||
run: |
|
||||
KEY=$(openssl rand -base64 32 | tr '+/' '-_')
|
||||
echo "TOKEN_ENCRYPTION_KEY=${KEY}" >> "$GITHUB_ENV"
|
||||
|
||||
# Start services with the appropriate profile
|
||||
- name: Run docker compose
|
||||
uses: hoverkraft-tech/compose-action@4894d2492015c1774ee5a13a95b1072093087ec3 # v2.5.0
|
||||
@@ -139,11 +151,8 @@ jobs:
|
||||
env:
|
||||
MCP_SERVER_URL: ${{ matrix.mcp-internal-url }}
|
||||
NEXTCLOUD_IMAGE: ${{ matrix.nextcloud_image }}
|
||||
# Required by docker-compose.yml since PR #758 finding 5 (no more
|
||||
# hardcoded Fernet keys). Generated once and stored as a repo
|
||||
# secret; the CI tokens.db is ephemeral so a single shared key
|
||||
# across services is acceptable.
|
||||
TOKEN_ENCRYPTION_KEY: ${{ secrets.TOKEN_ENCRYPTION_KEY }}
|
||||
# Inherited from $GITHUB_ENV via the previous step.
|
||||
TOKEN_ENCRYPTION_KEY: ${{ env.TOKEN_ENCRYPTION_KEY }}
|
||||
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
|
||||
|
||||
Reference in New Issue
Block a user