<div dir="ltr">I guess that would work. It does add some load to the database, since we&#39;ll have to check permissions on domain object level, but that will be necessary in some form anyway (i.e. user may modify objects of type X only if they belong to him etc.). <div>
<br></div><div>The only issue is that we might need to be able to assign different roles to the same user in different application instances. I don&#39;t really see a way to implement that with the suggested approach. However, I&#39;m also not really sure we&#39;ll need it and we could have the customer create two users if the roles are different anyway.</div>
<div><br></div><div>Just out of curiosity and since it is briefly mentioned in the user guide, what is your understanding of multitenancy and what are the use cases you are planning to support? (&quot;Multitenancy support. You can host and manage multiple realms for multiple organizations.&quot;)</div>
<div><br></div><div>Cheers, <br>Nils<br><div><br></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, May 31, 2014 at 9:35 PM, Bill Burke <span dir="ltr">&lt;<a href="mailto:bburke@redhat.com" target="_blank">bburke@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">It just seems to me that tenant is a concept specific to your<br>
application and not the security model.  Why can&#39;t a realm manage<br>
multiple instances?<br>
<div class="im HOEnZb"><br>
On 5/31/2014 2:59 PM, Nils Preusker wrote:<br>
&gt; Hi Bill,<br>
&gt;<br>
</div><div class="im HOEnZb">&gt; our use case is as follows: we are developing an application that is<br>
&gt; deployed as a software as a service solution. Each customer gets their<br>
&gt; own &quot;application instance&quot;, but all instances are served by the same<br>
&gt; WAR. Since some customers have several instances (i.e. for departments<br>
&gt; or divisions), it would not be accurate to say customer = realm. So we<br>
&gt; need another level, which is what I mean when I say tenant. The users<br>
&gt; would then be sub-elements of the tenants. However, there is one special<br>
&gt; scenario: some customers wish to have the same users in multiple tenants.<br>
&gt;<br>
&gt; Finally, we want to be able to add customers and instances (or tenants)<br>
&gt; at runtime.<br>
&gt;<br>
&gt; Mapped to my sketch from before, customers could be represented by realm<br>
&gt; (if there is multi-realm support), &quot;application instances&quot; are tenants<br>
&gt; and users can be created both on realm and on tenant level.<br>
&gt;<br>
&gt; What do you think?<br>
&gt;<br>
&gt; Cheers,<br>
&gt; Nils<br>
&gt;<br>
&gt;<br>
&gt; On Fri, May 30, 2014 at 9:13 PM, Bill Burke &lt;<a href="mailto:bburke@redhat.com">bburke@redhat.com</a><br>
</div><div class="im HOEnZb">&gt; &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>&gt;&gt; wrote:<br>
&gt;<br>
&gt;     Why do you need to add realms at runtime?  You haven&#39;t adequately<br>
&gt;     described your use case.<br>
&gt;<br>
&gt;     On 5/30/2014 2:12 PM, Nils Preusker wrote:<br>
&gt;      &gt; Hi Bill,<br>
&gt;      &gt;<br>
&gt;      &gt; I guess you are right, there isn&#39;t really a difference. It would<br>
&gt;     just be<br>
&gt;      &gt; important to be able to add realms at runtime. Are you suggesting to<br>
&gt;      &gt; have nested realms (just replacing tenant with realm in my previous<br>
&gt;      &gt; example)?<br>
&gt;      &gt;<br>
&gt;      &gt; Does that make more sense?<br>
&gt;      &gt; Cheers,<br>
&gt;      &gt; Nils<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt; On Fri, May 30, 2014 at 6:05 PM, Bill Burke &lt;<a href="mailto:bburke@redhat.com">bburke@redhat.com</a><br>
&gt;     &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>&gt;<br>
</div><div class="HOEnZb"><div class="h5">&gt;      &gt; &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a> &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>&gt;&gt;&gt; wrote:<br>
&gt;      &gt;<br>
&gt;      &gt;     I don&#39;t what the different between a tenant and a realm would<br>
&gt;     be in your<br>
&gt;      &gt;     example.<br>
&gt;      &gt;<br>
&gt;      &gt;     On 5/30/2014 5:28 AM, Nils Preusker wrote:<br>
&gt;      &gt;      &gt; Hi Bill,<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt; what I was thinking of was tenants as nested element<br>
&gt;     within a realm.<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt; We&#39;d like to be able to add tenants at runtime. That&#39;s<br>
&gt;     where I see a<br>
&gt;      &gt;      &gt; problem with multi-realm support, since realms are<br>
&gt;     &quot;hardcoded&quot; in the<br>
&gt;      &gt;      &gt; keycloak.json. So if you add a realm in the admin-console,<br>
&gt;     with<br>
&gt;      &gt;      &gt; multi-realm support you&#39;d still have to modify the<br>
&gt;     deployed WAR by<br>
&gt;      &gt;      &gt; adding the new realm to the keycloak.json file.<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt; I was thinking of a structure like this:<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt; |- realm<br>
&gt;      &gt;      &gt; |  |-users<br>
&gt;      &gt;      &gt; |     |-realm-level-user-1<br>
&gt;      &gt;      &gt; |     |-...<br>
&gt;      &gt;      &gt; |-tenants<br>
&gt;      &gt;      &gt; |  |-tenant-1<br>
&gt;      &gt;      &gt; |  |  |-users<br>
&gt;      &gt;      &gt; |  |  |  |-tenant-level-user-1<br>
&gt;      &gt;      &gt; |  |  |  |-...<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt; Let me know what you think!<br>
&gt;      &gt;      &gt; Cheers,<br>
&gt;      &gt;      &gt; Nils<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt; On Thu, May 29, 2014 at 11:04 PM, Bill Burke<br>
&gt;     &lt;<a href="mailto:bburke@redhat.com">bburke@redhat.com</a> &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>&gt;<br>
&gt;      &gt;     &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a> &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>&gt;&gt;<br>
&gt;      &gt;      &gt; &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a> &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>&gt;<br>
&gt;     &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a> &lt;mailto:<a href="mailto:bburke@redhat.com">bburke@redhat.com</a>&gt;&gt;&gt;&gt; wrote:<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;     Somebody else was asking for this feature.  We may have to<br>
&gt;      &gt;     add it beta 2<br>
&gt;      &gt;      &gt;     even though I wanted to have a feature freeze.<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;     How did you expect it to work?  One guy wanted to discover<br>
&gt;      &gt;     realm per<br>
&gt;      &gt;      &gt;     request via parsing the URL.  Another guy just wanted<br>
&gt;     multi-realm<br>
&gt;      &gt;      &gt;     support for bearer-only services.<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;     On 5/29/2014 4:54 PM, Nils Preusker wrote:<br>
&gt;      &gt;      &gt;      &gt; Hi,<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt; first of all, congrats on the beta 1 release!<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt; Here&#39;s my question: I have a WAR with a REST API<br>
&gt;     that I&#39;m<br>
&gt;      &gt;      &gt;     securing with<br>
&gt;      &gt;      &gt;      &gt; Keycloak. Now I&#39;d like to add multitenancy support.<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt; If I understand the concept in keycloak correctly,<br>
&gt;     I would<br>
&gt;      &gt;      &gt;     somehow have<br>
&gt;      &gt;      &gt;      &gt; to have several realms in the keycloak.json and the<br>
&gt;     web.xml of<br>
&gt;      &gt;      &gt;     the war,<br>
&gt;      &gt;      &gt;      &gt; right? However there is just one realm-name<br>
&gt;     attribute in the<br>
&gt;      &gt;      &gt;     web.xml and<br>
&gt;      &gt;      &gt;      &gt; the structure of keycloak.json also looks like it is<br>
&gt;      &gt;     intended for one<br>
&gt;      &gt;      &gt;      &gt; realm. Am I missing something?<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt; Cheers,<br>
&gt;      &gt;      &gt;      &gt; Nils<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;      &gt; _______________________________________________<br>
&gt;      &gt;      &gt;      &gt; keycloak-user mailing list<br>
&gt;      &gt;      &gt;      &gt; <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;      &gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;&gt;<br>
&gt;      &gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;      &gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;&gt;&gt;<br>
&gt;      &gt;      &gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
&gt;      &gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;     --<br>
&gt;      &gt;      &gt;     Bill Burke<br>
&gt;      &gt;      &gt;     JBoss, a division of Red Hat<br>
&gt;      &gt;      &gt; <a href="http://bill.burkecentral.com" target="_blank">http://bill.burkecentral.com</a><br>
&gt;      &gt;      &gt;     _______________________________________________<br>
&gt;      &gt;      &gt;     keycloak-user mailing list<br>
&gt;      &gt;      &gt; <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;      &gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;&gt;<br>
&gt;      &gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;      &gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;&gt;&gt;<br>
&gt;      &gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;      &gt; _______________________________________________<br>
&gt;      &gt;      &gt; keycloak-user mailing list<br>
&gt;      &gt;      &gt; <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;&gt;<br>
&gt;      &gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
&gt;      &gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt;     --<br>
&gt;      &gt;     Bill Burke<br>
&gt;      &gt;     JBoss, a division of Red Hat<br>
&gt;      &gt; <a href="http://bill.burkecentral.com" target="_blank">http://bill.burkecentral.com</a><br>
&gt;      &gt;     _______________________________________________<br>
&gt;      &gt;     keycloak-user mailing list<br>
&gt;      &gt; <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt;     &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;&gt;<br>
&gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt;<br>
&gt;      &gt; _______________________________________________<br>
&gt;      &gt; keycloak-user mailing list<br>
&gt;      &gt; <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a> &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;      &gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
&gt;      &gt;<br>
&gt;<br>
&gt;     --<br>
&gt;     Bill Burke<br>
&gt;     JBoss, a division of Red Hat<br>
&gt;     <a href="http://bill.burkecentral.com" target="_blank">http://bill.burkecentral.com</a><br>
&gt;     _______________________________________________<br>
&gt;     keycloak-user mailing list<br>
&gt;     <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a> &lt;mailto:<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a>&gt;<br>
&gt;     <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; keycloak-user mailing list<br>
&gt; <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
&gt;<br>
<br>
--<br>
Bill Burke<br>
JBoss, a division of Red Hat<br>
<a href="http://bill.burkecentral.com" target="_blank">http://bill.burkecentral.com</a><br>
_______________________________________________<br>
keycloak-user mailing list<br>
<a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
</div></div></blockquote></div><br></div>