-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.html
30 lines (23 loc) · 52 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<!doctype html>
<html lang="en" dir="ltr" class="plugin-pages plugin-id-default" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.6.3">
<title data-rh="true">Phase Two - Managed Keycloak Hosting and Enterprise Support</title><meta data-rh="true" property="og:title" content="Phase Two - Managed Keycloak Hosting and Enterprise Support"><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://phasetwo.io/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" name="keywords" content="keycloak, iam, sso"><meta data-rh="true" property="og:logo" content="/img/appstore.png" size="1024x1024"><meta data-rh="true" property="og:image" content="/img/og_image_app.png" size="1200x630"><meta data-rh="true" property="og:logo" content="/img/playstore.png" size="512x512"><meta data-rh="true" name="description" content="Managed Keycloak Hosting and Enterprise Keycloak Support with custom extensions for SSO, Organizations, Migrations and User Management."><meta data-rh="true" property="og:description" content="Managed Keycloak Hosting and Enterprise Keycloak Support with custom extensions for SSO, Organizations, Migrations and User Management."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://phasetwo.io/"><link data-rh="true" rel="alternate" href="https://phasetwo.io/" hreflang="en"><link data-rh="true" rel="alternate" href="https://phasetwo.io/" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://W4PN7W5A70-dsn.algolia.net" crossorigin="anonymous"><script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span> (default value)</p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname,o="/"===s.substr(-1)?s:s+"/";e.innerHTML=o}document.addEventListener("DOMContentLoaded",(function(){void 0===window.docusaurus&&insertBanner()}))</script><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Phase Two - Managed Keycloak Hosting and Enterprise Support RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Phase Two - Managed Keycloak Hosting and Enterprise Support Atom Feed">
<link rel="search" type="application/opensearchdescription+xml" title="Phase Two - Managed Keycloak Hosting and Enterprise Support" href="/opensearch.xml">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tailwindcss/dist/preflight.min.css">
<link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script src="https://www.termsfeed.com/public/cookie-consent/4.1.0/cookie-consent.js" charset="UTF-8" defer="defer"></script>
<script src="https://www.googletagmanager.com/gtag/js?id=UA-160183620-1" async data-cookie-consent="tracking"></script><link rel="stylesheet" href="/assets/css/styles.d44390e0.css">
<script src="/assets/js/runtime~main.8f3a4691.js" defer="defer"></script>
<script src="/assets/js/main.c496e4d5.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const a=new URLSearchParams(window.location.search).entries();for(var[t,e]of a)if(t.startsWith("docusaurus-data-")){var n=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(n,e)}}catch(t){}}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_mb4j" style="background-color:#3fa1e3;color:#fff" role="banner"><div class="content_knG7 announcementBarContent_xLdY"><a href="/blog/dedicated-launch/">Announcing Dedicated Clusters!</a> Isolated compute, network and storage for your Phase Two Managed Keycloak cluster.</div></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo_phase_slash.svg" alt="Phase Two" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src="/img/logo_phase_slash.svg" alt="Phase Two" class="themedComponent_mlkZ themedComponent--dark_xIcU"></div><b class="navbar__title text--truncate"></b></a><a class="navbar__item navbar__link" href="/hosting/">Hosting</a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Support</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/support/">Enterprise Support</a></li><li><a class="dropdown__link" href="/support/migrate-to-keycloak/">Migration to Keycloak</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Product</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/product/onprem/">On-Prem Deployment</a></li><li><a class="dropdown__link" href="/product/sso/">SSO</a></li><li><a class="dropdown__link" href="/product/identity/">Identity</a></li><li><a class="dropdown__link" href="/product/organizations/">Organizations</a></li><li><a class="dropdown__link" href="/product/adminportal/">Admin Portal</a></li><li><a class="dropdown__link" href="/product/integrations/">Integrations</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">Developers</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/introduction/">Docs</a></li><li><a class="dropdown__link" href="/api/phase-two-admin-rest-api/">API</a></li><li><a href="https://github.com/p2-inc/" target="_blank" rel="noopener noreferrer" class="dropdown__link">GitHub</a></li></ul></div><a class="navbar__item navbar__link" href="/#pricing">Pricing</a><a class="navbar__item navbar__link" href="/blog/">Blog</a></div><div class="navbar__items navbar__items--right"><a href="https://phasetwo.io/dashboard/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link" buttontype="btnSecondary">Dashboard<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://phasetwo.io/dashboard/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link" buttontype="btnPrimary">Get Started<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="navbarSearchContainer_Bca1"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search (Command+K)"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><picture><source media="(max-width: 767px)" srcset="/img/home-bg-mobile.webp"><source media="(min-width: 768px)" srcset="/img/home-bg.webp"><img class="page-home" src="/img/home-bg-mobile.webp" alt="Gradient Background" loading="lazy"></picture><main><div class="pageHero"><div class="heroInner_VWeJ"><div class="pageHeroMsg"><h1>Enterprise-Grade Identity and Access Management (IAM) Solution for any Application with Managed Keycloak Hosting and Support</h1><h2 class="pageHeroMsgIntro">Accelerate SaaS time-to-market and enterprise adoption by rapidly integrating the features needed to support almost any<!-- --> <b>authentication</b> and <b>authorization</b> use-cases with Phase Two's Managed Keycloak Hosting and enhanced Keycloak deployments.</h2><div class="pageHeroCta"><button class="btnCta">Try Phase Two for Free</button></div></div></div><div class="heroSections_eYcn"><a class="heroSection_dXSz" href="/hosting/"><img class="heroSectionPicto_NANO" src="img/picto-hosting.svg" alt="Pictogram showing key" loading="lazy"><p> Managed Hosting</p></a><a href="#experts" class="heroSection_dXSz"><img class="heroSectionPicto_NANO" src="img/picto-support.svg" alt="Pictogram showing key" loading="lazy"><p>Support</p></a><a href="#experts" class="heroSection_dXSz"><img class="heroSectionPicto_NANO" src="img/picto-customization.svg" alt="Pictogram showing key" loading="lazy"><p>Customization</p></a><a class="heroSection_dXSz" href="/product/sso/"><img class="heroSectionPicto_NANO" src="img/picto-sso.svg" alt="Pictogram showing key" loading="lazy"><p>SSO</p></a><a class="heroSection_dXSz" href="/product/identity/"><img class="heroSectionPicto_NANO" src="img/picto-identity.svg" alt="Pictogram showing a person" loading="lazy"><p>Identity</p></a><a class="heroSection_dXSz" href="/product/organizations/"><img class="heroSectionPicto_NANO" src="img/picto-organizations.svg" alt="Pictogram showing multiple persons interacting" loading="lazy"><p>Organizations</p></a><a class="heroSection_dXSz" href="/product/adminportal/"><img class="heroSectionPicto_NANO" src="img/picto-admin-portal.svg" alt="Pictogram showing a browser" loading="lazy"><p>Admin Portal</p></a><a class="heroSection_dXSz" href="/product/onprem/"><img class="heroSectionPicto_NANO" src="img/picto-on-prem.svg" alt="Pictogram showing on prem servers" loading="lazy"><p>On-Prem Deployment</p></a></div><div class="heroFeats_bnZi"><div class="heroFeat_fBWQ"><img src="img/picto-open-source.svg" alt="Open Source Logo" loading="lazy"><p>We are open source</p></div><div class="heroFeat_fBWQ"><img src="img/picto-fixed-pricing.svg" alt="Pictogram showing fixed US dollar sign" loading="lazy"><p>Fixed pricing for peace of mind</p></div><div class="heroFeat_fBWQ"><img src="img/picto-cloud-or-on-prem.svg" alt="Pictogran showing cloud and on-prem servers" loading="lazy"><p>Cloud or on-prem deployment</p></div></div><div class="heroIntegrations_GxsS"><h2 id="replaceIAMs">REPLACE IAMs</h2><picture><source media="(max-width: 767px)" srcset="/img/integration-lines-mobile.svg"><source media="(min-width: 768px)" srcset="/img/integration-lines.svg"><img class="heroIntegrationsLines_bELR" src="/img/integration-lines.svg" alt="Integration Lines" loading="lazy"></picture><div class="heroIntegrationRow_vSEr"><div class="heroIntegration_GaJq"><img src="img/logo-okta.svg" alt="Okta Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-auth0.svg" alt="Auth0 Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-azure.svg" alt="Azure Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-google-workspace.svg" alt="Google Workspace Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-active-directory.svg" alt="Active Directory Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-jump-cloud.svg" alt="JumpCloud Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-onelogin.svg" alt="Onelogin Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-ping-identity.svg" alt="Ping Identity Logo" loading="lazy"></div><div class="heroIntegration_GaJq"><img src="img/logo-duo-security.svg" alt="Duo Security Logo" loading="lazy"></div><div class="heroIntegration_GaJq heroIntegrationMore_ABZQ"><p>+ many more</p></div></div></div></div><div class="contentBlock"><div class="contentBlockHead"><h1 class="margin-top--xl">Managed Keycloak Hosting</h1><p class="heroIntegrationsCopy_THh8">Phase Two provides a modern, open source alternative to fully replace or integrate with any IAMs available. We are not just a DevOps shop that hosts Keycloak (although we're great at it), but Keycloak developers and maintainers. Every deployment is packed with our<!-- --> <a href="https://github.com/p2-inc#our-extensions-" target="_blank">popular extensions</a>.</p></div><div class="contentBlockBody"><div class="mx-auto max-w-2xl lg:max-w-none"><dl class="grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-3"><div class="flex flex-col"><dt class="flex items-center gap-x-3 text-base font-semibold leading-7 text-gray-900"><span></span>Starter Tier, Predictable Pricing</dt><dd class="mt-4 flex flex-auto flex-col text-base leading-7 text-gray-600"><p class="flex-auto">A generous free tier to get started. Test out Keycloak. See if you think it will work for your use case (we think it will). When ready to move to a paid tier, you can do so with ease and transparency.</p><p class="mt-6"><a href="https://phasetwo.io/dashboard/" class="text-sm font-semibold leading-6 text-p2blue-800">Get started<!-- --> <span aria-hidden="true">→</span></a></p></dd></div><div class="flex flex-col"><dt class="flex items-center gap-x-3 text-base font-semibold leading-7 text-gray-900"><span></span>Multi-region, High Availability, Dedicated Clusters</dt><dd class="mt-4 flex flex-auto flex-col text-base leading-7 text-gray-600"><p class="flex-auto">Hosted in multiple regions for high availability and low latency. Deploy in areas to comply with data residency requirements. Ensure uptime and performance.</p><p class="mt-6"><a href="https://phasetwo.io/hosting/" class="text-sm font-semibold leading-6 text-p2blue-800">Learn more<!-- --> <span aria-hidden="true">→</span></a></p></dd></div><div class="flex flex-col"><dt class="flex items-center gap-x-3 text-base font-semibold leading-7 text-gray-900"><span></span>Fully Extended, Customized, Automatically Updated</dt><dd class="mt-4 flex flex-auto flex-col text-base leading-7 text-gray-600"><p class="flex-auto">Customize your Keycloak instance with extensions and themes. We will keep your instance up to date with the latest Keycloak releases. Spend time on your app, not on maintenance.</p><p class="mt-6"><a href="https://phasetwo.io/hosting/" class="text-sm font-semibold leading-6 text-p2blue-800">Learn more<!-- --> <span aria-hidden="true">→</span></a></p></dd></div></dl></div></div></div><div class="contentBlock"><div class="contentBlockHead"><h2 id="openSourceSSO">Enterprise Keycloak Support</h2><p>Phase Two's<!-- --> <a href="https://phasetwo.io/support">Enterprise Support</a> is ideal for many customers already using Keycloak that need to take their implementation to the next level.</p></div><div class="contentBlockBody"><div class="mx-auto max-w-2xl lg:max-w-4xl"><dl class="grid max-w-xl grid-cols-1 gap-x-8 gap-y-10 lg:max-w-none lg:grid-cols-2 lg:gap-y-16"><div class="relative pl-16"><dt class="text-base font-semibold leading-7 text-gray-900"><div class="absolute left-0 top-0 flex h-12 w-12 items-center justify-center rounded-lg bg-p2blue-600 text-white"><span></span></div>On-premise Deployments</dt><dd class="mt-2 text-base leading-7 text-gray-600">You have an on-premise installation for data residency requirements.</dd></div><div class="relative pl-16"><dt class="text-base font-semibold leading-7 text-gray-900"><div class="absolute left-0 top-0 flex h-12 w-12 items-center justify-center rounded-lg bg-p2blue-600 text-white"><span></span></div>Keycloak Scale and Growth</dt><dd class="mt-2 text-base leading-7 text-gray-600">Keycloak is working on a test app, staging, or only part of your application portfolio and are expecting large scale with your installation.</dd></div><div class="relative pl-16"><dt class="text-base font-semibold leading-7 text-gray-900"><div class="absolute left-0 top-0 flex h-12 w-12 items-center justify-center rounded-lg bg-p2blue-600 text-white"><span></span></div>IAM Consolidation to Keycloak</dt><dd class="mt-2 text-base leading-7 text-gray-600">You are consolidating from many Identity Providers down into Keycloak.</dd></div><div class="relative pl-16"><dt class="text-base font-semibold leading-7 text-gray-900"><div class="absolute left-0 top-0 flex h-12 w-12 items-center justify-center rounded-lg bg-p2blue-600 text-white"><span></span></div>Infrastructure and Code Review</dt><dd class="mt-2 text-base leading-7 text-gray-600">You need someone to look at what you have already and make sure that it is secure and scalable</dd></div><div class="relative pl-16"><dt class="text-base font-semibold leading-7 text-gray-900"><div class="absolute left-0 top-0 flex h-12 w-12 items-center justify-center rounded-lg bg-p2blue-600 text-white"><span></span></div>Keycloak Upgrades</dt><dd class="mt-2 text-base leading-7 text-gray-600">You need help upgrading your Keycloak installation to the newest version.</dd></div><div class="relative pl-16"><dt class="text-base font-semibold leading-7 text-gray-900"><div class="absolute left-0 top-0 flex h-12 w-12 items-center justify-center rounded-lg bg-p2blue-600 text-white"><span></span></div>Custom Keycloak Development</dt><dd class="mt-2 text-base leading-7 text-gray-600">You need custom development for Keycloak to meet your specific needs in terms of functionality (extensions) or brand experience (theming).</dd></div></dl></div></div></div><div class="contentBlock"><div class="enterpriseSsoBgImg bgImg"><img src="/img/enterprise-sso-bg.webp" alt="Color Gradient" loading="lazy"></div><div class="contentBlockHead"><h2 id="openSourceSSO">Open Source Enterprise Single Sign-on</h2><p>Leap up market into enterprise adoption with seamless, no-code SSO support.</p></div><div class="contentBlockBody"><div class="enterpriseSSO_fLpf"><div class="enterpriseSSOL_qbBN"><img src="img/hero-feature-sso.webp" alt="SSO Login Examples" loading="lazy"></div><div class="enterpriseSSOR_lqTw"><ul class="listFeats_Pnmk"><li><img class="listFeatsPicto_LatF" src="img/picto-5-min-integration.svg" alt="Pictogram showing 5 minutes on a hour" loading="lazy"><h5>5-minute integration</h5><p>One integration adds all enterprise identity providers. With or without adopting our identity feature, you can support all popular identity providers.</p></li><li><img class="listFeatsPicto_LatF" src="img/picto-integrate-once.svg" alt="Pictogram showing puzzle pieces" loading="lazy"><h5>Integrate Once</h5><p>SAML, OIDC, OAuth2? Support all the standards without years of development and debugging.</p></li><li><img class="listFeatsPicto_LatF" src="img/picto-no-variable-cost.svg" alt="Pictogram showing US dollar sign" loading="lazy"><h5>No variable cost</h5><p>We're not a parasite on your business model. Unlimited SSO connections for a single price.</p></li></ul></div></div></div></div><div class="contentBlock"><div class="contentBlockHead"><h2 id="adminPortal">Admin Portal</h2><p>Seamless onboarding and self-management for your customer administrators and users. Empower your users and customers to self-service Keycloak and easily manage every aspect of identity, organization and SSO. Drastically reduce customer support.</p></div><div class="contentBlockBody"><div class="aportal_VoVb"><picture><source media="(max-width: 767px)" srcset="/img/img-admin-portal-new1-mobile.webp"><source media="(min-width: 768px)" srcset="/img/img-admin-portal-new1.webp"><img src="/img/img-admin-portal-new1.webp" alt="Screenshots showing management of users, domains and SSO" loading="lazy"></picture></div></div></div><div class="contentBlock"><div class="contentBlockHead"><h2 id="devleopers">By Developers, For Developers</h2><p>Create delightful, seamless experiences for your customers. In just a few minutes!</p></div><div class="contentBlockBody"><div class="devs_TdUg"><div class="devsL_xtfI"><ul class="listFeats_Pnmk"><li><img class="listFeatsPicto_LatF" src="img/picto-simple-integration.svg" alt="Pictogram showing a code" loading="lazy"><h5>Simple Integration</h5><p>Our goal is to make it as easy as possible for developers to integrate with our system so they can add SSO and other features quickly and then move on to what's important—their app!</p></li><li><img class="listFeatsPicto_LatF" src="img/picto-documentation.svg" alt="Pictogram showing documents" loading="lazy"><h5>Full Documentation</h5><p>We are building great documentation, tutorials and modern SDKs, so implementation is easy regardless of skill level or technology stack.</p></li><li><img class="listFeatsPicto_LatF" src="img/picto-secure.svg" alt="Pictogram showing a key inside the shield" loading="lazy"><h5>Secure and Standardized</h5><p>Standards compliance and security are our strengths so you can focus on your your customers.</p></li></ul></div><div class="devsR_oMCi"><div class="language-javascript codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockTitle_Ktv7">Protect a page</div><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style="color:#bfc7d5;background-color:#292d3e"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">var</span><span class="token plain"> auth </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">new</span><span class="token plain"> </span><span class="token class-name" style="color:rgb(255, 203, 107)">Keycloak</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token literal-property property">url</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'https://{host}/auth'</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token literal-property property">realm</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'{realm}'</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token literal-property property">clientId</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'{clientId}'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain">auth</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token method function property-access" style="color:rgb(130, 170, 255)">init</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token literal-property property">onLoad</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'login-required'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token method function property-access" style="color:rgb(130, 170, 255)">then</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token keyword" style="font-style:italic">function</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token parameter">authenticated</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">alert</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">authenticated </span><span class="token operator" style="color:rgb(137, 221, 255)">?</span><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'authenticated'</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token string" style="color:rgb(195, 232, 141)">'not authenticated'</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token keyword control-flow" style="font-style:italic">catch</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token keyword" style="font-style:italic">function</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">alert</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token string" style="color:rgb(195, 232, 141)">'failed to initialize'</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div></div><div class="contentBlockCta"><button class="btnPrimary">Go to Documentation</button></div></div></div><div class="contentBlock"><div class="keycloakBgCircles bgImg"><img src="/img/circles.svg" alt="Concentric Circles" loading="lazy"></div><div class="contentBlockHead"><h2 id="phaseTwoLovesKeycloak">Phase Two<!-- --> <img class="heart_Zeus" src="img/heart-filled.svg" alt="Heart symbols" loading="lazy"> <!-- -->Keycloak</h2><p>Phase Two is based on the Keycloak Open Source Identity and Access Management system, built and maintained by Red Hat.</p></div><div class="contentBlockBody"><div class="keycloak_K4jr"><img src="img/diagram-keycloak.svg" alt="Diagram showing how Keycloak works with Phase Two" loading="lazy"></div><div class="featCards_qurD"><div class="featCard_EPO6"><img class="featCardPicto_mQtc" src="img/picto-open-source-alt.svg" alt="Pictogram showing Open Source logo" loading="lazy"><h5>Always Open Source</h5><p>Phase Two is built as a collection of open source Keycloak extensions. While we endeavor to make Keycloak simple to use, operate and scale, in the cloud or on prem.</p></div><div class="featCard_EPO6"><img class="featCardPicto_mQtc" src="img/picto-hardened.svg" alt="Pictogram showing a fortress" loading="lazy"><h5>Battle-tested and hardened</h5><p>Keycloak has been battle-tested and hardened for over 7 years. Its security and reliability is depended on by organizations from small startups to governments and Fortune 500 companies.</p></div><div class="featCard_EPO6"><img class="featCardPicto_mQtc" src="img/picto-community.svg" alt="Pictogram showing a group of poeple interconnected" loading="lazy"><h5>Community Superpower</h5><p>We believe that community participation in building our software is a superpower, and can't wait to see what you will help us build.</p></div></div></div></div><div id="pricing" class="contentBlock"><div class="plansBgImg bgImg"><img src="/img/gradient-bg.webp" alt="Color Gradient" loading="lazy"></div><div class="contentBlockHead"><h2 id="phaseTwoPricing">Premium Keycloak Hosting</h2><p>Phase Two is one price per project. No hidden fees, no unpredictable costs.</p><p class="mt-1r">We offer a premium hosted Keycloak product to make getting started fast and secure. Set up a free instance with our starter package to get a sense of the simplicity that comes with Phase Two Keycloak hosting.</p></div><div class="contentBlockBody"><div class="plansBlocks_GHdj"><div class="plansBlock_fHJo"><div class="plans_lWeT"><div class="plan_scje"><div class="planHead_C2Ld"><img class="featCardPicto_mQtc" src="img/plan-starter.svg" alt="Starter plan" loading="lazy"><h3>Starter</h3><p>Always FREE <sup>1</sup></p></div><div class="planBody_fSqo"><ul class="checklist_YNT1"><li><span></span>Shared cluster</li><li><span></span><1,000 users</li><li><span></span><10 SSO connections</li><li><span></span>Community support</li><li><span></span> <!-- -->No SLA</li></ul></div><div class="planFoot_Kh7l"><button class="btnPrimary btnPlan_oVpz">Get started</button><button class="btnSecondary btnPlan_oVpz">Self Host</button></div></div><div class="plan_scje"><div class="planBadge_qnN9">Most Popular</div><div class="planHead_C2Ld"><img class="featCardPicto_mQtc" src="img/plan-supported.svg" alt="Premium plan" loading="lazy"><h3>Premium</h3><p><span class="planFrom_mnEa">from</span> <strong class="planPrice_u1BA">$<!-- -->499</strong>/mo<!-- --> </p></div><div class="planBody_fSqo"><ul class="checklist_YNT1"><li><span></span>Dedicated cluster</li><li><span></span>Unlimited users</li><li><span></span>Unlimited SSO connections</li><li><span></span>Custom domain</li><li><span></span>Email support</li><li><span></span>99.9% uptime guarantee</li><li><span></span><a href="/docs/sla/#response-and-resolution-times">SLA</a></li></ul></div><div class="planFoot_Kh7l"><button class="btnPrimary btnPlan_oVpz">Get started</button></div></div><div class="plan_scje"><div class="planHead_C2Ld"><img class="featCardPicto_mQtc" src="img/plan-premium.svg" alt="Enterprise plan" loading="lazy"><h3>Enterprise</h3><p><span class="planFrom_mnEa">from</span> <strong class="planPrice_u1BA">$<!-- -->1999</strong>/mo<!-- --> </p></div><div class="planBody_fSqo"><ul class="checklist_YNT1"><li><span></span>All Premium features</li><li><span></span>Global deployment(s)</li><li><span></span>Custom themes & extensions <sup>2</sup></li><li><span></span>Dedicated support</li><li><span></span>Slack / Chat channel</li><li><span></span>99.99% uptime guarantee</li><li><span></span><a href="/docs/sla/#response-and-resolution-times">SLA</a><sup>3</sup></li></ul></div><div class="planFoot_Kh7l"><button class="btnPrimary btnPlan_oVpz">Get started</button></div></div></div></div></div></div><div class="contentBlockCta flex items-baseline justify-center gap-3"><div class="text-lg">Billing period: </div><div class="flex items-center justify-center gap-2" data-headlessui-state=""><label id="headlessui-label-:R2t49mh:" for="headlessui-control-:R549mh:" data-headlessui-state="">Monthly</label><button class="group inline-flex h-6 w-11 items-center rounded-full transition data-[checked]:bg-p2blue-600 bg-p2blue-600" id="headlessui-control-:R549mh:" role="switch" type="button" tabindex="0" aria-checked="true" data-headlessui-state="checked" data-checked=""><span class="size-4 translate-x-1 rounded-full bg-white transition group-data-[checked]:translate-x-6"></span></button><label class="font-bold" id="headlessui-label-:R6t49mh:" for="headlessui-control-:R549mh:" data-headlessui-state="">Annual</label><span hidden="" style="position:fixed;top:1px;left:1px;width:1px;height:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;display:none"></span></div></div><div class="contentBlockCta"><p>(1) Subject to availabilty (2) Additional fees based on extension complexity (3) Custom SLA available</p><p>For on-prem support and bundling options, please<!-- --> <a href="mailto:[email protected]">contact sales</a>.</p></div><div class="contentBlock"><div class="contentBlockBody"><div><h2 id="supportPackages" style="text-align:center;margin-top:3rem">Enterprise Keycloak Support Packages</h2><a href="#experts"></a><div class="planBody_fSqo" style="max-width:760px;margin:0 auto"><p>Configuring, integrating and operating an Identity and Access Management system can be daunting. The Support package provides customers with the expertise on how to implement Keycloak. This is separate from our hosting, but can be bundled together (many customers do).</p><p>For both hosted, on-prem customers, or those with their own Keycloak deployment, our goal is to create an understanding in your organization of what is possible with Keycloak. We want to support your goals as you adopt and implement Keycloak in your products. Let us lend our expertise to every step of your journey.</p></div></div><div class="planSupport_NttP" id="experts"><div class="plan_ASN6"><div class="planHead_DAbf"><img class="featCardPicto_A2UG" src="/img/plan-community.svg" alt="Enterprise plan" loading="lazy"><h3>Enterprise Keycloak Support Packages</h3></div><div class="tableThemeWrapper_OL58"><table class="tableTheme_Eia5"><thead><tr><th></th><th><span></span><br>Silver</th><th><span></span><br>Gold</th></tr></thead><tbody><tr><td>Architecture review</td><td><span></span></td><td><span></span></td></tr><tr><td>Installation and configuration support</td><td><span></span></td><td><span></span></td></tr><tr><td>Email support</td><td><span></span></td><td><span></span></td></tr><tr><td>Slack support</td><td><span class="notPartOfPlan_bmVa">—</span></td><td><span></span></td></tr><tr><td>Phone support</td><td><span class="notPartOfPlan_bmVa">—</span></td><td><span></span></td></tr><tr><td><span>Support hours <span style="opacity:0.5">(US EST)</span></span></td><td>9x5</td><td>24x7x365</td></tr><tr><td><span>Response time <span style="opacity:0.5">(hours)</span></span></td><td>24</td><td>4</td></tr><tr><td>Health assessment</td><td>Quarterly</td><td>Monthly</td></tr><tr><td><span>Incl. service hours <span style="opacity:0.5">(/mth)</span></span></td><td><span>10 <span style="opacity:0.5">(max)</span></span></td><td>20</td></tr><tr><td>Custom development</td><td><span class="notPartOfPlan_bmVa">—</span></td><td><span></span></td></tr><tr><td><span>Pricing <span style="opacity:0.5">(/mth)</span></span></td><td><span><span style="opacity:0.5">from</span> $3,500</span></td><td><span><span style="opacity:0.5">from</span> $7,500</span></td></tr></tbody></table></div><div class="planFoot_nEpW"><a href="mailto:[email protected]" class="planFootA_R7Zz" target="_blank" rel="noopener noreferrer"><button class="btnPrimary btnPlan_xEDT">Contact sales</button></a></div></div></div></div></div><div class="contentBlock"><div class="contentBlockHead"><h2 id="faqs">Frequently Asked Questions?</h2></div><div class="contentBlockBody"><div class="questionsBox_VPDL"><div class="questionBox_FnR_"><div class="question_s5Of">What is the difference between Phase Two and Keycloak?</div><div class="answer_Vooh"><div>Phase Two is a company that specializes in Enterprise level Keycloak Hosting and Support.<!-- --> <i>We are active contributors to the Keycloak project and community</i>. We issue pull requests for issues and take active part in community discussions whether on at<!-- --> <a href="https://phasetwo.io/blog/keycloak-orgs-presentation/">Keycloak Dev Day</a> <!-- -->Github, Forums, or mailing lists. We've been working with Keycloak for a long time and have a deep understanding of the project and because of this have built some of the most successful<!-- --> <a href="https://github.com/p2-inc#our-extensions-" target="_blank" rel="noopener noreferrer">extensions</a>.</div><div>Keycloak is an open source Identity and Access Management server software developed and maintained by Red Hat. It is widely used across the world for a multitude of Authentication and Authorization use cases.</div></div></div><div class="questionBox_FnR_"><div class="question_s5Of">What are the advantages to Keycloak Open Source Identity and Access Management System?</div><div class="answer_Vooh"><div>Keycloak offers SSO, identity brokering, user federation, fine-grained authorization, and customizable themes. It supports various protocols (OAuth2, OpenID Connect, SAML) and integrates with many platforms.</div><div>It's been under development for over 7 years and is an accepted<!-- --> <a href="https://www.cncf.io/projects/keycloak/" target="_blank" rel="noopener noreferrer">project</a> <!-- -->at the <b>Incubating</b> level of the Cloud Native Computing Foundation (CNCF).</div></div></div><div class="questionBox_FnR_"><div class="question_s5Of">Why does Phase Two offer hosting?</div><div class="answer_Vooh">We've seen a lot of Keycloak deployments at scale and know what it takes to be successful. We've put that expertise to use by building and offering a<!-- --> <a href="https://phasetwo.io/hosting/">hosted</a> solution to make it easier to adopt<!-- --> <a href="https://phasetwo.io/blog/identity-brokering-on-prem/">Authentication and Authorization</a> <!-- -->to any application at any size. This offloads the burden of DevOps, maintenance, and upgrades to us, allowing teams to focus on shipping product.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">What support is provided and included in Enterprise Support packages?</div><div class="answer_Vooh">Many customers use Keycloak precisely because its Open Source and can be hosted themselves. However, getting that right, how to migrate from another solution, knowing where the pitfalls are, how to scale it, how to troubleshoot, are all things that will be encountered during that process. To that end, we offer Enterprise Support to enable companies to adopt Keycloak.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">What support is provided and included in hosting?</div><div class="answer_Vooh">Hosting support is provided for infrastructure management, upgrades, and maintenance. We also provide support for the Keycloak software itself, including configuration, troubleshooting, and best practices. That would need to be purchased separate or in addition to the hosting fee.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">Why should I migrate to Keycloak?</div><div class="answer_Vooh">Migrate to Keycloak and gain full control over your authentication and authorization processes. User migration support is provide so that migration can occur quickly and seamlessly.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">How quickly can I migrate to Keycloak?</div><div class="answer_Vooh">The answer is, it depends. Migrating to Keycloak can take from a few days to several weeks, depending on the complexity of your current authentication system, data migration needs, and integration requirements. A straightforward setup might be quick, but extensive customization or large user bases will require more time. We spent some time writing up what it takes to<!-- --> <a href="https://phasetwo.io/blog/open-source-iam/#migrating-from-your-current-identity-provider">migrate to Keycloak</a> <!-- -->from an existing identity provider.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">How much does it cost to run Keycloak on my own and is Phase Two a cost effective solution?</div><div class="answer_Vooh">The answer is less about the cost to run the server and more about the time it takes to manage a system that runs a scaled, resilient Keycloak solution. Depending on the needs of your Applications, it will determine the resources required to support such a deployment. Our<!-- --> <a href="https://phasetwo.io/hosting/">hosted</a> solution allows for fast, globally distributed, resilient systems immediately.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">What servers and frameworks does Keycloak support?</div><div class="answer_Vooh">Keycloak combines a strong API with a powerful Admin portal to make integration with any server or frontend framework possible. Use it for apps running<!-- --> <a href="https://phasetwo.io/blog/secure-spring-boot/">Spring Boot</a>,<!-- --> <a href="https://phasetwo.io/blog/secure-django/">Django</a>,<!-- --> <a href="https://phasetwo.io/blog/instant-user-managemenet-and-sso-for-nextjs/">Next.js</a>,<!-- --> <a href="https://phasetwo.io/blog/instant-user-managemenet-and-sso-for-nuxt/">Nuxt</a>,<!-- --> <a href="https://phasetwo.io/blog/instant-user-managemenet-and-sso-for-reactjs/">React</a>,<!-- --> <a href="https://phasetwo.io/blog/instant-user-managemenet-and-sso-for-vue/">Vue</a>,<!-- --> <a href="https://phasetwo.io/blog/instant-user-management-and-sso-for-remix/">Remix</a>,<!-- --> <a href="https://phasetwo.io/blog/instant-user-management-and-sso-for-sveltekit/">Sveltekit</a>, or any other server or frontend framework.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">How is Keycloak a an alternative to Auth0, WorkOS, Okta, and Cognito?</div><div class="answer_Vooh">We put some thoughts together about this specific topic in a blog post about Keycloak being a<!-- --> <a href="https://phasetwo.io/blog/open-source-iam/#migrating-from-your-current-identity-provider">open source alternative</a> <!-- -->to these offerings.</div></div><div class="questionBox_FnR_"><div class="question_s5Of">What is the difference between Keycloak and<!-- --> <a href="https://authjs.dev/">Auth.js</a>?</div><div class="answer_Vooh"><div>AuthJs is a flexible, client-side <b>authentication</b> <!-- -->library for JavaScript apps, offering simple integration and customization to various providers. Keycloak is a full-featured, server-side identity and access management solution, providing SSO, identity brokering, user federation, and advanced security features.</div><div>The biggest difference is that Keycloak does<!-- --> <b>authentication</b> AND <b>authorization</b>. That means Keycloak provides a way to federate login to any SAML or OIDC provider and then manage the permissions of the users in your application. When trying to do this with multiple providers, it quickly becomes a very complex problem. In addition, when you start to layer in things like authentication flows with MFA,<!-- --> <a href="https://phasetwo.io/blog/set-up-magic-links/">Magin Links</a>, or other advanced use cases, managing that quickly becomes a full-time job.</div></div></div><div class="questionBox_FnR_"><div class="question_s5Of">Why can't I just integrate SAML into my own app and be done?</div><div class="answer_Vooh">Its not just people logging into your app, which Keycloak can easily do, but it's about handling the use case for your customers and letting them tie their own identity providers into your application.</div></div></div></div></div></div></main><div><noscript>Free cookie consent management tool by
<a href="https://www.termsfeed.com/">TermsFeed</a></noscript></div></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Phase Two</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/about/">About</a></li><li class="footer__item"><a class="footer__link-item" href="/blog/">Blog</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/careers/">Careers</a></li></ul></div><div class="col footer__col"><div class="footer__title">Product</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" activebasepath="hosting" href="/hosting/">Hosting</a></li><li class="footer__item"><a class="footer__link-item" activebasepath="product/sso" href="/product/sso/">SSO</a></li><li class="footer__item"><a class="footer__link-item" activebasepath="product/identity" href="/product/identity/">Identity</a></li><li class="footer__item"><a class="footer__link-item" activebasepath="product/organizations" href="/product/organizations/">Organizations</a></li><li class="footer__item"><a class="footer__link-item" activebasepath="product/adminportal" href="/product/adminportal/">Admin Portal</a></li><li class="footer__item"><a class="footer__link-item" activebasepath="product/onprem" href="/product/onprem/">On-Prem</a></li></ul></div><div class="col footer__col"><div class="footer__title">Developers</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/introduction/">Documentation</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/getting-started/">Getting Started</a></li><li class="footer__item"><a class="footer__link-item" href="/api/phase-two-admin-rest-api/">API</a></li><li class="footer__item"><a href="https://github.com/p2-inc" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/support/migrate-to-keycloak/">Migrate to Keycloak</a></li></ul></div><div class="col footer__col"><div class="footer__title">Support</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/support/">Enterprise Support</a></li><li class="footer__item"><a href="https://github.com/p2-inc/phasetwo/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">Bugs & Feature Requests<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="mailto:[email protected]" target="_blank" rel="noopener noreferrer" class="footer__link-item">[email protected]<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://dev.to/phasetwo" target="_blank" rel="noopener noreferrer" class="footer__link-item">DEV.to<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://www.youtube.com/channel/UCUY2ZvxI0hxpTWO_8w7MjVw" target="_blank" rel="noopener noreferrer" class="footer__link-item">Youtube<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Legal</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/privacy/">Privacy Policy</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/terms/">Terms of Use</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/subprocessors/">Subprocessors</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/service-agreement/">Service Agreement</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/sla/">SLA</a></li><li class="footer__item"><a href="#open_preferences_center" class="footer__link-item" id="open_preferences_center">Cookies Policy</a></li></ul></div><div class="col footer__col"><div class="footer__title"> </div><ul class="footer__items clean-list"><li class="footer__item">
<img class="footer-logo" src="https://phasetwo.io/img/logo_phase_slash.svg" alt="PhaseTwo" width="114" height="51">
</li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 Phase Two, Inc.</div></div></div></footer></div>
</body>
</html>