From 40f057030c23f715b2f222d511e7f71d8ae74281 Mon Sep 17 00:00:00 2001 From: simple321vip Date: Wed, 22 Jul 2026 22:01:51 +0800 Subject: [PATCH] ver 2.1 -> 2.2 --- .gitea/workflows/iam-ci.yml | 55 ------------------------------------- AGENT.md => AGENTS.md | 4 +-- pom.xml | 6 ++-- 3 files changed, 4 insertions(+), 61 deletions(-) delete mode 100644 .gitea/workflows/iam-ci.yml rename AGENT.md => AGENTS.md (99%) diff --git a/.gitea/workflows/iam-ci.yml b/.gitea/workflows/iam-ci.yml deleted file mode 100644 index e88e49e..0000000 --- a/.gitea/workflows/iam-ci.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: iam-ci - -on: - push: - branches: [main] - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - env: - VIOLIN_IAM_SERVICE_TOKEN_SECRET: "0011223344556677889900aabbccddeeff0011223344556677889900aabbccddeeff" - VIOLIN_JWT_PRIVATE_KEY_PATH: "" - SPRING_PROFILES_ACTIVE: dev - - steps: - # Step 1: compile + run tests. Replaces Drone's `compile` step but does - # NOT skip tests — this is a CI gate on every PR. - - name: Compile + test violin-iam - image: gitea.violin-work.online/registry/maven:3.9-eclipse-temurin-22 - env: - MAVEN_OPTS: "-Dmaven.repo.local=/root/.m2/repository -Dmaven.watcher.disabled=true" - commands: - - mkdir -p /root/.m2/repository - - ulimit -n 65536 - - for m in violin-parent violin-common violin-core; do - echo "--- installing $m ---"; - mvn -B -f "$m/pom.xml" clean install -DskipTests; - done - - mvn -B -f violin-iam/pom.xml verify - - # Step 2: build image via kaniko and push to the violin registry. - # Mirrors the `drone-kaniko` plugin used by .drone.yml. Only runs on - # pushes to main (PR branches just want the test gate). - - name: Build and push image - if: gitea.ref == 'refs/heads/main' - image: gitea.violin-work.online/registry/drone-kaniko:latest - settings: - repo: gitea.violin-work.online/violin/violin-iam - tags: - - latest - - ${GITEA_SHA:0:8} - dockerfile: Dockerfile - context: . - registry: gitea.violin-work.online - username: simple321vip - password: - from_secret: docker_password - - # Step 3: roll the deployment. Only after main-branch image push. - - name: Deploy to violin namespace - if: gitea.ref == 'refs/heads/main' - image: gitea.violin-work.online/registry/kubectl:latest - commands: - - kubectl set image deployment/violin-iam violin-iam=gitea.violin-work.online/violin/violin-iam:${GITEA_SHA:0:8} -n violin diff --git a/AGENT.md b/AGENTS.md similarity index 99% rename from AGENT.md rename to AGENTS.md index d982a2f..5e80853 100644 --- a/AGENT.md +++ b/AGENTS.md @@ -67,8 +67,6 @@ context. Concrete gotchas to fix: ## Design notes (do not skip) -## Design notes (do not skip) - ### JWT revocation propagation — what we tried, what we picked, and why The naive question "should we drop `customerId` from the JWT claim so @@ -76,6 +74,7 @@ downstream must call IAM every request?" was the wrong frame. Below is the actual decision tree we walked. #### Problem + A user's `t_user.customer_id` is migrated from tenant A to tenant B. The JWT issued at login still carries `customerId=A`. Without propagation the user keeps operating under A's RBAC scope (and SAR cache) for the @@ -146,4 +145,3 @@ push `(sub, oldCustomerId)` into it. Have `PermissionAspect` consult the cache as a secondary check (after verified gate). Reduce default `expirationMs` in `ViolinJwtProperties` from `86_400_000` (24 h) to `3_600_000` (1 h). These three together close the revocation window to the bound of TTL. - diff --git a/pom.xml b/pom.xml index 62b0d46..0dd5dd1 100644 --- a/pom.xml +++ b/pom.xml @@ -7,11 +7,11 @@ cn.violin violin-parent - 2.1 + 2.2 violin-iam - 2.1 + 2.2 violin-iam violin IAM service @@ -19,7 +19,7 @@ cn.violin violin-core - 2.1 + 2.2