[keycloak-user] How to create the same client (same id) for multiple realms programmatically

Marek Posolda mposolda at redhat.com
Mon May 30 05:57:49 EDT 2016


Maybe someone already mentions it before. IMO the returning "Response" 
from the create methods on admin client is one of the biggest limitation 
of current admin-client. For example if we change ClientResources method:

@POST @Consumes(MediaType.APPLICATION_JSON)
public Response create(ClientRepresentation clientRepresentation);

to something like:

@POST @Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ClientRepresentation create(ClientRepresentation clientRepresentation);



then the advantages will be:
- You won't need to parse the ID of newly created client from the URI 
location and call additional GET request to retrieve newly created 
client (You usually want newly created client when you are creating it)
- In case the error happened, the exception will be thrown on 
client-side too. With the "Response" object, the exception is not thrown 
on client-side but you are supposed to manually check the status code. 
This may be confusing for users, who are not so familiar with the admin 
client. When exception is thrown on client-side, it's crystal clear that 
something bad happened and client wasn't successfully created on server 
side.

Are there any disadvantages? The only one I see is, that POST responses 
from server will need to return the representation of created object, 
but that's maybe rather advantage (as you don't need to call additional 
GET request, which in 95% of cases you need).

Marek

On 30/05/16 08:04, Stian Thorgersen wrote:
> What's the status code for the response? It should be 409.
>
> On 27 May 2016 at 09:02, Haim Vana <haimv at perfectomobile.com 
> <mailto:haimv at perfectomobile.com>> wrote:
>
>     There is an exception in the server log, but it is not thrown, so
>     I am not getting it in my code.
>
>
>
>     -------- Original message --------
>     From: Stian Thorgersen <sthorger at redhat.com
>     <mailto:sthorger at redhat.com>>
>     Date: 5/27/16 09:24 (GMT+02:00)
>     To: Haim Vana <haimv at perfectomobile.com
>     <mailto:haimv at perfectomobile.com>>
>     Cc: Marek Posolda <mposolda at redhat.com
>     <mailto:mposolda at redhat.com>>, keycloak-user at lists.jboss.org
>     <mailto:keycloak-user at lists.jboss.org>
>     Subject: Re: [keycloak-user] How to create the same client (same
>     id) for multiple realms programmatically
>
>     Do you not get a error when trying to create it the second time
>     with the same id? If not please create a jira.
>
>     On 26 May 2016 at 20:20, Haim Vana <haimv at perfectomobile.com
>     <mailto:haimv at perfectomobile.com>> wrote:
>
>         Thanks for your reply.
>
>         My problem was that I have used setId instead of setClientId.
>
>         *From:*Marek Posolda [mailto:mposolda at redhat.com
>         <mailto:mposolda at redhat.com>]
>         *Sent:* Thursday, May 26, 2016 4:16 PM
>         *To:* Haim Vana <haimv at perfectomobile.com
>         <mailto:haimv at perfectomobile.com>>;
>         keycloak-user at lists.jboss.org
>         <mailto:keycloak-user at lists.jboss.org>
>         *Subject:* Re: [keycloak-user] How to create the same client
>         (same id) for multiple realms programmatically
>
>         You can use for example:
>
>         RealmResource realm1 = *adminClient*.realms().realm(*"realm1"*);
>
>         RealmResource realm2 = *adminClient*.realms().realm(*"realm2"*);
>
>         realm1.clients().create(clientRepresentation);
>
>         realm2.clients().create(clientRepresentation);
>
>
>         For update you can take a look at some of our tests, which are
>         updating client. For example this one :
>         https://github.com/mposolda/keycloak/blob/master/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/ClientTest.java#L183
>
>         Note that you need to know client Id (this is different thant
>         clientId). The easiest is to set it manually in representation
>         before you create client (via client.setId ) like it's done in
>         this test.
>
>         Marek
>
>         On 26/05/16 14:54, Haim Vana wrote:
>
>             Any idea regarding the below ?
>
>             As a workaround how can I update existing client
>             programmatically ? I couldn't find it in the admin API.
>
>             Thanks again,
>
>             Haim.
>
>             *From:*Haim Vana
>             *Sent:* Thursday, May 26, 2016 2:17 PM
>             *To:* keycloak-user at lists.jboss.org
>             <mailto:keycloak-user at lists.jboss.org>
>             *Subject:* How to create the same client (same id) for
>             multiple realms programmatically
>
>             Hi,
>
>             I am trying to create the same client for many realms,
>             however it creates it only once, probably because they
>             have the same id, however in UI I am able to create it.
>
>             Any idea how I can create the same client for different
>             realms programmatically with the same id ?
>
>             This is my code sample:
>
>             ClientRepresentation clientRepresentation = *new *ClientRepresentation();
>
>             clientRepresentation.setId(clientId); // Same clientId for
>             all reamls
>
>             realm.clients().create(clientRepresentation); // Client is
>             created only for first realm
>
>             Any advice will be appreciated,
>
>             Haim.
>
>             The information contained in this message is proprietary
>             to the sender, protected from disclosure, and may be
>             privileged. The information is intended to be conveyed
>             only to the designated recipient(s) of the message. If the
>             reader of this message is not the intended recipient, you
>             are hereby notified that any dissemination, use,
>             distribution or copying of this communication is strictly
>             prohibited and may be unlawful. If you have received this
>             communication in error, please notify us immediately by
>             replying to the message and deleting it from your
>             computer. Thank you.
>
>
>             _______________________________________________
>
>             keycloak-user mailing list
>
>             keycloak-user at lists.jboss.org
>             <mailto:keycloak-user at lists.jboss.org>
>
>             https://lists.jboss.org/mailman/listinfo/keycloak-user
>
>         The information contained in this message is proprietary to
>         the sender, protected from disclosure, and may be privileged.
>         The information is intended to be conveyed only to the
>         designated recipient(s) of the message. If the reader of this
>         message is not the intended recipient, you are hereby notified
>         that any dissemination, use, distribution or copying of this
>         communication is strictly prohibited and may be unlawful. If
>         you have received this communication in error, please notify
>         us immediately by replying to the message and deleting it from
>         your computer. Thank you.
>
>         _______________________________________________
>         keycloak-user mailing list
>         keycloak-user at lists.jboss.org
>         <mailto:keycloak-user at lists.jboss.org>
>         https://lists.jboss.org/mailman/listinfo/keycloak-user
>
>
>     The information contained in this message is proprietary to the
>     sender, protected from disclosure, and may be privileged. The
>     information is intended to be conveyed only to the designated
>     recipient(s) of the message. If the reader of this message is not
>     the intended recipient, you are hereby notified that any
>     dissemination, use, distribution or copying of this communication
>     is strictly prohibited and may be unlawful. If you have received
>     this communication in error, please notify us immediately by
>     replying to the message and deleting it from your computer. Thank
>     you.
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-user/attachments/20160530/562b9e3e/attachment-0001.html 


More information about the keycloak-user mailing list