<div dir="ltr">To make sure that the user has all roles of a given application. If someone creates another role after granting app-admin, it is automatically inserted into app-admin composite role and therefore granted.<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 7, 2015 at 3:38 AM, Stian Thorgersen <span dir="ltr">&lt;<a href="mailto:stian@redhat.com" target="_blank">stian@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">What&#39;s the purpose of app-admin?<br>
<span class="im HOEnZb"><br>
----- Original Message -----<br>
&gt; From: &quot;Thiago Presa&quot; &lt;<a href="mailto:thiago.addevico@gmail.com">thiago.addevico@gmail.com</a>&gt;<br>
&gt; To: &quot;Stian Thorgersen&quot; &lt;<a href="mailto:stian@redhat.com">stian@redhat.com</a>&gt;<br>
&gt; Cc: <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
</span><div class="HOEnZb"><div class="h5">&gt; Sent: Wednesday, 1 April, 2015 7:33:26 PM<br>
&gt; Subject: Re: [keycloak-user] Application Management<br>
&gt;<br>
&gt; Speaking with my colleagues, I believe it won&#39;t cause troubles for us. We<br>
&gt; had to give view-applications: the admin console wouldn&#39;t work properly,<br>
&gt; but this is also OK according to our requirements.<br>
&gt;<br>
&gt; Would you mind giving us some feedback on [1]? We wrote this to experiment<br>
&gt; a bit with the proposal, but I&#39;m not familiar with keycloak&#39;s source or<br>
&gt; practices. What should I do to help get this merged?<br>
&gt;<br>
&gt; [1] <a href="https://github.com/keycloak/keycloak/compare/master...tpresa:master" target="_blank">https://github.com/keycloak/keycloak/compare/master...tpresa:master</a><br>
&gt;<br>
&gt; On Fri, Mar 27, 2015 at 10:51 AM, Stian Thorgersen &lt;<a href="mailto:stian@redhat.com">stian@redhat.com</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; ----- Original Message -----<br>
&gt; &gt; &gt; From: &quot;Thiago Presa&quot; &lt;<a href="mailto:thiago.addevico@gmail.com">thiago.addevico@gmail.com</a>&gt;<br>
&gt; &gt; &gt; To: &quot;Stian Thorgersen&quot; &lt;<a href="mailto:stian@redhat.com">stian@redhat.com</a>&gt;<br>
&gt; &gt; &gt; Cc: <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt; &gt; &gt; Sent: Friday, 27 March, 2015 2:01:56 PM<br>
&gt; &gt; &gt; Subject: Re: [keycloak-user] Application Management<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Ah, yes, I didn&#39;t understand your proposal properly. Wouldn&#39;t giving<br>
&gt; &gt; &gt; manage-users to app-admins wouldn&#39;t cause trouble, since app-admins could<br>
&gt; &gt; &gt; create and modify user accounts?<br>
&gt; &gt;<br>
&gt; &gt; Whether or not it&#39;s causing trouble depends on your requirements, but yes,<br>
&gt; &gt; they could create and modify user accounts, but not grant more privileges.<br>
&gt; &gt;<br>
&gt; &gt; If you need to go beyond this one alternative is to wrap the admin<br>
&gt; &gt; endpoints in your own application. We&#39;ve just got so much on our plate at<br>
&gt; &gt; the moment that we can&#39;t provide this level of control on permissions.<br>
&gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On Fri, Mar 27, 2015 at 1:58 AM, Stian Thorgersen &lt;<a href="mailto:stian@redhat.com">stian@redhat.com</a>&gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Well, yes.. I told you it was a bit rubbish and would need some<br>
&gt; &gt; re-design<br>
&gt; &gt; &gt; &gt; to implement more fine grained permissions. Doing that is a relatively<br>
&gt; &gt; big<br>
&gt; &gt; &gt; &gt; task and is not a high priority for us ATM.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I&#39;m a bit confused by this email as I proposed a simple solution that<br>
&gt; &gt; &gt; &gt; would resolve your requirements. If an admin can only grant permissions<br>
&gt; &gt; &gt; &gt; that admin has access to all you have to do is to create an admin that<br>
&gt; &gt; can<br>
&gt; &gt; &gt; &gt; only access roles for certain applications and your problem should be<br>
&gt; &gt; &gt; &gt; solved. That&#39;s a simple solution that we can add soon.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; ----- Original Message -----<br>
&gt; &gt; &gt; &gt; &gt; From: &quot;Thiago Presa&quot; &lt;<a href="mailto:thiago.addevico@gmail.com">thiago.addevico@gmail.com</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; To: &quot;Stian Thorgersen&quot; &lt;<a href="mailto:stian@redhat.com">stian@redhat.com</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; Cc: <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt; &gt; &gt; &gt; &gt; Sent: Thursday, 26 March, 2015 8:10:07 PM<br>
&gt; &gt; &gt; &gt; &gt; Subject: Re: [keycloak-user] Application Management<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; So I&#39;ve spent the last couple of days playing with the source. :-)<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; The current authorization mechanism is based on Realm/RealmApp i.e.<br>
&gt; &gt; &gt; &gt; &gt; whenever an API resource is called, check if the User has the<br>
&gt; &gt; required<br>
&gt; &gt; &gt; &gt; &gt; Right (manage, any, view) in the resource&#39;s Realm/RealmApp.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Consider, for example, the URI<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; /admin/realms/{realm}/applications-by-id/{app-name}/roles/{role-name}.<br>
&gt; &gt; &gt; &gt; What<br>
&gt; &gt; &gt; &gt; &gt; I was trying to do is to create a permission for {app-name} so that<br>
&gt; &gt; this<br>
&gt; &gt; &gt; &gt; &gt; API call wouldn&#39;t require any Realm/RealmApp right.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; The problem I see is that this API call trigger many methods (i.e.<br>
&gt; &gt; &gt; &gt; &gt; AdminRoot#getRealmsAdmin, RealmsAdminResource#getRealmAdmin,<br>
&gt; &gt; &gt; &gt; &gt; RealmAdminResource#getApplicationsById, and so on...), and at those<br>
&gt; &gt; &gt; &gt; methods<br>
&gt; &gt; &gt; &gt; &gt; there is not enough information to figure out whether this is:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; 1- An app-specific call and thus should be authorized even without<br>
&gt; &gt; realm<br>
&gt; &gt; &gt; &gt; &gt; authorization, or;<br>
&gt; &gt; &gt; &gt; &gt; 2- Not app-specific call and this should be properly authorized by<br>
&gt; &gt; &gt; &gt; &gt; Realm/RealmApp.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Even in the case of (1), the information on which app should I check<br>
&gt; &gt; for<br>
&gt; &gt; &gt; &gt; &gt; authorization is not available.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; So it seems to me that this resource-loading mechanisms pressuposes<br>
&gt; &gt; an<br>
&gt; &gt; &gt; &gt; &gt; authorization mechanism that checks only against the realm for<br>
&gt; &gt; &gt; &gt; permission,<br>
&gt; &gt; &gt; &gt; &gt; and changing this seems daunting to me.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Do you guys have any idea on a more local change I could make to<br>
&gt; &gt; achieve<br>
&gt; &gt; &gt; &gt; &gt; the intended behavior?<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; On Tue, Mar 24, 2015 at 2:33 PM, Thiago Presa &lt;<br>
&gt; &gt; <a href="mailto:thiago.addevico@gmail.com">thiago.addevico@gmail.com</a><br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; OK, agreed. We thought this out of consistency, but if that&#39;s not a<br>
&gt; &gt; &gt; &gt; good<br>
&gt; &gt; &gt; &gt; &gt; &gt; design we surely can consider a better one.<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; On Tue, Mar 24, 2015 at 9:44 AM, Stian Thorgersen &lt;<br>
&gt; &gt; <a href="mailto:stian@redhat.com">stian@redhat.com</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; ----- Original Message -----<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; From: &quot;Thiago Presa&quot; &lt;<a href="mailto:thiago.addevico@gmail.com">thiago.addevico@gmail.com</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; To: <a href="mailto:stian@redhat.com">stian@redhat.com</a><br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; Cc: <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; Sent: Tuesday, 24 March, 2015 1:41:16 PM<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; Subject: Re: [keycloak-user] Application Management<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; Hi there,<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; I&#39;m Alex&#39;s coworker and I&#39;ll be working on this too.<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; We were just discussing your idea, and it seems to fit our<br>
&gt; &gt; &gt; &gt; requirements.<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; As far as we have seen, keycloak already has a realm-admin<br>
&gt; &gt; concept.<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; Whenever a realm &quot;R&quot; is created, it creates a R-realm<br>
&gt; &gt; application<br>
&gt; &gt; &gt; &gt; with<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; a bunch of default roles (manage-users, manage-roles, etc.)<br>
&gt; &gt; into the<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; realm master.<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; We are currently thinking if we could mimic this structure for<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; applications. What do you think?<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; It&#39;s already messy with the way I modelled it and adding the same<br>
&gt; &gt; for<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; applications would be even worse. I don&#39;t see why that&#39;s needed<br>
&gt; &gt; &gt; &gt; though if<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; we&#39;d add what I proposed.<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; I had an idea a while back that is a simple way to achieve<br>
&gt; &gt; what<br>
&gt; &gt; &gt; &gt; you&#39;re<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; asking for. Th&gt; e idea would be to only allow an admin to<br>
&gt; &gt; grant<br>
&gt; &gt; &gt; &gt; roles<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; that<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; the admin has access to.<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; Basically:&gt; * A user with admin (super user) role can grant<br>
&gt; &gt; any<br>
&gt; &gt; &gt; &gt; roles<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; (we<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; would need to add a per-&gt; realm super user role)<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; * A user with the role manage-users and some roles on app1 can<br>
&gt; &gt; &gt; &gt; only<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; grant<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; other users &gt; the roles on app1<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; * A user with the role manage-users and some roles on app2 can<br>
&gt; &gt; &gt; &gt; only<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; grant<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; other users &gt; the roles on app2<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; &gt; This is something we should add in either case (to prevent<br>
&gt; &gt; users<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; granting<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt; themselves more access). Would it solve your problems?<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div></div>