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

[HAL-1832] Activate OIDC in the console #525

Merged
merged 3 commits into from
Jul 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions console/HAL-1832_Activate_OIDC.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
= HAL-1832 Activate OIDC in the console
:author: Harald Pehl
:email: hpehl@redhat.com
:toc: left
:icons: font
:idprefix:
:idseparator: -
:issue-base-url: https://issues.redhat.com/browse

== Overview

With the Keycloak OpenID Connect (OIDC) adapter, it was possible to secure the management console using OIDC. When accessing the management console, the user would get redirected to the Keycloak login page, log in with their credentials, and get redirected back to the management console upon successful authentication. It was also possible for the user to log out of the console.

This RFE is to add the ability to secure the management console when using the native support for OIDC. It addresses the steps necessary to configure the resources in `/subsystem=elytron-oidc-client`.

== Issue Metadata

=== Issue

* {issue-base-url}/HAL-1827[HAL-1832]

=== Related Issues

* {issue-base-url}/EAP7-1796[EAP7-1796]

=== Dev Contacts

* mailto:{email}[{author}]

=== QE Contacts

* mailto:spriadka@redhat.com[Simon Priadka]

=== Testing By
// Put an x in the relevant field to indicate if testing will be done by Engineering or QE.
// Discuss with QE during the Kickoff state to decide this
* [ ] Engineering

* [x] QE

=== Affected Projects or Components

This RFE affects the management console. It depends on the management resources defined by {issue-base-url}/EAP7-1796[EAP7-1796].

=== Other Interested Projects

None

=== Relevant Installation Types
// Remove the x next to the relevant field if the feature in question is not relevant
// to that kind of WildFly installation
* [x] Traditional standalone server (unzipped or provisioned by Galleon)

* [ ] Managed domain

* [ ] OpenShift s2i

* [ ] Bootable jar

== Requirements

Affected UI:: Configuration / Subsystems / Elytron OIDC Client
Affected Resources:: `/subsystem=elytron-oidc-client`

=== Hard Requirements

The console shows the new `elytron-oidc-client` subsystem. The UI for this subsystem is backed by the https://hal.github.io/documentation/concepts/#applications[model browser] which generates a UI based on the resource descriptions.

The UI makes it possible to configure the necessary resources as described in the Elytron admin guide: `docs/src/main/asciidoc/_admin-guide/subsystem-configuration/Elytron_OIDC_Client.adoc`, section "Securing the management console with OpenID Connect". In particular, this means the console makes it possible to add the following resources:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is possible configure RBAC via HAL console?

/core-service=management/access=authorization:write-attribute(name=provider,value=rbac)
/core-service=management/access=authorization:write-attribute(name=use-identity-roles,value=true)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually a good question as the scenario with RBAC access-control is valid in this context, see the documented CLI steps from the base RFE: https://github.com/wildfly/wildfly/pull/16856/files#diff-82d49f155de7505904b2e963e7ecb31f2ab37132f5fb93c2e74dddb6d5a7497dR347

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it is possible to configure RBAC in the console.

Copy link

@kstekovi kstekovi Jun 5, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where? I can't find this setup. Is there also possibility to configure use-identity-roles?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CleanShot 2023-06-05 at 10 49 38

To modify the attribute use-identity-roles you need to use the generic model browser:
CleanShot 2023-06-05 at 11 01 54


* `/subsystem=elytron-oidc-client/provider=keycloak`
* `/subsystem=elytron-oidc-client/secure-deployment=wildfly-management`
* `/subsystem=elytron-oidc-client/secure-server=wildfly-console`

If the console is secured by the Keycloak OpenID Connect (OIDC) provider, the "Access Control" top level category shows a summary of the basic settings. This contains a link to the Keycloak admin console.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Access Control" top level category is not visible when RBAC access-control is set.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the authenticated user have permission to configure access control themselves once roles are mapped?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, I had user with ADMINISTRATOR role. I didn't saw the "Access Control" tab when RBAC was correctly configured.

There is 7 predefined roles which user can have assigned (monitor, operator, maintainer, deployer, superuser, adminsitrator, auditor)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link behind the "Access Control" top-level category depends on whether SSO is enabled.

  • SSO enabled → Show a summary of the basic SSO settings and a link to the Keycloak admin console.
  • SSO disabled → Show a finder-based UI to configure the users, roles, and groups.

Both options provide a way to enable/disable RBAC. That's independent of SSO. With SSO enabled, the users, groups, and roles are assumed to be configured in Keycloack, though.


=== Nice-to-Have Requirements

None

=== Non-Requirements

The console does not offer a dedicated UI/wizards to configure the `elytron-oidc-client` subsystem. This might be addressed in a future RFE.

== Open Questions

* None

== Test Plan

Additional tests are added to the test suite that verify that the relevant OIDC resource (see above) can be configured.

== Community Documentation

See the official HAL website at https://hal.github.io