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
>> >
>>
>

Reply via email to