{"id":78,"date":"2026-05-13T17:46:13","date_gmt":"2026-05-13T17:46:13","guid":{"rendered":"https:\/\/free-udemy-course.en.gp\/?p=78"},"modified":"2026-05-13T17:54:20","modified_gmt":"2026-05-13T17:54:20","slug":"advanced-openid-connect-with-keycloak-and-spring-security","status":"publish","type":"post","link":"https:\/\/free-udemy-course.en.gp\/?p=78","title":{"rendered":"Advanced OpenID Connect with Keycloak and Spring Security"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"78\" class=\"elementor elementor-78\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e193a6b e-flex e-con-boxed e-con e-parent\" data-id=\"e193a6b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ea9324b elementor-widget elementor-widget-image\" data-id=\"ea9324b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"768\" height=\"341\" src=\"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/Screenshot_1435-768x341.png\" class=\"attachment-medium_large size-medium_large wp-image-80\" alt=\"\" srcset=\"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/Screenshot_1435-768x341.png 768w, https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/Screenshot_1435-300x133.png 300w, https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/Screenshot_1435.png 808w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0ca27f8 e-flex e-con-boxed e-con e-parent\" data-id=\"0ca27f8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0269316 elementor-widget elementor-widget-html\" data-id=\"0269316\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<h2>What You'll Learn<\/h2>\r\n<ul>\r\n  <li>Review OAuth and OpenID Connect concepts for social and enterprise applications<\/li>\r\n  <li>Understand Keycloak as an Identity and Access Management provider<\/li>\r\n  <li>Step-by-step use of Spring Security with Authorization Code Flow (with and without PKCE)<\/li>\r\n  <li>Step-by-step use of Spring Security with Client Credentials Grant<\/li>\r\n  <li>Build OAuth2 Clients, JWT, and Opaque Resource Servers using Spring Security<\/li>\r\n  <li>Design enterprise authorization using Keycloak scopes and roles<\/li>\r\n  <li>Hands-on integration with Okta SAML Identity Providers using Keycloak<\/li>\r\n  <li>Hands-on Identity Brokering using Keycloak with OpenID Connect and GitLab<\/li>\r\n  <li>Handle multiple Identity Providers in Spring Boot and Spring Security<\/li>\r\n<\/ul>\r\n\r\n<h2>This Course Includes<\/h2>\r\n<ul>\r\n  <li>9.5 hours on-demand video<\/li>\r\n  <li>Assignments<\/li>\r\n  <li>17 articles<\/li>\r\n  <li>8 downloadable resources<\/li>\r\n  <li>Access on mobile and TV<\/li>\r\n  <li>Certificate of completion<\/li>\r\n<\/ul>\r\n\r\n<h2>Course Content<\/h2>\r\n<p><strong>10 sections \u2022 98 lectures \u2022 9h 59m total length<\/strong><\/p>\r\n\r\n<h3>Section 1: Keycloak Setup and Introduction<\/h3>\r\n<ul>\r\n  <li>Architecture Diagrams \u2014 3:49<\/li>\r\n  <li>Keycloak Overview \u2014 6:56<\/li>\r\n  <li>Keycloak Installation and Setup \u2014 7:41<\/li>\r\n  <li>Postgres Installation and Setup \u2014 4:57<\/li>\r\n  <li>Keycloak Postgres Setup \u2014 7:33<\/li>\r\n  <li>Notes on Keycloak and Postgres Setup \u2014 1:13<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 2: OAuth and OpenID Connect Fundamentals<\/h3>\r\n<ul>\r\n  <li>Section Introduction \u2014 1:28<\/li>\r\n  <li>OAuth Actors \u2014 8:58<\/li>\r\n  <li>Clients and Scopes \u2014 6:47<\/li>\r\n  <li>Access Tokens and Endpoints \u2014 6:45<\/li>\r\n  <li>Authorization Code and Refresh Token Grants \u2014 12:04<\/li>\r\n  <li>Implicit Grant and PKCE \u2014 7:16<\/li>\r\n  <li>Client Credential and Password Grants \u2014 3:35<\/li>\r\n  <li>Third Party Versus First Party Application \u2014 1:12<\/li>\r\n  <li>OpenID Connect \u2014 6:16<\/li>\r\n  <li>Enterprise OpenID Connect and Roles \u2014 5:43<\/li>\r\n  <li>RFC Documentation Links \u2014 0:37<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 3: OAuth and OpenID Connect Project<\/h3>\r\n<ul>\r\n  <li>Introduction - Project BugTracker \u2014 4:52<\/li>\r\n  <li>BugTracker Demonstration \u2014 6:15<\/li>\r\n  <li>BugTracker Keycloak Setup \u2014 9:04<\/li>\r\n  <li>BugTracker Design \u2014 4:01<\/li>\r\n  <li>Spring Security - OAuth Authentication \u2014 7:24<\/li>\r\n  <li>BugTracker Service \u2014 12:56<\/li>\r\n  <li>BugTracker OpenID Connect Configuration \u2014 9:45<\/li>\r\n  <li>Spring Security - Authorized Client \u2014 1:57<\/li>\r\n  <li>BugTracker Controller \u2014 15:03<\/li>\r\n  <li>BugTracker with Authorization Code Grant \u2014 10:59<\/li>\r\n  <li>BugTracker with PKCE \u2014 10:43<\/li>\r\n  <li>BugTracker Authorization using Scopes \u2014 16:07<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 4: Authorization Using Roles<\/h3>\r\n<ul>\r\n  <li>JAUBS - Course Project Explanation \u2014 16:05<\/li>\r\n  <li>JAUBS - Protecting Application using OpenID Connect<\/li>\r\n  <li>Solution for Assignment 1 \u2014 18:47<\/li>\r\n  <li>Keycloak Mapper - Adding Roles Claim \u2014 3:45<\/li>\r\n  <li>BugTracker Authorization using Roles \u2014 7:54<\/li>\r\n  <li>JAUBS - Protecting Application using Roles<\/li>\r\n  <li>Solution for Assignment 2 \u2014 6:45<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 5: Multiple Identity Providers<\/h3>\r\n<ul>\r\n  <li>Handling Multiple Identity Providers \u2014 3:48<\/li>\r\n  <li>Client Registration in GitLab \u2014 4:44<\/li>\r\n  <li>Spring Security and Multiple Identity Providers \u2014 8:06<\/li>\r\n  <li>Customizing Authorities \u2014 5:25<\/li>\r\n  <li>Problems with Multiple Identity Providers \u2014 4:32<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 6: OAuth Microservices<\/h3>\r\n<ul>\r\n  <li>Creating an OAuth JWT Microservice (Resource Server) \u2014 10:55<\/li>\r\n  <li>Spring Security - Resource Server \u2014 0:42<\/li>\r\n  <li>Calling an OAuth Microservice \u2014 8:44<\/li>\r\n  <li>Using Introspection Endpoint \u2014 9:32<\/li>\r\n  <li>Enterprise Schedulers and Client Credentials Grant \u2014 3:12<\/li>\r\n  <li>Client Credentials in Keycloak \u2014 5:10<\/li>\r\n  <li>BugTracker Scheduler using Client Credentials \u2014 9:00<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 7: Identity Brokers<\/h3>\r\n<ul>\r\n  <li>Introduction to Identity Brokers \u2014 6:46<\/li>\r\n  <li>Identity Broker HTTP Message Flow \u2014 4:35<\/li>\r\n  <li>Setting up GitLab Identity Provider in Keycloak \u2014 4:44<\/li>\r\n  <li>BugTracker Identity Broker Integration \u2014 7:26<\/li>\r\n  <li>Setup Keycloak as Identity Broker for Google and GitLab<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 8: SAML Integration<\/h3>\r\n<ul>\r\n  <li>SAML Overview \u2014 5:26<\/li>\r\n  <li>OpenID Connect and SAML Integration \u2014 5:12<\/li>\r\n  <li>BugTracker SAML Usecase \u2014 3:41<\/li>\r\n  <li>BugTracker SAML Integration with Okta \u2014 19:11<\/li>\r\n  <li>Creating an Okta Integrator Account \u2014 0:52<\/li>\r\n  <li>BugTracker Global Logout with Okta \u2014 12:09<\/li>\r\n  <li>SAML Identity Provider - Assertion Encryption \u2014 7:33<\/li>\r\n  <li>SAML Identity Provider - Setting User Attributes \u2014 9:38<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 9: OAuth and OpenID Connect Advanced Topics<\/h3>\r\n<ul>\r\n  <li>Handling Multiple Authorization Servers Simultaneously \u2014 4:11<\/li>\r\n  <li>Spring Security Configuration for OAuth \u2014 11:14<\/li>\r\n  <li>Accessing GitLab Resource Server \u2014 2:45<\/li>\r\n  <li>Spring Security - oauth2Login versus oauth2Client \u2014 0:44<\/li>\r\n  <li>Fixing the Login Page \u2014 5:16<\/li>\r\n<\/ul>\r\n\r\n<h3>Section 10: Cryptography and Java Security Concepts<\/h3>\r\n<ul>\r\n  <li>Cryptography Theory and Practice \u2014 0:29<\/li>\r\n  <li>URL Encoding \u2014 2:40<\/li>\r\n  <li>Base64 Encoding \u2014 2:15<\/li>\r\n  <li>Cryptographic Hashing \u2014 4:32<\/li>\r\n  <li>Symmetric Encryption \u2014 3:27<\/li>\r\n  <li>Asymmetric Encryption \u2014 7:25<\/li>\r\n  <li>Hybrid Encryption \u2014 4:34<\/li>\r\n  <li>Digital Signatures \u2014 5:13<\/li>\r\n  <li>OpenSSL Demonstrations for Encryption and Signatures<\/li>\r\n  <li>Enterprise Versus OAuth Authorization \u2014 5:06<\/li>\r\n  <li>OAuth Versus OpenID Connect (OIDC) \u2014 10:11<\/li>\r\n  <li>Java Nested Classes \u2014 8:01<\/li>\r\n  <li>Java Record - Model Immutable Data \u2014 12:42<\/li>\r\n  <li>Java ThreadLocals and Security Propagation<\/li>\r\n<\/ul>\r\n\r\n<h2>Requirements<\/h2>\r\n<ul>\r\n  <li>Basic working knowledge of OAuth<\/li>\r\n  <li>Basic knowledge of Spring Boot<\/li>\r\n<\/ul>\r\n\r\n<h2>Description<\/h2>\r\n<p>\r\n  Recent Updates:\r\n<\/p>\r\n\r\n<ul>\r\n  <li>All Spring Boot examples tested and updated with Spring Boot 3.5.9<\/li>\r\n  <li>Java 25<\/li>\r\n  <li>Keycloak 26.5.0<\/li>\r\n<\/ul>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a766a57 e-con e-atomic-element e-flexbox-base e-a766a57-e6c0c08\" data-id=\"a766a57\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"a766a57\">\n\t\t\t\t\t\t\t<h2 \n\t\tdata-interaction-id=\"26e1d28\" \n\t\tclass=\"e-heading-base\" \n\t\t \n\t\t\n\t>\n\t\n\t\t\tDownload<br>\n\t\t<\/h2>\n\t\t\t\t\t\t\t\t<p class=\"e-paragraph-base\" data-interaction-id=\"56cbbad\"  >\n\t\t\t\t\t\t\t\tPassword :&nbsp;free-udemy-course.en.gp\n\t\t\t\t\t<\/p>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5005a87 e-con e-atomic-element e-flexbox-base e-5005a87-54cc5fe\" data-id=\"5005a87\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"5005a87\">\n\t\t\t\t\t    \t            <a\n            href=\"https:\/\/tpi.li\/BiQvt\" target=\"_blank\"\n            class=\"e-button-base\"\n            data-interaction-id=\"a29ceef\"\n             \n        >\n            Download Part 1\n        <\/a>\n    \t\t\t\t\t    \t            <a\n            href=\"https:\/\/tpi.li\/Y5qIn\" target=\"_blank\"\n            class=\"e-button-base\"\n            data-interaction-id=\"7f39e15\"\n             \n        >\n            Download Part 2\n        <\/a>\n    \t\t\t\t\t    \t            <a\n            href=\"https:\/\/tpi.li\/0Has\" target=\"_blank\"\n            class=\"e-button-base\"\n            data-interaction-id=\"662fe0b\"\n             \n        >\n            Download Part 3\n        <\/a>\n    \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>What You&#8217;ll Learn Review OAuth and OpenID Connect concepts for social and enterprise applications Understand Keycloak as an Identity and Access Management provider Step-by-step use of Spring Security with Authorization Code Flow (with and without PKCE) Step-by-step use of Spring Security with Client Credentials Grant Build OAuth2 Clients, JWT, and Opaque Resource Servers using Spring&#8230;<\/p>\n<p class=\"more-link\"><a href=\"https:\/\/free-udemy-course.en.gp\/?p=78\"><span>Read More<\/span><i>&#43;<\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":79,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,4,10],"tags":[11,13,8,12],"class_list":["post-78","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","category-programming","category-springboot","tag-java","tag-programming","tag-sap","tag-springboot"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Advanced OpenID Connect with Keycloak and Spring Security - Free Udemy Course<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/free-udemy-course.en.gp\/?p=78\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Advanced OpenID Connect with Keycloak and Spring Security - Free Udemy Course\" \/>\n<meta property=\"og:description\" content=\"What You&#8217;ll Learn Review OAuth and OpenID Connect concepts for social and enterprise applications Understand Keycloak as an Identity and Access Management provider Step-by-step use of Spring Security with Authorization Code Flow (with and without PKCE) Step-by-step use of Spring Security with Client Credentials Grant Build OAuth2 Clients, JWT, and Opaque Resource Servers using Spring&#8230;Read More&#043;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/free-udemy-course.en.gp\/?p=78\" \/>\n<meta property=\"og:site_name\" content=\"Free Udemy Course\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-13T17:46:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-13T17:54:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/5632756_f9d6.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"480\" \/>\n\t<meta property=\"og:image:height\" content=\"270\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#\\\/schema\\\/person\\\/f06fa52b6915fc25122904de6097c63c\"},\"headline\":\"Advanced OpenID Connect with Keycloak and Spring Security\",\"datePublished\":\"2026-05-13T17:46:13+00:00\",\"dateModified\":\"2026-05-13T17:54:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78\"},\"wordCount\":545,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/5632756_f9d6.jpg\",\"keywords\":[\"java\",\"programming\",\"sap\",\"springboot\"],\"articleSection\":[\"Java\",\"Programming\",\"Springboot\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78\",\"url\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78\",\"name\":\"Advanced OpenID Connect with Keycloak and Spring Security - Free Udemy Course\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/5632756_f9d6.jpg\",\"datePublished\":\"2026-05-13T17:46:13+00:00\",\"dateModified\":\"2026-05-13T17:54:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#primaryimage\",\"url\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/5632756_f9d6.jpg\",\"contentUrl\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/5632756_f9d6.jpg\",\"width\":480,\"height\":270},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?p=78#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Advanced OpenID Connect with Keycloak and Spring Security\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#website\",\"url\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/\",\"name\":\"Free Udemy Course\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#organization\",\"name\":\"Free Udemy Course\",\"url\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-ChatGPT-Image-May-9-2026-08_30_36-PM-1.png\",\"contentUrl\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-ChatGPT-Image-May-9-2026-08_30_36-PM-1.png\",\"width\":512,\"height\":230,\"caption\":\"Free Udemy Course\"},\"image\":{\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/#\\\/schema\\\/person\\\/f06fa52b6915fc25122904de6097c63c\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8216136e15d6af0b9fe870d4f74d838f5cad60ac0696e9d66b484c9fc9559a85?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8216136e15d6af0b9fe870d4f74d838f5cad60ac0696e9d66b484c9fc9559a85?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8216136e15d6af0b9fe870d4f74d838f5cad60ac0696e9d66b484c9fc9559a85?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\\\/\\\/free-udemy-course.en.gp\"],\"url\":\"https:\\\/\\\/free-udemy-course.en.gp\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Advanced OpenID Connect with Keycloak and Spring Security - Free Udemy Course","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/free-udemy-course.en.gp\/?p=78","og_locale":"en_US","og_type":"article","og_title":"Advanced OpenID Connect with Keycloak and Spring Security - Free Udemy Course","og_description":"What You&#8217;ll Learn Review OAuth and OpenID Connect concepts for social and enterprise applications Understand Keycloak as an Identity and Access Management provider Step-by-step use of Spring Security with Authorization Code Flow (with and without PKCE) Step-by-step use of Spring Security with Client Credentials Grant Build OAuth2 Clients, JWT, and Opaque Resource Servers using Spring&#8230;Read More&#43;","og_url":"https:\/\/free-udemy-course.en.gp\/?p=78","og_site_name":"Free Udemy Course","article_published_time":"2026-05-13T17:46:13+00:00","article_modified_time":"2026-05-13T17:54:20+00:00","og_image":[{"width":480,"height":270,"url":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/5632756_f9d6.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/free-udemy-course.en.gp\/?p=78#article","isPartOf":{"@id":"https:\/\/free-udemy-course.en.gp\/?p=78"},"author":{"name":"admin","@id":"https:\/\/free-udemy-course.en.gp\/#\/schema\/person\/f06fa52b6915fc25122904de6097c63c"},"headline":"Advanced OpenID Connect with Keycloak and Spring Security","datePublished":"2026-05-13T17:46:13+00:00","dateModified":"2026-05-13T17:54:20+00:00","mainEntityOfPage":{"@id":"https:\/\/free-udemy-course.en.gp\/?p=78"},"wordCount":545,"commentCount":0,"publisher":{"@id":"https:\/\/free-udemy-course.en.gp\/#organization"},"image":{"@id":"https:\/\/free-udemy-course.en.gp\/?p=78#primaryimage"},"thumbnailUrl":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/5632756_f9d6.jpg","keywords":["java","programming","sap","springboot"],"articleSection":["Java","Programming","Springboot"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/free-udemy-course.en.gp\/?p=78#respond"]}]},{"@type":"WebPage","@id":"https:\/\/free-udemy-course.en.gp\/?p=78","url":"https:\/\/free-udemy-course.en.gp\/?p=78","name":"Advanced OpenID Connect with Keycloak and Spring Security - Free Udemy Course","isPartOf":{"@id":"https:\/\/free-udemy-course.en.gp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/free-udemy-course.en.gp\/?p=78#primaryimage"},"image":{"@id":"https:\/\/free-udemy-course.en.gp\/?p=78#primaryimage"},"thumbnailUrl":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/5632756_f9d6.jpg","datePublished":"2026-05-13T17:46:13+00:00","dateModified":"2026-05-13T17:54:20+00:00","breadcrumb":{"@id":"https:\/\/free-udemy-course.en.gp\/?p=78#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/free-udemy-course.en.gp\/?p=78"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/free-udemy-course.en.gp\/?p=78#primaryimage","url":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/5632756_f9d6.jpg","contentUrl":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/5632756_f9d6.jpg","width":480,"height":270},{"@type":"BreadcrumbList","@id":"https:\/\/free-udemy-course.en.gp\/?p=78#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/free-udemy-course.en.gp\/"},{"@type":"ListItem","position":2,"name":"Advanced OpenID Connect with Keycloak and Spring Security"}]},{"@type":"WebSite","@id":"https:\/\/free-udemy-course.en.gp\/#website","url":"https:\/\/free-udemy-course.en.gp\/","name":"Free Udemy Course","description":"","publisher":{"@id":"https:\/\/free-udemy-course.en.gp\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/free-udemy-course.en.gp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/free-udemy-course.en.gp\/#organization","name":"Free Udemy Course","url":"https:\/\/free-udemy-course.en.gp\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/free-udemy-course.en.gp\/#\/schema\/logo\/image\/","url":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/cropped-ChatGPT-Image-May-9-2026-08_30_36-PM-1.png","contentUrl":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/cropped-ChatGPT-Image-May-9-2026-08_30_36-PM-1.png","width":512,"height":230,"caption":"Free Udemy Course"},"image":{"@id":"https:\/\/free-udemy-course.en.gp\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/free-udemy-course.en.gp\/#\/schema\/person\/f06fa52b6915fc25122904de6097c63c","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/8216136e15d6af0b9fe870d4f74d838f5cad60ac0696e9d66b484c9fc9559a85?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8216136e15d6af0b9fe870d4f74d838f5cad60ac0696e9d66b484c9fc9559a85?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8216136e15d6af0b9fe870d4f74d838f5cad60ac0696e9d66b484c9fc9559a85?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/free-udemy-course.en.gp"],"url":"https:\/\/free-udemy-course.en.gp\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/free-udemy-course.en.gp\/wp-content\/uploads\/2026\/05\/5632756_f9d6.jpg","_links":{"self":[{"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=\/wp\/v2\/posts\/78","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=78"}],"version-history":[{"count":4,"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=\/wp\/v2\/posts\/78\/revisions"}],"predecessor-version":[{"id":84,"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=\/wp\/v2\/posts\/78\/revisions\/84"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=\/wp\/v2\/media\/79"}],"wp:attachment":[{"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=78"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=78"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/free-udemy-course.en.gp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=78"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}