diff --git a/docs/documentation/upgrading/topics/changes/changes-27_0_0.adoc b/docs/documentation/upgrading/topics/changes/changes-27_0_0.adoc index 024fa418c44..6b923e282b5 100644 --- a/docs/documentation/upgrading/topics/changes/changes-27_0_0.adoc +++ b/docs/documentation/upgrading/topics/changes/changes-27_0_0.adoc @@ -4,6 +4,14 @@ Breaking changes are identified as those that might require changes for existing users to their configurations or applications. In minor or patch releases, {project_name} will only introduce breaking changes to fix bugs. +=== Realm-level default client scopes require `manage-realm` +// https://github.com/keycloak/keycloak/issues/50588 + +Changing the realm-level default and optional client scopes through the Admin REST API endpoints `default-default-client-scopes/{clientScopeId}` and `default-optional-client-scopes/{clientScopeId}` now requires the `manage-realm` role. +Previously `manage-clients` was sufficient, even though these lists determine which client scopes every newly created client in the realm receives. +Administrators who hold only `manage-clients` can still create, update, and delete individual client scopes, and can still read the realm-level lists; they can no longer change which of them are realm defaults. +If you have automation that manages realm default client scopes with a `manage-clients` account, grant it `manage-realm` or run it with an account that already has it. + === Deleting required client scopes // https://github.com/keycloak/keycloak/issues/51248 diff --git a/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx b/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx index 3505b511ded..7f7a371b7c4 100644 --- a/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx +++ b/js/apps/admin-ui/src/client-scopes/ChangeTypeDropdown.tsx @@ -9,6 +9,7 @@ import { useTranslation } from "react-i18next"; import { useAdminClient } from "../admin-client"; import type { Row } from "../clients/scopes/ClientScopes"; import { useAlerts } from "@keycloak/keycloak-ui-shared"; +import { useAccess } from "../context/access/Access"; import { ClientScope, allClientScopeTypes, @@ -34,6 +35,7 @@ export const ChangeTypeDropdown = ({ const [open, setOpen] = useState(false); const { addAlert, addError } = useAlerts(); + const { hasAccess } = useAccess(); return (