[keycloak-dev] Custom AdminEvents
Marek Posolda
mposolda at redhat.com
Mon Sep 26 11:04:28 EDT 2016
On 26/09/16 16:41, Dmitry Telegin wrote:
> Hi,
>
> The org.keycloak.events.* subsystem could potentially be of great use
> for KeyCloak extensions (providers), especially for combinations of
> JpaEntityProvider+RealmResourceProvider. Imagine we've implemented a
> custom entity + REST resource, and we want to log create/update/delete
> events for our entity, and then analyze log records in the event
> viewer inside admin console.
>
> Unfortunately, the event subsystem in its current state is not very
> useful for the above. This is due to resource types hardcoded into
> org.keycloak.events.admin.ResourceType enum. When logging events for a
> custom entity, the only option is to leave resource type empty:
>
> adminEvent
> .operation(OperationType.CREATE)
> .resourcePath(uriInfo, myEntity.getId())
> .representation(rep)
> .success();
> This will obviously create a log record without a "Resource Type"
> value, which is definitely not of great use.
>
> It would be nice to have extensible ResourceType. One of the
> approaches to the extensible enum problem is described here:
> https://blogs.oracle.com/darcy/entry/enums_and_mixins
> I think this could be applied here with minimal modifications.
> ResourceType would become an interface, and there would be introduced
> something like StandardResourceType enum, which would implement
> built-in resource types as enum keys, and store custom types in a
> static map-backed registry. A public static method would be introduced
> so that extension authors could register their own resource types. In
> the future, when (I hope) registering providers will be done with
> annotations, this could be even more simplified and made purely
> declarative.
+1
Maybe even easier if ResourceType will be just a wrapper around String,
so if you do:
adminEvent.
.operation(OperationType.CREATE)
.resourceType(ResourceType.from("MY_FOO_RESOURCE"))
...
it will just work. No need to register anything. Should be backwards
compatible too. Not sure which approach is better...
>
> The same approach could be applied to extending login events
> (potentially useful for custom authenticators etc.) What do you think?
> If everybody is OK with it, I can go on with JIRA and a PR.
The login events already has "details", which allow you to add here any
custom fields you want? Isn't that sufficient?
Marek
>
> Cheers,
> Dmitry
>
>
>
> _______________________________________________
> keycloak-dev mailing list
> keycloak-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/keycloak-dev/attachments/20160926/703d0890/attachment.html
More information about the keycloak-dev
mailing list