XJDKC opened a new pull request, #2759:
URL: https://github.com/apache/polaris/pull/2759
<!--
Possible security vulnerabilities: STOP here and contact
[email protected] instead!
Please update the title of the PR with a meaningful message - do not
leave it "empty" or "generated"
Please update this summary field:
The summary should cover these topics, if applicable:
* the motivation for the change
* a description of the status quo, for example the current behavior
* the desired behavior
* etc
PR checklist:
- Do a self-review of your code before opening a pull request
- Make sure that there's good test coverage for the changes included in
this PR
- Run tests locally before pushing a PR (./gradlew check)
- Code should have comments where applicable. Particularly
hard-to-understand
areas deserve good in-line documentation.
- Include changes and enhancements to the documentation (in
site/content/in-dev/unreleased)
- For Work In Progress Pull Requests, please use the Draft PR feature.
Make sure to add the information BELOW this comment.
Everything in this comment will NOT be added to the PR description.
-->
## Milestones
This is Part 3 of the [[Splitting] Initial SigV4 Auth Support for Catalog
Federation](https://github.com/apache/polaris/pull/1805). Upcoming parts will
build on this system:
* ~~#1899~~
* #2190
* #2523
* SigV4 Auth Support for Catalog Federation - Part 4: Connection Credential
Manager
## Introduction
This PR introduces a flexible connection credential management system for
Polaris. Building on Part 3's service identity management, this system combines
Polaris service identities with user-provided authentication parameters to
generate credentials for remote catalog access.
The core of this PR is the new `ConnectionCredentialVendor` interface, which:
* Generates connection credentials by combining service identity with user
auth parameters
* Supports different authentication types (SIGV4, OAuth) through CDI
* Provides on-demand credential generation
* Enables easy extension for new authentication types
## Key Components
1. **ConnectionCredentialVendor**
The central interface that defines how connection credentials are generated.
It combines Polaris service identities with user-provided authentication
parameters to produce the final credentials needed for remote catalog access.
This interface serves as the foundation for all authentication type-specific
implementations.
2. **DefaultPolarisCredentialManager**
The primary implementation that orchestrates credential generation. It uses
CDI to automatically select the appropriate vendor based on authentication
type, delegates the credential generation process, and provides consistent
error handling. This class integrates with the ServiceIdentityProvider from
Part 3 to resolve Polaris service identities.
3. **SigV4ConnectionCredentialVendor**
A reference implementation for AWS SigV4 authentication. It handles the
complex process of resolving AWS IAM credentials from service identities,
performing AWS STS AssumeRole operations, and generating temporary credentials
for catalog access. This implementation demonstrates best practices for vendor
development.
4. **@SupportsAuthType**
A CDI qualifier annotation that marks vendor implementations with their
supported authentication types. This enables automatic vendor selection at
runtime while maintaining type safety. The qualifier is essential for the
CDI-based pluggable architecture.
## Future Improvements
* Add credential caching support
* Migrate storage creds to this new framework
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]