[ 
https://issues.apache.org/jira/browse/CAMEL-8249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17809870#comment-17809870
 ] 

Kipchumba Bett commented on CAMEL-8249:
---------------------------------------

I've been looking at the `camel-spring-security` component. From my 
understanding and definition here:
{quote}The Camel Spring Security component provides role-based authorization 
for Camel routes. It leverages the authentication and user services provided by 
Spring Security (formerly Acegi Security) and adds a declarative, role-based 
policy system to control whether a route can be executed by a given principal.
{quote}
The `camel-spring-security` component is used to control and restrict access to 
Camel routes based on user roles. So adding a `camel-keycloak` similar to 
`camel-spring-security` doesn't quite fit with our use case.

I'm proposing a `camel-keycloak` component that will allow developers to 
interact with [Keycloak Admin's REST API 
|https://www.keycloak.org/docs-api/21.1.1/rest-api/#] in a more straightforward 
and Java-idiomatic way, leveraging the power of Apache Camel's integration 
capabilities.

For our case, apart from the standard authentication and authorization use 
cases, another significant use case is to synchronize roles from System A to 
Keycloak. System A, in this context, is an external system that does not fully 
utilize Keycloak for its user and role management. However, it is beneficial to 
have the roles from System A available in Keycloak for assignment. This 
synchronization will ensure that the roles defined in System A are consistently 
available in Keycloak, providing a unified view of roles across both systems. 
This synchronization can be achieved by periodically polling System A for its 
roles or consuming events from System A and updating the roles in Keycloak 
accordingly.

For instance; having camel-keycloak component with the syntax:

{{keycloak://role/read?clientUuid=ox&realm=ozone&roleName=SystemAdmin&keycloakClient=#keycloakClient}}
 
or
{{keycloak://client/create?realm=ozone&client=client-to-create&keycloakClient=#keycloakClient}}

[~acosentino], What do you think about this approach?

 

References:
 - [https://www.keycloak.org/docs-api/21.1.1/rest-api/#]
 - [https://mvnrepository.com/artifact/org.keycloak/keycloak-admin-client]
 - [https://camel.apache.org/components/next/others/spring-security.html]

> camel-keycloak - A security component
> -------------------------------------
>
>                 Key: CAMEL-8249
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8249
>             Project: Camel
>          Issue Type: New Feature
>            Reporter: Claus Ibsen
>            Priority: Major
>             Fix For: Future
>
>
> We should have a camel-keycloak component that integrates with keycloak
> https://www.keycloak.org/
> For example similar to as camel-spring-security
> http://camel.apache.org/security
> https://camel.apache.org/components/next/others/spring-security.html



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to