{"id":1350,"date":"2025-03-26T13:26:41","date_gmt":"2025-03-26T13:26:41","guid":{"rendered":"https:\/\/discovery.cevolution.co.uk\/ciam\/?p=1350"},"modified":"2025-11-01T15:54:22","modified_gmt":"2025-11-01T15:54:22","slug":"wordpress-openfga-and-keycloak","status":"publish","type":"post","link":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/","title":{"rendered":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>\n<p class=\"wp-block-paragraph\">For many years, building a SaaS application has centred around the <span class=\"popup-trigger popmake-1354\" data-popup-id=\"1354\" data-do-default=\"0\">B2C<\/span> model, with <span class=\"popup-trigger popmake-1185\" data-popup-id=\"1185\" data-do-default=\"0\">CIAM<\/span> integration mostly concerning the process of <span class=\"popup-trigger popmake-1087\" data-popup-id=\"1087\" data-do-default=\"0\">User Authentication<\/span> and <a data-type=\"page\" data-id=\"1146\" href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/authorize\/consent\/\" target=\"_blank\" rel=\"noreferrer noopener\">Consent<\/a>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In more recent times, the value of the <span class=\"popup-trigger popmake-418\" data-popup-id=\"418\" data-do-default=\"0\">B2B<\/span> market and the opportunity to capitalise on a more standard approach for <a data-type=\"page\" data-id=\"509\" href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/authorize\/access-control\/\" target=\"_blank\" rel=\"noreferrer noopener\">Access Control<\/a> have led many of the third-party CIAM vendors down the route of adding support for full-spectrum <a data-type=\"page\" data-id=\"9\" href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/authorize\/\" target=\"_blank\" rel=\"noreferrer noopener\">Authorization<\/a> into their SaaS solutions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst vendors like Okta have recently released reference applications like <a href=\"https:\/\/auth0.com\/blog\/speed-up-your-customer-identity-journey-with-auth0-saastart\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>SaaStart<\/strong><\/a>, showcasing Auth0 features designed for <span class=\"popup-trigger popmake-418\" data-popup-id=\"418\" data-do-default=\"0\">B2B<\/span> application integration, together with Fine-Grained Authorization (a.k.a. <strong><a href=\"https:\/\/www.okta.com\/uk\/products\/fine-grained-authorization\/\" target=\"_blank\" rel=\"noreferrer noopener\">Okta FGA<\/a><\/strong>), these are hosted services that can be less than cost-effective. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My name&#8217;s <span class=\"popup-trigger popmake-378\" data-popup-id=\"378\" data-do-default=\"0\">Peter Fernandez,<\/span> and in a recent article (below), I wrote about using open-source alternatives to reduce costs by capitalising on the infrastructure already likely to be a requirement for the SaaS solution you&#8217;re building. In this article, I&#8217;m going to discuss how I&#8217;m using WordPress, OpenFGA, and Keycloak to do just that \u2014 or as I like to call it, &#8220;Cooking by WOK&#8221; \ud83d\ude0e<\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-82936891 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-discover-ciam wp-block-embed-discover-ciam\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"8EXJbHBzW2\"><a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/02\/22\/diy-or-buy\/\">Build, Buy or DIY your CIAM Solution?<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Build, Buy or DIY your CIAM Solution?&#8221; &#8212; Discover CIAM\" src=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/02\/22\/diy-or-buy\/embed\/#?secret=SKhVpkA3D0#?secret=8EXJbHBzW2\" data-secret=\"8EXJbHBzW2\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<h2 id=\"wordpress\" class=\"wp-block-heading\">WordPress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Famed for its popularity as a blogging platform, modern <a href=\"https:\/\/wordpress.org\/\" target=\"_blank\" rel=\"noopener\" title=\"\">WordPress<\/a> offers a comprehensive suite of functionality that can be used to build all sorts of solutions. It\u2019s not the most cutting-edge technology, but with over 800 million sites leveraging it, it does mean that almost 44% of all live websites on the internet are powered by it!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Although better known for building blogs, building web applications with WordPress is definitely possible and something that folks have been talking about for some time (there are even companies like <a href=\"https:\/\/vipestudio.com\/en\/\"><em>Vipe Studio<\/em><\/a> and <a href=\"https:\/\/www.gravitykit.com\/\"><em>Gravity Kit<\/em><\/a> that provide professional development services and tools for building web applications using WordPress):<\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-82936891 wp-block-group-is-layout-flex\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-794e3cfa wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-tom-mcfarlin wp-block-embed-tom-mcfarlin\" style=\"margin-top:0;margin-bottom:0\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"MX5u8cew0S\"><a href=\"https:\/\/tommcfarlin.com\/building-web-applications-on-wordpress\/\">A Case for Building Web Applications on WordPress<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;A Case for Building Web Applications on WordPress&#8221; &#8212; Tom McFarlin\" src=\"https:\/\/tommcfarlin.com\/building-web-applications-on-wordpress\/embed\/#?secret=ZZI3FXcEI9#?secret=MX5u8cew0S\" data-secret=\"MX5u8cew0S\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-embed wp-block-embed-embed wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"VideoPress Video Player\" aria-label='VideoPress Video Player' width='500' height='281' src='https:\/\/video.wordpress.com\/embed\/UnswmqdX?hd=1&amp;cover=1' frameborder='0' allowfullscreen allow='clipboard-write'><\/iframe><script src='https:\/\/v0.wordpress.com\/js\/next\/videopress-iframe.js?m=1770107250'><\/script>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-vipe-studio wp-block-embed-vipe-studio\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"MR7jeFq1sq\"><a href=\"https:\/\/vipestudio.com\/en\/wordpress-as-an-application-framework\/\">Don\u2019t Reinvent the Wheel: Use WordPress as an Application Framework<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Don\u2019t Reinvent the Wheel: Use WordPress as an Application Framework&#8221; &#8212; Vipe Studio\" src=\"https:\/\/vipestudio.com\/en\/wordpress-as-an-application-framework\/embed\/#?secret=xRYWBTqASp#?secret=MR7jeFq1sq\" data-secret=\"MR7jeFq1sq\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">As with most things, however, WordPress isn&#8217;t a magic bullet, and using it for just <em>any<\/em> web application development is probably not where you&#8217;d want to start. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, if you have a <span class=\"popup-trigger popmake-1354\" data-popup-id=\"1354\" data-do-default=\"0\">B2C<\/span> SaaS application that&#8217;s particularly content-heavy and\/or requires theme management capability, then it could be a good option,\u00a0particularly given its rich out-of-the-box functionality and its extensive ecosystem of plugins.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For <span class=\"popup-trigger popmake-418\" data-popup-id=\"418\" data-do-default=\"0\">B2B<\/span> SaaS application development \u2014 that requires a multi-tenancy approach, leverages both a vendor and a subscriber administration model, and typically requires <a data-type=\"page\" data-id=\"12\" href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/manage\/brand\/\" target=\"_blank\" rel=\"noreferrer noopener\">brand management<\/a> capability \u2014 <a href=\"https:\/\/developer.wordpress.org\/advanced-administration\/multisite\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>WordPress Multisite<\/em><\/a> gives you this, and more, ready-made out of the box, which you can use as a foundation for whatever solution you&#8217;re building. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It&#8217;s also easy to scale; it&#8217;s a relatively straightforward process to deploy multiple instances of the WordPress engine anywhere, providing not only the ability to easily load-balance globally but also geographically in order to target specific regional growth.<\/p>\n\n\n\n<div class=\"wp-block-group has-base-color has-accent-4-background-color has-text-color has-background has-link-color wp-elements-504216168e49f1454b30c9c84517ce46 is-layout-flow wp-block-group-is-layout-flow\" style=\"border-radius:20px\">\n<p class=\"has-text-align-center wp-block-paragraph\" style=\"padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\"><em>I typically view WordPress as a technology stack framework, and WordPress Multisite forms the foundation of the Discovery network of which <a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/\" data-type=\"page\" data-id=\"36\" target=\"_blank\" rel=\"noreferrer noopener\">Discover CIAM<\/a> is a part.<\/em><\/p>\n<\/div>\n\n\n\n<h2 id=\"keycloak\" class=\"wp-block-heading\">Keycloak<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Keycloak (<a href=\"https:\/\/www.keycloak.org\/\">https:\/\/www.keycloak.org\/<\/a>) is an open-source platform that provides Customer Identity and Access Management services that can be deployed as part of a DIY <span class=\"popup-trigger popmake-1185\" data-popup-id=\"1185\" data-do-default=\"0\">CIAM<\/span> integration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keycloak works with any development platform and provides application developers with secure authentication and authorization capabilities, requiring minimal or no development effort at all.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keycloak is a Cloud Native Computing Foundation (CNCF) incubation project that effectively provides a combined <span class=\"popup-trigger popmake-415\" data-popup-id=\"415\" data-do-default=\"0\">IdP<\/span> and <span class=\"popup-trigger popmake-467\" data-popup-id=\"467\" data-do-default=\"0\">OAuth 2.0<\/span> Authorization Server in one, and supports the following out of the box:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><span class=\"popup-trigger popmake-397 \" data-popup-id=\"397\" data-do-default=\"0\">Single Sign On<\/span><\/strong><\/li>\n\n\n\n<li><strong><span class=\"popup-trigger popmake-523 \" data-popup-id=\"523\" data-do-default=\"0\">Social Login<\/span><\/strong><\/li>\n\n\n\n<li><strong><a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/authenticate\/login\/federation\/\" data-type=\"page\" data-id=\"1136\" target=\"_blank\" rel=\"noreferrer noopener\">Federation<\/a><\/strong><\/li>\n\n\n\n<li><strong><a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/authenticate\/login\/passwordless\/\" data-type=\"page\" data-id=\"1149\">Passwordless<\/a><\/strong><\/li>\n\n\n\n<li><span class=\"popup-trigger popmake-1879 \" data-popup-id=\"1879\" data-do-default=\"0\"><strong>Passkeys<\/strong><\/span><\/li>\n\n\n\n<li><strong><span class=\"popup-trigger popmake-428 \" data-popup-id=\"428\" data-do-default=\"0\">MFA<\/span><\/strong><\/li>\n\n\n\n<li><strong><span class=\"popup-trigger popmake-1623 \" data-popup-id=\"1623\" data-do-default=\"0\">RBAC<\/span><\/strong><\/li>\n\n\n\n<li><strong><span class=\"popup-trigger popmake-2149 \" data-popup-id=\"2149\" data-do-default=\"0\">Delegated Authorization<\/span><\/strong><\/li>\n\n\n\n<li>Centralized <strong><a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/manage\/\" data-type=\"page\" data-id=\"18\" target=\"_blank\" rel=\"noreferrer noopener\">Management<\/a><\/strong><\/li>\n\n\n\n<li>Customized <strong><a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/manage\/brand\/\" data-type=\"page\" data-id=\"12\" target=\"_blank\" rel=\"noreferrer noopener\">Branding<\/a><\/strong><\/li>\n\n\n\n<li><strong>Clustering<\/strong> for scale and availability<\/li>\n\n\n\n<li><strong>Extensibility<\/strong> through customised code and adapters<\/li>\n\n\n\n<li><strong><span class=\"popup-trigger popmake-1354 \" data-popup-id=\"1354\" data-do-default=\"0\">B2C<\/span><\/strong> and <strong><span class=\"popup-trigger popmake-418 \" data-popup-id=\"418\" data-do-default=\"0\">B2B<\/span><\/strong> SaaS solution support<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A popular open-source Identity and Access Management (<span class=\"popup-trigger popmake-3257\" data-popup-id=\"3257\" data-do-default=\"0\">IAM<\/span>) solution, it&#8217;s increasingly being used for Customer Identity and Access Management (<span class=\"popup-trigger popmake-1185\" data-popup-id=\"1185\" data-do-default=\"0\">CIAM<\/span>) due to its flexibility, robust features, and open-source nature \u2014 making it a compelling and cost-effective choice for managing user identities and access across various <span class=\"popup-trigger popmake-2946\" data-popup-id=\"2946\" data-do-default=\"0\">SaaS<\/span> solutions.<\/p>\n\n\n\n<div class=\"wp-block-group has-base-color has-accent-4-background-color has-text-color has-background has-link-color wp-elements-ad9997f1bbdd369ece745fc80c22ede9 is-layout-flow wp-block-group-is-layout-flow\" style=\"border-radius:20px\">\n<p class=\"has-text-align-center wp-block-paragraph\" style=\"padding-top:var(--wp--preset--spacing--40);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\"><em>According to the figures for 2025, Keycloak holds around 1.86% market share in the Identity and Access Management (<span class=\"popup-trigger popmake-3257\" data-popup-id=\"3257\" data-do-default=\"0\">IAM<\/span>) sector. Definitely a way behind the SaaS IAM solution market-leading vendors, but ahead of a lot of its competitors and, arguably, the leader in the DIY (Deploy It Yourself) space. <\/em><\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Whilst you can easily host a Keycloak service yourself, as part of the infrastructure required to support your <span class=\"popup-trigger popmake-1354\" data-popup-id=\"1354\" data-do-default=\"0\">B2C<\/span> and\/or <span class=\"popup-trigger popmake-418\" data-popup-id=\"418\" data-do-default=\"0\">B2B<\/span> SaaS solution, there are companies like <em><a href=\"https:\/\/phasetwo.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Phase Two<\/a><\/em>, <em><a href=\"https:\/\/www.loginfactor.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Login Factor<\/a><\/em> or <a href=\"https:\/\/skycloak.io\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>SkyCloak<\/em><\/a> that offer full to partially managed hosting options. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For more on the benefits of a DIY (Deploy It Yourself) approach to CIAM, using Keycloak or one of the other open-source products, see the article entitled <a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/02\/22\/diy-or-buy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em><strong>Build, Buy or DIY your CIAM Solution?<\/strong><\/em><\/a><\/p>\n\n\n\n<h2 id=\"openfga\" class=\"wp-block-heading\">OpenFGA<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Another open-source project, this time from the <a href=\"https:\/\/www.linuxfoundation.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Linux Foundation<\/a> that&#8217;s part of the CNCF (Cloud Native Computing Foundation), is <a href=\"https:\/\/openfga.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>OpenFGA<\/em><\/a>. OpenFGA \u2014 as in open-source Fine Grained Authorization \u2014 can be deployed as a service as part of a CIAM integration to provide <span class=\"popup-trigger popmake-2333\" data-popup-id=\"2333\" data-do-default=\"0\">ReBAC<\/span> as a modern complement to traditional <span class=\"popup-trigger popmake-1623\" data-popup-id=\"1623\" data-do-default=\"0\">RBAC<\/span> <a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/authorize\/access-control\/\" data-type=\"page\" data-id=\"509\">access control<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Like Keycloak (<a href=\"#keycloak\">above<\/a>), an OpenFGA service can be hosted yourself, as part of the infrastructure required to support your <span class=\"popup-trigger popmake-1354\" data-popup-id=\"1354\" data-do-default=\"0\">B2C<\/span> and\/or <span class=\"popup-trigger popmake-418\" data-popup-id=\"418\" data-do-default=\"0\">B2B<\/span> SaaS solution; again, the benefits of a DIY (Deploy It Yourself) approach are outlined in my article entitled <a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/02\/22\/diy-or-buy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Build, Buy or DIY your CIAM Solution?<\/em><\/a> Alternatively, an organization such as Okta can provide a managed hosting service based on OpenFGA (see <a href=\"https:\/\/docs.fga.dev\/\">https:\/\/docs.fga.dev\/<\/a> for more details).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can read more about Relationship-Based Access Control (<span class=\"popup-trigger popmake-2333\" data-popup-id=\"2333\" data-do-default=\"0\">ReBAC<\/span>) in the article entitled <strong><a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/18\/authorized-access-control\/\" data-type=\"post\" data-id=\"2050\" target=\"_blank\" rel=\"noreferrer noopener\"><em>Access In A Controlled Manner<\/em><\/a><\/strong>, below, where I talk about it, how it can complement the more traditional method of <span class=\"popup-trigger popmake-1623\" data-popup-id=\"1623\" data-do-default=\"0\">RBAC<\/span>, and also ABAC, and where it fits into the overall architecture of an access control system.<\/p>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-82936891 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-discover-ciam wp-block-embed-discover-ciam\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"6URNLuzV2g\"><a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/18\/authorized-access-control\/\">Access In A Controlled Manner<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Access In A Controlled Manner&#8221; &#8212; Discover CIAM\" src=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/18\/authorized-access-control\/embed\/#?secret=ROvrpN0gsm#?secret=6URNLuzV2g\" data-secret=\"6URNLuzV2g\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I&#8217;m going to explore how I&#8217;m using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.<\/p>\n","protected":false},"author":1,"featured_media":2347,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"authenticate":"","authentication":"","authenticatedMethod":"","authenticatedMember":"","authorizedPermissions":[],"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[7],"tags":[28,27,59,26],"class_list":["post-1350","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-integration","tag-keycloak","tag-openfga","tag-wok","tag-wordpress"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I&#039;m going to explore how I&#039;m using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Peter Fernandez\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_GB\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Discover CIAM \u2013 Customer Identity &amp; Access Management\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \u2013 Discover CIAM\" \/>\n\t\t<meta property=\"og:description\" content=\"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I&#039;m going to explore how I&#039;m using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/2024\/03\/19202412\/IMG_3133.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/2024\/03\/19202412\/IMG_3133.jpg\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2025-03-26T13:26:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2025-11-01T15:54:22+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \u2013 Discover CIAM\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I&#039;m going to explore how I&#039;m using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/2024\/03\/19202412\/IMG_3133.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#blogposting\",\"name\":\"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \\u2013 Discover CIAM\",\"headline\":\"Cooked to Perfection using WordPress, OpenFGA, and Keycloak\",\"author\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/author\\\/petergf\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\\\/wp-content\\\/uploads\\\/sites\\\/22\\\/2025\\\/03\\\/26132254\\\/image-54.png\",\"width\":1024,\"height\":768},\"datePublished\":\"2025-03-26T13:26:41+00:00\",\"dateModified\":\"2025-11-01T15:54:22+00:00\",\"inLanguage\":\"en-GB\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#webpage\"},\"articleSection\":\"Integration, Keycloak, OpenFGA, WOK, WordPress\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/category\\\/integration\\\/#listItem\",\"name\":\"Integration\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/category\\\/integration\\\/#listItem\",\"position\":2,\"name\":\"Integration\",\"item\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/category\\\/integration\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#listItem\",\"name\":\"Cooked to Perfection using WordPress, OpenFGA, and Keycloak\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#listItem\",\"position\":3,\"name\":\"Cooked to Perfection using WordPress, OpenFGA, and Keycloak\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/category\\\/integration\\\/#listItem\",\"name\":\"Integration\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/#person\",\"name\":\"Peter Fernandez\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c44cfecd6b0056d1c4288373c9c8b59e245052e54777be4322017101636af6fb?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Peter Fernandez\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/author\\\/petergf\\\/#author\",\"url\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/author\\\/petergf\\\/\",\"name\":\"Peter Fernandez\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c44cfecd6b0056d1c4288373c9c8b59e245052e54777be4322017101636af6fb?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Peter Fernandez\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#webpage\",\"url\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/\",\"name\":\"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \\u2013 Discover CIAM\",\"description\":\"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I'm going to explore how I'm using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.\",\"inLanguage\":\"en-GB\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/author\\\/petergf\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/author\\\/petergf\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\\\/wp-content\\\/uploads\\\/sites\\\/22\\\/2025\\\/03\\\/26132254\\\/image-54.png\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#mainImage\",\"width\":1024,\"height\":768},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/2025\\\/03\\\/26\\\/wordpress-openfga-and-keycloak\\\/#mainImage\"},\"datePublished\":\"2025-03-26T13:26:41+00:00\",\"dateModified\":\"2025-11-01T15:54:22+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/#website\",\"url\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/\",\"name\":\"Discover CIAM\",\"description\":\"Customer Identity & Access Management\",\"inLanguage\":\"en-GB\",\"publisher\":{\"@id\":\"https:\\\/\\\/discovery.cevolution.co.uk\\\/ciam\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \u2013 Discover CIAM","description":"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I'm going to explore how I'm using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.","canonical_url":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#blogposting","name":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \u2013 Discover CIAM","headline":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak","author":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/author\/petergf\/#author"},"publisher":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/sites\/22\/2025\/03\/26132254\/image-54.png","width":1024,"height":768},"datePublished":"2025-03-26T13:26:41+00:00","dateModified":"2025-11-01T15:54:22+00:00","inLanguage":"en-GB","mainEntityOfPage":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#webpage"},"isPartOf":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#webpage"},"articleSection":"Integration, Keycloak, OpenFGA, WOK, WordPress"},{"@type":"BreadcrumbList","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/discovery.cevolution.co.uk\/ciam#listItem","position":1,"name":"Home","item":"https:\/\/discovery.cevolution.co.uk\/ciam","nextItem":{"@type":"ListItem","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/category\/integration\/#listItem","name":"Integration"}},{"@type":"ListItem","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/category\/integration\/#listItem","position":2,"name":"Integration","item":"https:\/\/discovery.cevolution.co.uk\/ciam\/category\/integration\/","nextItem":{"@type":"ListItem","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#listItem","name":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak"},"previousItem":{"@type":"ListItem","@id":"https:\/\/discovery.cevolution.co.uk\/ciam#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#listItem","position":3,"name":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak","previousItem":{"@type":"ListItem","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/category\/integration\/#listItem","name":"Integration"}}]},{"@type":"Person","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/#person","name":"Peter Fernandez","image":{"@type":"ImageObject","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/c44cfecd6b0056d1c4288373c9c8b59e245052e54777be4322017101636af6fb?s=96&d=mm&r=g","width":96,"height":96,"caption":"Peter Fernandez"}},{"@type":"Person","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/author\/petergf\/#author","url":"https:\/\/discovery.cevolution.co.uk\/ciam\/author\/petergf\/","name":"Peter Fernandez","image":{"@type":"ImageObject","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/c44cfecd6b0056d1c4288373c9c8b59e245052e54777be4322017101636af6fb?s=96&d=mm&r=g","width":96,"height":96,"caption":"Peter Fernandez"}},{"@type":"WebPage","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#webpage","url":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/","name":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \u2013 Discover CIAM","description":"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I'm going to explore how I'm using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.","inLanguage":"en-GB","isPartOf":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/#website"},"breadcrumb":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#breadcrumblist"},"author":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/author\/petergf\/#author"},"creator":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/author\/petergf\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/sites\/22\/2025\/03\/26132254\/image-54.png","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#mainImage","width":1024,"height":768},"primaryImageOfPage":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/#mainImage"},"datePublished":"2025-03-26T13:26:41+00:00","dateModified":"2025-11-01T15:54:22+00:00"},{"@type":"WebSite","@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/#website","url":"https:\/\/discovery.cevolution.co.uk\/ciam\/","name":"Discover CIAM","description":"Customer Identity & Access Management","inLanguage":"en-GB","publisher":{"@id":"https:\/\/discovery.cevolution.co.uk\/ciam\/#person"}}]},"og:locale":"en_GB","og:site_name":"Discover CIAM \u2013 Customer Identity &amp; Access Management","og:type":"article","og:title":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \u2013 Discover CIAM","og:description":"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I'm going to explore how I'm using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.","og:url":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/","og:image":"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/2024\/03\/19202412\/IMG_3133.jpg","og:image:secure_url":"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/2024\/03\/19202412\/IMG_3133.jpg","article:published_time":"2025-03-26T13:26:41+00:00","article:modified_time":"2025-11-01T15:54:22+00:00","twitter:card":"summary_large_image","twitter:title":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak \u2013 Discover CIAM","twitter:description":"Building a SaaS application with CIAM integrated as a DIY option can be a challenging prospect. In this article I'm going to explore how I'm using WordPress, Keycloak and OpenFGA to build B2B SaaS solutions with comprehensive CIAM integrations.","twitter:image":"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/2024\/03\/19202412\/IMG_3133.jpg"},"aioseo_meta_data":{"post_id":"1350","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"titles":[],"descriptions":[],"socialPosts":{"email":[],"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2025-06-07 07:46:10","updated":"2025-11-01 16:10:15","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/discovery.cevolution.co.uk\/ciam\/category\/integration\/\" title=\"Integration\">Integration<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tCooked to Perfection using WordPress, OpenFGA, and Keycloak\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/discovery.cevolution.co.uk\/ciam"},{"label":"Integration","link":"https:\/\/discovery.cevolution.co.uk\/ciam\/category\/integration\/"},{"label":"Cooked to Perfection using WordPress, OpenFGA, and Keycloak","link":"https:\/\/discovery.cevolution.co.uk\/ciam\/2025\/03\/26\/wordpress-openfga-and-keycloak\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/discovery-bucket-ha60ib.s3.eu-west-2.amazonaws.com\/wp-content\/uploads\/sites\/22\/2025\/03\/26132254\/image-54.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/posts\/1350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/comments?post=1350"}],"version-history":[{"count":47,"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/posts\/1350\/revisions"}],"predecessor-version":[{"id":5281,"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/posts\/1350\/revisions\/5281"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/media\/2347"}],"wp:attachment":[{"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/media?parent=1350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/categories?post=1350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/discovery.cevolution.co.uk\/ciam\/wp-json\/wp\/v2\/tags?post=1350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}