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

Stian Thorgersen sthorger at redhat.com
Mon May 30 14:24:30 EDT 2016


+1 Not the correct thread for it though ;)

On 30 May 2016 at 11:57, Marek Posolda <mposolda at redhat.com> wrote:

> 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 at Consumes(MediaType.APPLICATION_JSON)public Response create(ClientRepresentation clientRepresentation);
>
>
> to something like:
>
> @POST at 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> 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>sthorger at redhat.com>
>> Date: 5/27/16 09:24 (GMT+02:00)
>> To: Haim Vana <haimv at perfectomobile.com>
>> Cc: Marek Posolda <mposolda at redhat.com>, 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>
>> 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>mposolda at redhat.com]
>>>
>>> *Sent:* Thursday, May 26, 2016 4:16 PM
>>> *To:* Haim Vana < <haimv at perfectomobile.com>haimv at perfectomobile.com>;
>>> 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>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
>>>
>>> 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
>>> 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/0c51d31e/attachment-0001.html 


More information about the keycloak-user mailing list