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