<div dir="ltr"><div><div><div><div>Hello,<br><br></div>I&#39;m trying to design a keycloak-based system that will have the following characteristics:<br><br></div>* A single realm R will exist with a big set of users.<br></div>* Users will be able to install instances of software X that consists of four (4) applications protected by keycloak.<br></div><div>* Each application in any instance of X will have a corresponding Keycloak Client entity containing a set of application-level roles. Thus, having the appropriate role,m a user of R can selectively be granted access to any application of any instance of X.<br></div><div>* The addition of a new instance of X to the keycloak realm (the creation of the Clients, client roles etc.) is called &#39;registration&#39; and will be done using the Keycloak Admin REST API.<br></div><div><br></div><div>What&#39;s the best practice to achieve automatic registration of a new instance to the realm? <br><br>I&#39;ve considered the following:<br><br></div><div>a. Have the instance applications *directly* consume keycloak Admin REST API and create Clients and Client roles. As far as i investigated users of the instance will need to have a  R:realm-management:manage-clients role in order to do that (create-client didn&#39;t work). This seems a pretty permissive role to give to any user in R.<br></div><div><br>b. Have a separate keycloak-protected application that won&#39;t be part of X to do the important work of &#39;registration&#39;. It will work as a proxy. The application will act on behalf of an administrator user with a powerfull role like R:realm-management:realm-admin. The application will define it&#39;s own set of roles and HTTP API for instance registration. All users will have to go through it to register their instance. It will work as a proxy. But they won&#39;t need to be granted dangerous roles to do it.<br><br></div><div>Any suggestion will be more than welcome.<br><br></div><div>Thanks<br><br></div><div>Orestis<br></div><div><br></div></div>