Hi, Thanks to all of you who reviewed PR 1! Here is PR 2, introducing support for external IDPs:
https://github.com/apache/polaris/pull/1397 I included detailed explanations and examples in the PR. Thanks, Alex On Thu, Apr 17, 2025 at 12:42 AM Michael Collado <collado.m...@gmail.com> wrote: > Very slick. Thanks for the extra flexibility. Looking forward to the PR > > Mike > > On Wed, Apr 16, 2025 at 12:54 PM Alex Dutra <alex.du...@dremio.com.invalid > > > wrote: > > > Hi again, > > > > As a follow-up, I was able today to make it possible for each realm to be > > dynamically authenticated by either the internal token endpoint, or any > of > > the configured OIDC tenants. > > > > So, I take back my previous statement about the impossibility to mix > > internal and external authentication for the same realm. > > > > The following kind of realm configurations should therefore be possible: > > > > - Realm A: internal auth only, with RSA key pair > > - Realm B: internal or external auth; internal with shared secret, > > external with IDP X > > - Realm C: external auth only, with IDP X or Y > > > > I hope that this extra flexibility will make it easier for you to adapt > to > > Quarkus OIDC. > > > > Thanks, > > > > Alex > > Alex > > > > On Wed, Apr 16, 2025 at 3:26 PM Alex Dutra <alex.du...@dremio.com> > wrote: > > > > > Hi Mike, > > > > > > My current work makes it possible to define if the authentication is > > > *internal* (using the internal token endpoint + custom auth mechanism) > or > > > *external* (using an external IDP + Quarkus OIDC extension). > > > > > > Furthermore, the authentication can be defined on a global level, *then > > > overridden on a per-realm basis*. Combined with the fact that Quarkus > > > OIDC also supports multi-tenancy, my work should make it possible to > > > handle, for example, the following configuration: > > > > > > - Realm A: internal auth, RSA key pair M > > > - Realm B: internal auth, RSA key pair N > > > - Realm C: internal auth, Symmetric key, secret S > > > - Realm D: external auth, IDP X > > > - Realm E: external auth, IDP X or Y > > > > > > However: > > > > > > I want to make sure that it would still be > > >> possible to use different authn mechanisms for different requests in > the > > >> same realm. > > > > > > > > > *It won't be possible to mix internal and external authentication for > the > > > same realm.* I think this would complicate things a lot and I don't > see a > > > good reason to do this. > > > > > > That said, for realms that would opt for external auth, it will be > > > possible to use more than one IDP per realm, since Quarkus OIDC is > > > multi-tenant and has the ability to select tenants based on various > > > criteria, such as the token issuer URL. This is what Realm E > illustrates > > in > > > my example above. > > > > > > Is that OK for you? > > > > > > Thanks, > > > > > > Alex > > > > > > > > > On Tue, Apr 15, 2025 at 10:32 PM Michael Collado < > collado.m...@gmail.com > > > > > > wrote: > > > > > >> Hi Alex > > >> > > >> I'm going through the PR now and I think the Quarkus security approach > > >> seems fine. I was actually thinking of working on this previously > > myself. > > >> > > >> > This shall be done by implementing a new > HttpAuthenticationMechanism > > >> that will pick the right authentication mechanism (internal token > broker > > >> vs > > >> external IdP) based on the runtime configuration. > > >> > > >> Regarding this statement, I want to make sure that it would still be > > >> possible to use different authn mechanisms for different requests in > the > > >> same realm. I also recently started picking up some of the work from > the > > >> federated auth proposal and something we need to ensure is that we can > > >> support both external identity providers as well as the internal token > > >> broker. > > >> > > >> Mike > > >> > > >> > > >> On Tue, Apr 15, 2025 at 6:52 AM Jean-Baptiste Onofré <j...@nanthrax.net > > > > >> wrote: > > >> > > >> > Hi Alex, > > >> > > > >> > It sounds like a good plan :) > > >> > > > >> > Thanks ! > > >> > Regards > > >> > JB > > >> > > > >> > On Mon, Apr 14, 2025 at 10:50 PM Alex Dutra > > >> > <alex.du...@dremio.com.invalid> wrote: > > >> > > > > >> > > Hi all, > > >> > > > > >> > > A recently-reported bug [1] uncovered some serious issues with the > > >> JAX-RS > > >> > > authentication filters. Fixing this bug requires replacing the > > >> > incriminated > > >> > > filters with proper Quarkus Security mechanisms. > > >> > > > > >> > > In parallel to that, support for external identity providers has > > been > > >> > > requested many times, see [2], [3] and [4]. We know however that > > this > > >> > > feature can only be delivered by implementing similar mechanisms. > > >> > > > > >> > > There might be an opportunity here to kill two birds with one > > stone. I > > >> > > would like therefore to make the following proposal: > > >> > > > > >> > > 1. In a first PR, *replace the current authentication filters* > by > > >> > > Quarkus Security. This PR should be transparent to users and > > should > > >> > not > > >> > > change the current behavior of Polaris, nor its configuration > > >> options. > > >> > > 2. In a second PR, *implement support for external identity > > >> > providers*. > > >> > > This shall be done by implementing a new > > >> HttpAuthenticationMechanism > > >> > > that will pick the right authentication mechanism (internal > token > > >> > broker vs > > >> > > external IdP) based on the runtime configuration. > > >> > > > > >> > > If you agree with this proposal, I'm happy to start working on > the > > >> first > > >> > > PR. > > >> > > > > >> > > Thanks, > > >> > > > > >> > > Alex > > >> > > > > >> > > [1]: https://github.com/apache/polaris/issues/1345 > > >> > > [2]: https://github.com/apache/polaris/issues/336 > > >> > > [3]: https://github.com/apache/polaris/issues/976 > > >> > > [4]: https://github.com/apache/polaris/issues/1327 > > >> > > > >> > > > > > >