iceberg: give the catalog's table handler the local accounts and issuer set

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Chris LuandClaude Opus 5.5 committed 2026-11-13 02:56:59 -08:00
1 parent 3810ba2133
commit df2de6d1a4
2 files changed
+24

No files matched your search

+8
View File
@@ -73,6 +73,14 @@ func NewServer(filerClient FilerClient, authenticator S3Authenticator) *Server {
if authenticator != nil {
manager.SetDefaultAllow(authenticator.DefaultAllow())
}
if checker, ok := authenticator.(interface{ IsConfiguredAccountID(string) bool }); ok {
manager.SetLocalAccountChecker(checker.IsConfiguredAccountID)
}
if source, ok := authenticator.(interface {
TrustedOIDCIssuers(context.Context) []string
}); ok {
manager.SetTrustedIssuerSource(source.TrustedOIDCIssuers)
}
return &Server{
filerClient: filerClient,
tablesManager: manager,
+16
View File
@@ -1528,6 +1528,22 @@ func (s3a *S3ApiServer) DefaultAllow() bool {
return s3a.iam.iamIntegration.DefaultAllow()
}
// IsConfiguredAccountID reports whether id is the account of a configured identity.
func (s3a *S3ApiServer) IsConfiguredAccountID(id string) bool {
return s3a.iam != nil && s3a.iam.isConfiguredAccountID(id)
}
// TrustedOIDCIssuers returns the configured OIDC issuer set.
func (s3a *S3ApiServer) TrustedOIDCIssuers(ctx context.Context) []string {
if s3a.iam == nil {
return nil
}
if s3iam, ok := s3a.iam.iamIntegration.(*S3IAMIntegration); ok {
return s3iam.trustedOIDCIssuers(ctx)
}
return nil
}
// ValidateS3Credential validates an S3 access key / secret key pair.
// Returns the identity name and identity object on success.
func (s3a *S3ApiServer) ValidateS3Credential(accessKey, secretKey string) (string, interface{}, error) {