Files
seaweedfs/test
chrislu beb23b0ab5 feat: Implement configuration-driven identity providers for distributed STS
PROBLEM SOLVED:
- Identity providers were registered manually on each STS instance
- No guarantee of provider consistency across distributed deployments
- Authentication behavior could differ between S3 gateway instances
- Operational complexity in managing provider configurations at scale

IMPLEMENTATION:
- Add provider configuration support to STSConfig schema
- Create ProviderFactory for automatic provider loading from config
- Update STSService.Initialize() to load providers from configuration
- Support OIDC and mock providers with extensible factory pattern
- Comprehensive validation and error handling for provider configs

NEW COMPONENTS:
- weed/iam/sts/provider_factory.go - Factory for creating providers from config
- weed/iam/sts/provider_factory_test.go - Comprehensive factory tests
- weed/iam/sts/distributed_sts_test.go - Distributed STS integration tests
- test/s3/iam/STS_DISTRIBUTED.md - Complete deployment and operations guide

CONFIGURATION SCHEMA:
{
  'sts': {
    'providers': [
      {
        'name': 'keycloak-oidc',
        'type': 'oidc',
        'enabled': true,
        'config': {
          'issuer': 'https://keycloak.company.com/realms/seaweedfs',
          'clientId': 'seaweedfs-s3',
          'clientSecret': 'secret',
          'scopes': ['openid', 'profile', 'email', 'roles']
        }
      }
    ]
  }
}

DISTRIBUTED BENEFITS:
-  Consistent providers across all S3 gateway instances
-  Configuration-driven - no manual provider registration needed
-  Automatic validation and initialization of all providers
-  Support for provider enable/disable without code changes
-  Extensible factory pattern for adding new provider types
-  Comprehensive testing for distributed deployment scenarios

This completes the distributed STS implementation, making SeaweedFS
S3 Gateway truly production-ready for multi-instance deployments
with consistent, reliable authentication across all instances.
2025-08-24 13:06:05 -07:00
..
2023-11-13 08:23:53 -08:00