refactor: simplify configuration by using constants for default base paths

This commit addresses the user feedback that configuration files should not
need to specify default paths when constants are available.

### Changes Made:

#### Configuration Simplification:
- Removed redundant basePath configurations from iam_config_distributed.json
- All stores now use constants for defaults:
  * Sessions: /etc/iam/sessions (DefaultSessionBasePath)
  * Policies: /etc/iam/policies (DefaultPolicyBasePath)
  * Roles: /etc/iam/roles (DefaultRoleBasePath)
- Eliminated empty storeConfig objects entirely for cleaner JSON

#### Updated Store Implementations:
- FilerPolicyStore: Updated hardcoded path to use /etc/iam/policies
- FilerRoleStore: Updated hardcoded path to use /etc/iam/roles
- All stores consistently align with /etc/ filer convention

#### Runtime Filer Address Integration:
- Updated IAM manager methods to accept filerAddress parameter:
  * AssumeRoleWithWebIdentity(ctx, filerAddress, request)
  * AssumeRoleWithCredentials(ctx, filerAddress, request)
  * IsActionAllowed(ctx, filerAddress, request)
  * ExpireSessionForTesting(ctx, filerAddress, sessionToken)
- Enhanced S3IAMIntegration to store filerAddress from S3ApiServer
- Updated all test files to pass test filerAddress ('localhost:8888')

### Benefits:
-  Cleaner, minimal configuration files
-  Consistent use of well-defined constants for defaults
-  No configuration needed for standard use cases
-  Runtime filer address flexibility maintained
-  Aligns with SeaweedFS /etc/ convention throughout

### Breaking Change:
- S3IAMIntegration constructor now requires filerAddress parameter
- All IAM manager methods now require filerAddress as second parameter
- Tests and middleware updated accordingly
This commit is contained in:
chrislu
2025-08-24 14:43:14 -07:00
parent e0b284d2fe
commit 586ebbca2d
8 changed files with 33 additions and 40 deletions
+2 -11
View File
@@ -5,9 +5,6 @@
"issuer": "seaweedfs-sts",
"signingKey": "dGVzdC1zaWduaW5nLWtleS0zMi1jaGFyYWN0ZXJzLWxvbmc=",
"sessionStoreType": "filer",
"sessionStoreConfig": {
"basePath": "/etc/iam/sessions"
},
"providers": [
{
"name": "keycloak-oidc",
@@ -38,16 +35,10 @@
},
"policy": {
"defaultEffect": "Deny",
"storeType": "filer",
"storeConfig": {
"basePath": "/etc/iam/policies"
}
"storeType": "filer"
},
"roleStore": {
"storeType": "filer",
"storeConfig": {
"basePath": "/etc/iam/roles"
}
"storeType": "filer"
},
"roles": [