Thanks Christian. Nice write-up! Authentication is essential to a
production env. It's great to document it well given a lot of people don't
necessarily have enough OAthen2 knowledge. Looking forward to the doc PRs
and other client side changes.

Yufei


On Wed, Sep 18, 2024 at 8:31 AM Dmitri Bourlatchkov
<dmitri.bourlatch...@dremio.com.invalid> wrote:

> Hi Christian,
>
> Very nice proposal. Thanks for putting it together! I added some comments
> to the doc.
>
> I think it is related to PR #10753 [4], which proposes some foundational
> refactoring to the java REST client to enable further enhancements in
> OAuth2 flows.
>
> Cheers,
> Dmitri.
>
> [4] https://github.com/apache/iceberg/pull/10753
>
> On Wed, Sep 18, 2024 at 4:12 AM Christian Thiel
> <christ...@hansetag.com.invalid> wrote:
>
>> Dear everyone,
>>
>>
>> the Iceberg REST specification allows for different ways of
>> Authentication, OAuth2 is one of them. Until recently the OAuth2 /token
>> endpoint was part of the REST-spec together with datatypes required for the
>> client-credential flow. Both have since been removed from the spec for
>> security reasons [2].
>>
>> Probably because it was a part of the spec before, clients today
>> typically only implement the client-credential flow. This stays behind
>> OAuth2 capabilities and is unsuitable for human users. Common IdPs do not
>> implement the client-credential flow for principals of human users for good
>> reasons.
>>
>>
>>
>> To mitigate this problem, we propose an extension of the Iceberg
>> documentation in 3 steps. This proposal is neither an extension of the
>> Iceberg REST Catalog specification nor OAuth2 itself. The Iceberg REST
>> specification already specifies OAuth2 Authentication [3], which includes
>> all the flows mentioned in the document of this proposal [1].
>>
>>
>>
>> My proposal to go forward is as follows:
>>
>>    1. Use this proposals Google Doc for alignment in the community: [1]
>>
>>    
>> https://docs.google.com/document/d/1A6bJfSzkTzDWUIegdckSsoaeFxZl1Qn5htI1jzyBQss/edit?usp=sharing
>>    Discuss in a catalog sync in 1-2 weeks.
>>    2. Condense consensus found in Google Doc to .md and add it to docs
>>    3. Implement additional flows in the iceberg-(java, python, rust ..)
>>    packages.
>>    For Java there is already a PR that goes in this direction which
>>    could use some more attention:
>>    https://github.com/apache/iceberg/pull/10753
>>    For other languages I am not aware of any initiatives.
>>    4. Encourage clients to allow configuration of new flows for users
>>
>> Any feedback welcome!
>>
>> Thanks
>> - Christian
>>
>> [1]:
>> https://docs.google.com/document/d/1A6bJfSzkTzDWUIegdckSsoaeFxZl1Qn5htI1jzyBQss/edit?usp=sharing
>> [2]:
>> https://docs.google.com/document/d/1Xi5MRk8WdBWFC3N_eSmVcrLhk3yu5nJ9x_wC0ec6kVQ
>>
>> [3]:
>> https://github.com/apache/iceberg/blob/ed73ec43dd25c9023069ea1d3381a6d9229be53a/open-api/rest-catalog-open-api.yaml#L61
>>
>>
>>
>

Reply via email to