Any plans of introducing sigv4 authentication native support
- Dominant language
- Rust
- Stars
- 1.4k
- Forks
- 567
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 93
Description
### Is your feature request related to a problem or challenge?
Currently we are working on re-building our etl's in rust, for the iceberg part we use rest catalogue's which have sigv4 set up. every time we need to commit to Iceberg we have to call a python code for committing, primary reason being sigV4, although I have implemented that part in now in rust. Anyhow is there any plan of introducing them here, if yes can I work on that?
### Describe the solution you'd like
Here is the example code that worked for me
```
let identity: Identity = Credentials::new(access_key, secret_key, None, None, "config").into();
let signing_settings = SigningSettings::default();
let signing_params = v4::SigningParams::builder()
.identity(&identity)
.region(®ion)
.name(&catalog.signing_name)
.time(SystemTime::now())
.settings(signing_settings)
.build()
.context("building SigV4 signing params")?
.into();
let signable = SignableRequest::new(
"GET",
&url,
std::iter::once(("host", host.as_str())),
SignableBody::Bytes(&[]),
)
.context("building signable request")?;
let (instructions, _sig) = sign(signable, &signing_params)
.context("signing catalog request")?
.into_parts();
let mut http_req = http::Request::builder()
.method("GET")
.uri(&url)
.header("host", &host)
.body(Vec::::new())
.context("building http request")?;
instructions.apply_to_request_http1x(&mut http_req);
```
### Willingness to contribute
Yes
Contributor guide
Research direction
The issue names no files, tests, or entry points; start by tracing how REST catalog requests and authentication are configured. Compare the existing Rust request path with the supplied SigV4 example, and define done as committing to an Iceberg REST catalog with SigV4 without calling Python.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- api, authentication
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100