Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev UI: security / JWT / OIDC #34577

Closed
FroMage opened this issue Jul 6, 2023 · 4 comments · Fixed by #35324
Closed

Dev UI: security / JWT / OIDC #34577

FroMage opened this issue Jul 6, 2023 · 4 comments · Fixed by #35324

Comments

@FroMage
Copy link
Member

FroMage commented Jul 6, 2023

Description

It would be super useful if the Dev UI panel showed info such as:

  • Current user (for all authentication methods)
  • Authentication method (of the current user)
  • Authentication methods (enabled), and some info about them, like their endpoints, docs
  • For OIDC / JWT:
    -- Current tenant
    -- Tenants (enabled)
    -- UserInfo
    -- ID Token
    -- Refrensh Token
    -- Access Token

And in the case of JWT tokens, we should decode them, and provide something like https://jwt.io that is local and doesn't involve sending tokens to untrusted 3rd parties. This would feel much more secure if Dev UI provided that.

/CC @phillip-kruger

Implementation ideas

No response

@quarkus-bot
Copy link

quarkus-bot bot commented Jul 6, 2023

/cc @cescoffier (devui), @pedroigor (oidc), @phillip-kruger (devui), @sberyozkin (jwt,oidc,security)

@sberyozkin
Copy link
Member

Hi @FroMage, for a single tenant, current OIDC DevUI works for Keycloak, or any other provider which does not require PKCE like Twitter - can you please give a try for Google and see what is already available ?

Here is what you should see with current one for a single tenant:

Current user (for all authentication methods)

You'd see something like Logged in as Alice with an option to logout - if the provider supports RP initiated logout

Authentication method (of the current user)

It is implicit for OIDC, but also:

Authentication methods (enabled), and some info about them, like their endpoints, docs

You would see supported method security in Swagger UI

For OIDC / JWT:

-- Current tenant

It has been on the map, as I said, right now it works for the default tenant - but what I'd like to have, is, when more than one tenant is available, OIDC card will let users select the tenant first and then sign in the user with the tenant specific config, I suppose, I can use this JIRA as a specific enhancement request for it

-- Tenants (enabled)
-- UserInfo
-- ID Token
-- Refrensh Token
-- Access Token

ID token and access tokens is what SPA would work with, UserInfo is not supposed to be accepted via the front channel (browser), but you can have a secured service method returning UserInfo and see UserInfo in the Swagger UI (which Phillip integrated with OIDC Dev UI)

@FroMage
Copy link
Member Author

FroMage commented Jul 6, 2023

You'd see something like Logged in as Alice with an option to logout - if the provider supports RP initiated logout

I'd really like to be able to logout without calling the RP initiated logout. In the case of OIDC, especially via Google and related, I want to be able to log out from my application without logging the user out from Google.

Authentication methods (enabled), and some info about them, like their endpoints, docs

You would see supported method security in Swagger UI

Well no, I don't want to see them in Swagger UI. I want to see that I have the following security methods enabled:

  • OIDC / Google
  • WebAuthn
  • Basic
  • Form Auth

It has been on the map, as I said, right now it works for the default tenant - but what I'd like to have, is, when more than one tenant is available, OIDC card will let users select the tenant first and then sign in the user with the tenant specific config, I suppose, I can use this JIRA as a specific enhancement request for it

Without even supporting signing in from Dev UI (which granted, would be nice), we can display the current tenant because I'm already signed in (via my application).

@sberyozkin
Copy link
Member

You'd see something like Logged in as Alice with an option to logout - if the provider supports RP initiated logout
I'd really like to be able to logout without calling the RP initiated logout. In the case of OIDC, especially via Google and >related, I want to be able to log out from my application without logging the user out from Google.

Sure, Google and other social providers don't really have a standard logout endpoint, and we have a local logout support with OidcSession - at the Dev UI level it is about discoverable metadata

Well no, I don't want to see them in Swagger UI. I want to see that I have the following security methods enabled:
OIDC / Google
WebAuthn
Basic
Form Auth

My understanding Swagger UI is only way to fetch the metadata about which resource method is secured, which authentication method is required, what else do you have in mind ?

Without even supporting signing in from Dev UI (which granted, would be nice), we can display the current tenant because I'm already signed in (via my application).

I'm not sure I understand, Dev UI initates SPA, user logs in via this SPA, not via Quarkus, and then this SPA can sent tokens to Quarkus methods to test. DevUI needs a tenant selector before initiating a login

I'll show you later what we'll have for a multi-tenant OIDC Dev UI support

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants