Hi,
I've recently had an experience of developing/deploying/debugging a KeyCloak extension, which includes, among other things, a custom REST endpoint.
For me, the following workflow did the thing. It is assumed that you've downloaded and unpacked a binary KeyCloak distro:
1) clone a KeyCloak Git repository. There is no need to build KeyCloak, since modules can be pretty easily deployed to an existing instance. You will need sources for debugging only. Use the branch/tag that corresponds to the binary version you've downloaded;
2) open KeyCloak source as a Maven project(s) in your IDE (I use NetBeans);
3) build and deploy your module. Until last week, I used to copy module JAR to the target directory upon each build, but then I've stumbled upon the recent KeyCloak blog
post. It's very convenient, especially for development/testing environments, to have extension modules deployed right from the Maven repo;
4) start KeyCloak with bin/standalone.sh --debug
5) attach your IDE's debugger to localhost:8787 using dt_socket transport (it could be also called "SocketAttach connector");
6) set up some breakpoints, invoke your REST service to hit a breakpoint, and voilà!
As for documenting development process, I completely share your point. Ideally, we should have a detailed walkthrough tutorial for writing complete KeyCloak extensions. At the moment all we've got is a chapter in the docs and some scattered examples in the repo.
At the same time, what I've been developing recently is a full-featured, complete extension that includes:
- custom JPA entity;
- custom REST resource;
- custom authenticator;
- custom GUI to manage this all;
- code that sets up custom roles and authentication workflows.
I think I could convert my experience into such a tutorial. I'll elaborate on this in one of my next postings to this ML; I could put you on CC if you wish, so that you don't miss it.
Cheers,
Dmitry
Hello,
As I see I have to compile the module and deploy it to Keycloak. So, is there any easy way to deploy/debug into a Keycloak instance?
As I see, the documentation in the Github repo recommends to use standalone.sh to start the server and I can add the debug flag. But, that doesn’t exist in the repository. Any guidance in this?
Also, any maven commands to fast deploy the module into the Keycloak instance?
At the moment I’ve only found that I should run Keycloak in debug mode and then attach to port 8787, but well, first I need to find how to run it from the source...
I could even help to extend the documentation with some steps in order to setup an easy dev setup, so people can contribute easier in exchange of the help :)
Thanks a lot!
—
Best Regards,
Erik Berdonces Bonelo
_______________________________________________
keycloak-dev mailing list
keycloak-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/keycloak-dev