{"id":47160332,"url":"https://github.com/dasniko/keycloak-workshop","last_synced_at":"2026-03-13T02:39:11.765Z","repository":{"id":178650908,"uuid":"662178840","full_name":"dasniko/keycloak-workshop","owner":"dasniko","description":"Resources for @dasniko's Keycloak Masterclass ⭐️⭐️⭐️⭐️⭐️ Workshop","archived":false,"fork":false,"pushed_at":"2026-01-28T10:28:06.000Z","size":62619,"stargazers_count":31,"open_issues_count":0,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-29T01:45:14.662Z","etag":null,"topics":["authentication","keycloak","oidc"],"latest_commit_sha":null,"homepage":"https://www.n-k.de/trainings/keycloak-masterclass/","language":"FreeMarker","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dasniko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-07-04T14:20:40.000Z","updated_at":"2026-01-28T10:28:10.000Z","dependencies_parsed_at":"2026-01-02T07:01:04.348Z","dependency_job_id":null,"html_url":"https://github.com/dasniko/keycloak-workshop","commit_stats":null,"previous_names":["dasniko/keycloak-workshop"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dasniko/keycloak-workshop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasniko%2Fkeycloak-workshop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasniko%2Fkeycloak-workshop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasniko%2Fkeycloak-workshop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasniko%2Fkeycloak-workshop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dasniko","download_url":"https://codeload.github.com/dasniko/keycloak-workshop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dasniko%2Fkeycloak-workshop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30456117,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T02:22:12.178Z","status":"ssl_error","status_checked_at":"2026-03-13T02:06:49.475Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","keycloak","oidc"],"created_at":"2026-03-13T02:39:11.594Z","updated_at":"2026-03-13T02:39:11.753Z","avatar_url":"https://github.com/dasniko.png","language":"FreeMarker","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Keycloak Workshop by @dasniko\n\n![](https://img.shields.io/badge/Keycloak-26.5-blue)\n\n## Prerequisites\n\n* Texteditor (VS Code, Notepad++, etc.)\n* [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/) V2 installed and running on `localhost` (if necessary, grant local admin rights on the computer)  \n  _If_ you use Docker Desktop, please make sure that it is at least version 4.34 or higher!  \n  _(License costs may apply for the use of Docker Desktop, please inform yourself! Depending on the platform, Docker Desktop is not absolutely necessary for the operation of Docker. Support for Docker cannot be provided as part of the training and preparation for it! Podman may also work, but no support can be provided for this!)_\n* Internet access (check proxy/firewall/VPN configurations etc. if necessary)\n* Browser\n\n_Clone this repository (with `git clone https://github.com/dasniko/keycloak-workshop.git`) or download it via the following link and unzip it._  \n\n\u003e 🚨 Please make sure that your local folder you clone the repo to, is called `keycloak-workshop`!\n\n## Download workshop resources\n\n👉 https://github.com/dasniko/keycloak-workshop/archive/refs/heads/main.zip\n\n\u003e 🚨 If you unzip it, make sure the folder is called `keycloak-workshop`, not _keycloak-workshop-main_!\n\n## Docker images\n\nThe following images are being used in the workshop and can (should!) be pulled before the workshop:\n\n```\ndocker pull quay.io/keycloak/keycloak:26.5\ndocker pull postgres:18-alpine\ndocker pull nginx:alpine\ndocker pull axllent/mailpit:latest\ndocker pull hashicorp/terraform:latest  (*)\ndocker pull jaegertracing/all-in-one:latest  (*)\ndocker pull ghcr.io/dasniko/keycloak-benchmark:latest  (*)\ndocker pull ghcr.io/dasniko/flintstones-ldap:latest  (**)\ndocker pull ghcr.io/dasniko/keycloak-bookshop-demo:0.0.11  (**)\n```\n\n(*) = required only for day 1  \n(**) = required only for day 2+3\n\n## Slides \u0026 examples\n\n* 📺 OAuth2, OIDC \u0026 JWT Basics:  \n  https://speakerdeck.com/dasniko/oauth2-oidc-and-jwt-important-basics\n* 📺 Status Quo of OAuth 2:  \n  https://speakerdeck.com/dasniko/status-quo-of-oauth-2\n* 📖 Smiling Bookshop (Distributed application, based on Quarkus, Spring Boot \u0026 React.JS):  \nhttps://github.com/dasniko/keycloak-bookshop-demo\n\n## Links for systems used in this workshop\n\n* Keycloak - https://localhost:8443\n  * Management Port Node 1: https://localhost:9001\n  * Management Port Node 2: https://localhost:9002\n* Bookshop - https://localhost:8081\n  * Checkout - https://localhost:3000\n* Mailserver - http://localhost:8025\n* Jaeger - http://localhost:16686\n\n## More links\n\n### Keycloak docs\n\n* Guides: https://www.keycloak.org/guides\n* Docs: https://www.keycloak.org/documentation\n* Terraform Provider: https://registry.terraform.io/providers/keycloak/keycloak/latest/docs\n* Benchmark: https://www.keycloak.org/keycloak-benchmark/\n\n### Common examples, extensions \u0026 links\n\n* Niko's YouTube Channel:\nhttps://www.youtube.com/@dasniko\n* Niko's GitHub Profile:\nhttps://github.com/dasniko\n* Keycloak Extension Examples:\nhttps://github.com/dasniko/keycloak-extensions-demo\n* Testcontainer-Keycloak Project:\nhttps://github.com/dasniko/testcontainers-keycloak\n* Moderator @ Keycloak Community Forum:\nhttps://forum.keycloak.org/\n\n### Standards, Specs \u0026 BCP Guides\n\n#### OAuth 2.0\n\n* OAuth 2.0 Overview: https://oauth.net/2/\n* OAuth Core, RFC 6749: https://datatracker.ietf.org/doc/html/rfc6749\n* OAuth 2.0 Threat Model and Security Considerations, RFC 6819: https://datatracker.ietf.org/doc/html/rfc6819\n* OAuth 2.0 Token Revocation, RFC 7009: https://datatracker.ietf.org/doc/html/rfc7009\n* Proof Key for Code Exchange, RFC 7636: https://datatracker.ietf.org/doc/html/rfc7636\n* OAuth 2.0 for Native Apps, RFC 8252: https://datatracker.ietf.org/doc/html/rfc8252\n* OAuth 2.0 Device Authorization Grant, RFC 8628: https://datatracker.ietf.org/doc/html/rfc8628\n* OAuth 2.0 for Browser-Based Apps: https://datatracker.ietf.org/doc/html/draft-ietf-oauth-browser-based-apps\n* Best Current Practice for OAuth 2.0 Security, RFC 9700: https://datatracker.ietf.org/doc/html/rfc9700\n\n#### OAuth 2.1\n\n* OAuth 2.1 Overview: https://oauth.net/2.1/\n* OAuth 2.1 Draft: https://datatracker.ietf.org/doc/draft-ietf-oauth-v2-1\n* GNAP Overview: https://oauth.net/gnap/\n\n#### Tokens\n\n* OAuth 2.0 Bearer Token Usage, RFC 6750: https://datatracker.ietf.org/doc/html/rfc6750\n* OAuth 2.0 Token Binding, Draft: https://datatracker.ietf.org/doc/html/draft-ietf-oauth-token-binding-08\n* OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens, RFC 8705: https://datatracker.ietf.org/doc/html/rfc8705\n* JSON Web Token, RFC 7519: https://datatracker.ietf.org/doc/html/rfc7519\n* JSON Web Token (JWT) Best Current Practice, RFC 8725: https://datatracker.ietf.org/doc/html/rfc8725\n* JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens, RFC 9068: https://datatracker.ietf.org/doc/html/rfc9068\n\n#### OIDC\n\n* All OIDC Specifications: https://openid.net/developers/specs/\n* OpenID Connect Core 1.0: https://openid.net/specs/openid-connect-core-1_0.html\n* OpenID Connect RP-Initiated Logout 1.0: https://openid.net/specs/openid-connect-rpinitiated-1_0.html\n* OpenID Connect Session Management 1.0: https://openid.net/specs/openid-connect-session-1_0.html\n* OpenID Connect Front-Channel Logout 1.0: https://openid.net/specs/openid-connect-frontchannel-1_0.html\n* OpenID Connect Back-Channel Logout 1.0: https://openid.net/specs/openid-connect-backchannel-1_0.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasniko%2Fkeycloak-workshop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdasniko%2Fkeycloak-workshop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdasniko%2Fkeycloak-workshop/lists"}