[keycloak-dev] relationship between application and realm
Bill Burke
bburke at redhat.com
Fri Sep 13 09:23:18 EDT 2013
TLDR
THe more we discuss this, the more strongly I feel your approach to
Application and Realm is just not the way to go. I don't know how to
resolve our differences at the moment, but please read further...
On 9/12/2013 9:23 AM, Stian Thorgersen wrote:
> I strongly believe that applications should be under a separate top-level menu.
>
I think you are creating more work for us and making an inconsistent UI
for the user.
> - An application is configured to use a realm, it's not a child of the realm
An application deployment is configured to interact with a specific
realm. It needs the realm name, public key, and credentials it needs to
interact with the realm. It is not separate from the realm. An
application deployment is not going to be serviced by multiple realms.
JBoss developers currently create realms when they secure their apps.
> - A developer may know what application he's looking for, but not know what realm it belongs to
>
Why would a developer be "looking" for an application or for that matter
"looking" for a realm? What you state is just not how developers will
interact with Keycloak.
JBoss, Tomcat, and Jetty developers create a realm when they secure
their apps.
> I also believe that a first time user should be able to create an application without having to create a realm first. There are several options for this:
>
And I completely disagree. I just don't understand your problem with a
realm as its just one extra field: a name. Conversley, if you start
with an application and have to do all the extra import stuff Gabriel
has in his current flow it is *A LOT MORE WORK* and *A LOT MORE CONFUSING*.
> - Create a default realm for a user when the first application is created
Again, develoeprs aren't going to be creating "applications" first.
They will already have an application they want to secure. They will
create a realm, set up social providers, add an application with a URL,
etc...
This is basically how developers work *ALREADY* with JBoss (and Tomcat
and Jetty). They create a security domain, then configure their
application to use this security domain.
> - Embed the creating realm form into the creating application form / this should require very little additional work on the UI level if Angular services and partials are done correctly
>
> Having applications as a separate entity is also vital if for example an MBaaS solution should consume Keycloak and reuse parts of the admin console. In this case an application doesn't only have a security realm, and security configuration, it also has data configuration, push notification configuration, etc.
>
For MBaaS, you are targeting a use case and designing a UI based on the
needs of a handful of consumers, when the UI should be tailored to the
needs of the most common use case.
As it is, you give no details why having an application as a separate
entity is so vital for MBaaS. The MBaaS will be using Keycloak REST
services in the background and have their own integrated UI for
security. This idea that we're going to reuse the Keycloak UI is just
poppycock. Even if they wanted to, it would not result in a very
user-friendly UI. Also, you're not going to be using the Keycloak UI to
create Application security templates. Why would you when a JSON file
is 100 times simpler and quicker?
I just can't agree that your approach is appropriate. Your approach
immediately falls apart when dealing with SSO, which will be a very
common deployment model for Keycloak given how much feedback I've
already gotten for the Resteasy OAuth solution. Not only that, but
having a Realm as the central concept in keycloak doesn't even in the
slightest make things more complicated and is a concept that developers
are already deeply familiar with.
--
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com
More information about the keycloak-dev
mailing list