{"id":29010930,"url":"https://github.com/ory/polis","last_synced_at":"2025-06-25T17:03:14.875Z","repository":{"id":36967127,"uuid":"395891383","full_name":"ory/polis","owner":"ory","description":"🔥 Streamline your web application's authentication with Polis, an SSO service supporting SAML and OpenID Connect protocols. Beyond enterprise-grade Single Sign-On, it also supports Directory Sync via the SCIM 2.0 protocol for automatic user and group provisioning/de-provisioning. 🤩","archived":false,"fork":false,"pushed_at":"2025-06-21T10:37:32.000Z","size":55888,"stargazers_count":2087,"open_issues_count":47,"forks_count":187,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-06-21T11:30:28.719Z","etag":null,"topics":["enterprise-software","hacktoberfest","identity-access-management","javascript","next-auth","nextjs","nodejs","oidc","open-source","openid","openid-connect","saml","saml-authentication","saml-identity-provider","saml-service-provider","saml2","single-sign-on","sso","sso-authentication","typescript"],"latest_commit_sha":null,"homepage":"https://www.ory.sh/docs/polis","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-08-14T04:41:00.000Z","updated_at":"2025-06-20T14:31:48.000Z","dependencies_parsed_at":"2023-10-20T16:36:09.873Z","dependency_job_id":"1470d11b-7634-40e0-957f-25aa8fcabf93","html_url":"https://github.com/ory/polis","commit_stats":{"total_commits":1444,"total_committers":17,"mean_commits":84.94117647058823,"dds":0.5803324099722992,"last_synced_commit":"9916cfe274d5915cd2d7b09cf7bd489f2e338f3a"},"previous_names":["ory/polis"],"tags_count":205,"template":false,"template_full_name":null,"purl":"pkg:github/ory/polis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ory%2Fpolis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ory%2Fpolis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ory%2Fpolis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ory%2Fpolis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ory","download_url":"https://codeload.github.com/ory/polis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ory%2Fpolis/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261117037,"owners_count":23112168,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["enterprise-software","hacktoberfest","identity-access-management","javascript","next-auth","nextjs","nodejs","oidc","open-source","openid","openid-connect","saml","saml-authentication","saml-identity-provider","saml-service-provider","saml2","single-sign-on","sso","sso-authentication","typescript"],"created_at":"2025-06-25T17:03:02.409Z","updated_at":"2025-06-25T17:03:14.854Z","avatar_url":"https://github.com/ory.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003eOry polis - Open source Enterprise SSO and Directory Sync\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e\n    \u003ca href=\"https://www.ory.sh/chat\"\u003eChat\u003c/a\u003e |\n    \u003ca href=\"https://github.com/ory/polis/discussions\"\u003eDiscussions\u003c/a\u003e |\n    \u003ca href=\"https://www.ory.sh/l/sign-up-newsletter\"\u003eNewsletter\u003c/a\u003e\u003cbr/\u003e\u003cbr/\u003e\n    \u003ca href=\"https://www.ory.sh/docs/polis\"\u003eGuide\u003c/a\u003e |\n    \u003ca href=\"https://www.ory.sh/docs/polis/reference/api\"\u003eAPI Docs\u003c/a\u003e |\n    \u003ca href=\"https://console.ory.sh/\"\u003eSupport this project!\u003c/a\u003e\u003cbr/\u003e\u003cbr/\u003e\n    \u003ca href=\"https://www.ory.sh/jobs/\"\u003eWork in Open Source, Ory is hiring!\u003c/a\u003e\n\u003c/h4\u003e\n\n---\n\n\u003cp align=\"left\"\u003e\n    \u003ca href=\"https://github.com/ory/polis/actions/workflows/main.yml\"\u003e\u003cimg src=\"https://github.com/ory/polis/actions/workflows/main.yml/badge.svg?branch=master\u0026event=push\" alt=\"CI Tasks for Ory polis\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://codecov.io/gh/ory/polis\"\u003e\u003cimg src=\"https://codecov.io/gh/ory/polis/branch/master/graph/badge.svg?token=6t0QqOdurR\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://bestpractices.coreinfrastructure.org/projects/4979\"\u003e\u003cimg src=\"https://bestpractices.coreinfrastructure.org/projects/4979/badge\" alt=\"CII Best Practices\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/ory/polis/blob/master/CODE_OF_CONDUCT.md\" alt=\"Ory Code of Conduct\"\u003e\u003cimg src=\"https://img.shields.io/badge/ory-code%20of%20conduct-green\" /\u003e\u003c/a\u003e\n\u003c/\u003e\n\nOry Polis - formerly known as BoxyHQ Jackson - bridges or proxies a SAML login flow to OAuth 2.0 or OpenID Connect, abstracting away all the complexities of the SAML protocol. It also supports Directory Sync via the SCIM 2.0 protocol for automatic user and group provisioning/de-provisioning. Ory Polis also supports OpenID Connect providers.\n\n## Ory Polis on the Ory Network\n\nThe [Ory Network](https://www.ory.sh/cloud) is the fastest, most secure and\nworry-free way to use Ory's Services. **SAML \u0026 SCIM** on Ory Network are powered by Ory Polis.\n\nThe Ory Network provides the infrastructure for modern end-to-end security:\n\n- **Identity \u0026 credential management scaling to billions of users and devices**\n- **Registration, Login and Account management flows for passkey, biometric,\n  social, SSO and multi-factor authentication**\n- **Pre-built login, registration and account management pages and components**\n- OAuth2 and OpenID provider for single sign on, API access and\n  machine-to-machine authorization\n- Low-latency permission checks based on Google's Zanzibar model and with\n  built-in support for the Ory Permission Language\n- SAML, SCIM, and complex Enterprise SSO capabilities\n\nIt's fully managed, highly available, developer \u0026 compliance-friendly!\n\n- GDPR-friendly secure storage with data locality\n- Cloud-native APIs, compatible with Ory's Open Source servers\n- Comprehensive admin tools with the web-based Ory Console and the Ory Command\n  Line Interface (CLI)\n- Extensive documentation, straightforward examples and easy-to-follow guides\n- Fair, usage-based [pricing](https://www.ory.sh/pricing)\n\nSign up for a\n[**free developer account**](https://console.ory.sh/registration?utm_source=github\u0026utm_medium=banner\u0026utm_campaign=polis-readme)\ntoday!\n\n## Ory Polis On-premise support\n\nAre you running Ory Polis in a mission-critical, commercial environment? The Ory Enterprise License (OEL) provides enhanced features, security, and expert support directly from the Ory core maintainers.\n\nOrganizations that require advanced features, enhanced security, and enterprise-grade support for Ory's identity and access management solutions benefit from\nthe Ory Enterprise License (OEL) as a self-hosted, premium offering including:\n\n- Additional features not available in the open-source version.\n- Regular releases that address CVEs and security vulnerabilities, with strict SLAs for patching based on severity.\n- Support for advanced scaling and multi-tenancy features.\n- Premium support options, including SLAs, direct engineer access, and concierge onboarding.\n- Access to private Docker registry for a faster, more reliable access to vetted enterprise builds.\n\nA valid Ory Enterprise License and access to the Ory Enterprise Docker Registry are required to use these features. OEL is designed for mission-critical, production, and global applications where organizations need maximum control and flexibility over their identity infrastructure. Ory's offering is the only official program for qualified support from the maintainers. For more information book a meeting with the Ory team to **[discuss your needs](https://www.ory.sh/contact/)**!\n\n## Directory Sync\n\nOry Polis also supports Directory Sync based on the SCIM 2.0 protocol.\n\nDirectory sync helps organizations automate the provisioning and de-provisioning of their users. As a result, it streamlines the user lifecycle management process by saving valuable organizational hours, creating a single truth source of the user identity data, and facilitating them to keep the data secure.\n\nFor complete documentation, visit the [Ory Polis documentation](https://ory.sh/docs/polis)\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [Ory Polis on the Ory Network](#ory-polis-on-the-ory-network)\n- [Ory Polis On-premise support](#ory-polis-on-premise-support)\n- [Directory Sync](#directory-sync)\n- [What is Ory Polis?](#what-is-ory-polis)\n  - [Who is using it?](#who-is-using-it)\n- [Get Started with Ory Polis](#get-started-with-ory-polis)\n  - [Installation](#installation)\n- [Ecosystem](#ecosystem)\n  - [Ory Kratos: Identity and User Infrastructure and Management](#ory-kratos-identity-and-user-infrastructure-and-management)\n  - [Ory Hydra: OAuth2 \u0026 OpenID Connect Server](#ory-hydra-oauth2--openid-connect-server)\n  - [Ory Oathkeeper: Identity \u0026 Access Proxy](#ory-oathkeeper-identity--access-proxy)\n  - [Ory Keto: Access Control Policies as a Server](#ory-keto-access-control-policies-as-a-server)\n- [End-to-End (E2E) tests](#end-to-end-e2e-tests)\n- [Security](#security)\n  - [Disclosing vulnerabilities](#disclosing-vulnerabilities)\n- [Telemetry](#telemetry)\n- [Documentation](#documentation)\n  - [Guide](#guide)\n  - [HTTP API documentation](#http-api-documentation)\n  - [Upgrading and Changelog](#upgrading-and-changelog)\n- [Develop](#develop)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## What is Ory Polis?\n\nOry Polis - formerly known as BoxyHQ Jackson - is an Enterprise Single Sign-On (SSO) service for SAML and OIDC identity providers.\nIt implements SSO as an OAuth 2.0 flow, abstracting away the complexities of the underlying SAML or OIDC protocol.\nOry Polis offers a range of features to simplify and secure enterprise SSO:\n\n- SAML/OIDC Enterprise SSO: Implements Single Sign-On for SAML or OIDC Identity Providers, abstracting the underlying protocol\n  complexities and making it easy to connect with various enterprise identity systems.\n- OAuth 2.0 flow abstraction: Presents the SSO process as a standard OAuth 2.0 flow. Ideal for developers already familiar with\n  OAuth 2.0 and OpenID Connect.\n- Data ownership and control: As an open-source solution, Ory Polis allows you to host the service yourself, ensuring you maintain\n  full control over your data and your customers' identity information.\n- Flexible database support (BYOD): Supports a \"Bring Your Own Database\" model. This includes built-in compatibility for databases\n  such as MySQL, MariaDB, Postgres, MongoDB, Redis, and PlanetScale, and works well with databases from major hosting providers.\n- Modular design: Built with a modular architecture where business logic is separated into distinct controllers, enhancing\n  flexibility, maintainability, and the ability to adopt features incrementally.\n\nWe highly recommend reading the\n[Ory Polis introduction docs](https://www.ory.sh/docs/polis) to learn more\nabout Ory Polis's background, feature set, and differentiation from other\nproducts.\n\n### Who is using it?\n\n\u003c!--BEGIN ADOPTERS--\u003e\n\nThe Ory community stands on the shoulders of individuals, companies, and\nmaintainers. The Ory team thanks everyone involved - from submitting bug reports\nand feature requests, to contributing patches and documentation. The Ory\ncommunity counts more than 50.000 members and is growing. The Ory stack protects\n7.000.000.000+ API requests every day across thousands of companies. None of\nthis would have been possible without each and everyone of you!\n\nThe following list represents companies that have accompanied us along the way\nand that have made outstanding contributions to our ecosystem. _If you think\nthat your company deserves a spot here, reach out to\n\u003ca href=\"mailto:office@ory.sh\"\u003eoffice@ory.sh\u003c/a\u003e now_!\n\n\u003ctable\u003e\n    \u003cthead\u003e\n        \u003ctr\u003e\n            \u003cth\u003eName\u003c/th\u003e\n            \u003cth\u003eLogo\u003c/th\u003e\n            \u003cth\u003eWebsite\u003c/th\u003e\n            \u003cth\u003eCase Study\u003c/th\u003e\n        \u003c/tr\u003e\n    \u003c/thead\u003e\n    \u003ctbody\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eOpenAI\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/openai.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/openai.svg\" alt=\"OpenAI\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://openai.com/\"\u003eopenai.com\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/openai\"\u003eOpenAI Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eFandom\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/fandom.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/fandom.svg\" alt=\"Fandom\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.fandom.com/\"\u003efandom.com\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/fandom\"\u003eFandom Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eLumin\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/lumin.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/lumin.svg\" alt=\"Lumin\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.luminpdf.com/\"\u003eluminpdf.com\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/lumin\"\u003eLumin Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eSencrop\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/sencrop.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/sencrop.svg\" alt=\"Sencrop\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://sencrop.com/\"\u003esencrop.com\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/sencrop\"\u003eSencrop Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eOSINT Industries\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/osint.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/osint.svg\" alt=\"OSINT Industries\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.osint.industries/\"\u003eosint.industries\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/osint\"\u003eOSINT Industries Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eHGV\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/hgv.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/hgv.svg\" alt=\"HGV\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.hgv.it/\"\u003ehgv.it\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/hgv\"\u003eHGV Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eMaxroll\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/maxroll.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/maxroll.svg\" alt=\"Maxroll\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://maxroll.gg/\"\u003emaxroll.gg\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/maxroll\"\u003eMaxroll Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eZezam\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/zezam.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/zezam.svg\" alt=\"Zezam\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.zezam.io/\"\u003ezezam.io\u003c/a\u003e\u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.ory.sh/case-studies/zezam\"\u003eZezam Case Study\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eT.RowePrice\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/troweprice.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/troweprice.svg\" alt=\"T.RowePrice\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.troweprice.com/\"\u003etroweprice.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eMistral\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/mistral.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/mistral.svg\" alt=\"Mistral\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.mistral.ai/\"\u003emistral.ai\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eAxel Springer\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/axelspringer.svg\" /\u003e\n                    \u003cimg height=\"22px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/axelspringer.svg\" alt=\"Axel Springer\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.axelspringer.com/\"\u003eaxelspringer.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eHemnet\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/hemnet.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/hemnet.svg\" alt=\"Hemnet\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.hemnet.se/\"\u003ehemnet.se\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eCisco\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/cisco.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/cisco.svg\" alt=\"Cisco\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.cisco.com/\"\u003ecisco.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003ePresidencia de la República Dominicana\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/republica-dominicana.svg\" /\u003e\n                    \u003cimg height=\"42px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/republica-dominicana.svg\" alt=\"Presidencia de la República Dominicana\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.presidencia.gob.do/\"\u003epresidencia.gob.do\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eMoonpig\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/moonpig.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/moonpig.svg\" alt=\"Moonpig\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.moonpig.com/\"\u003emoonpig.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eBooster\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/booster.svg\" /\u003e\n                    \u003cimg height=\"18px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/booster.svg\" alt=\"Booster\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.choosebooster.com/\"\u003echoosebooster.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eZaptec\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/zaptec.svg\" /\u003e\n                    \u003cimg height=\"24px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/zaptec.svg\" alt=\"Zaptec\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.zaptec.com/\"\u003ezaptec.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eKlarna\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/klarna.svg\" /\u003e\n                    \u003cimg height=\"24px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/klarna.svg\" alt=\"Klarna\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.klarna.com/\"\u003eklarna.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eRaspberry PI Foundation\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/raspi.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/raspi.svg\" alt=\"Raspberry PI Foundation\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.raspberrypi.org/\"\u003eraspberrypi.org\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eTulip\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/tulip.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/tulip.svg\" alt=\"Tulip Retail\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://tulip.com/\"\u003etulip.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eHootsuite\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/hootsuite.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/hootsuite.svg\" alt=\"Hootsuite\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://hootsuite.com/\"\u003ehootsuite.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eSegment\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/segment.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/segment.svg\" alt=\"Segment\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://segment.com/\"\u003esegment.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eArduino\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/arduino.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/arduino.svg\" alt=\"Arduino\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.arduino.cc/\"\u003earduino.cc\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eSainsbury's\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/sainsburys.svg\" /\u003e\n                    \u003cimg height=\"24px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/sainsburys.svg\" alt=\"Sainsbury's\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.sainsburys.co.uk/\"\u003esainsburys.co.uk\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eContraste\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/contraste.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/contraste.svg\" alt=\"Contraste\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://www.contraste.com/en\"\u003econtraste.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003einMusic\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/inmusic.svg\" /\u003e\n                    \u003cimg height=\"24px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/inmusic.svg\" alt=\"InMusic\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://inmusicbrands.com/\"\u003einmusicbrands.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003ctr\u003e\n            \u003ctd\u003eBuhta\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/buhta.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/buhta.svg\" alt=\"Buhta\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://buhta.com/\"\u003ebuhta.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n        \u003c/tr\u003e\n            \u003ctr\u003e\n            \u003ctd\u003eAmplitude\u003c/td\u003e\n            \u003ctd align=\"center\"\u003e\n                \u003cpicture\u003e\n                    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/amplitude.svg\" /\u003e\n                    \u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/amplitude.svg\" alt=\"amplitude.com\"\u003e\n                \u003c/picture\u003e\n            \u003c/td\u003e\n            \u003ctd\u003e\u003ca href=\"https://amplitude.com/\"\u003eamplitude.com\u003c/a\u003e\u003c/td\u003e\n        \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://tier4.jp/en/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/tieriv.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/tieriv.svg\" alt=\"TIER IV\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://kyma-project.io\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/kyma.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/kyma.svg\" alt=\"Kyma Project\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://serlo.org/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/serlo.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/serlo.svg\" alt=\"Serlo\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://padis.io/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/padis.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/padis.svg\" alt=\"Padis\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://cloudbear.eu/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/cloudbear.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/cloudbear.svg\" alt=\"Cloudbear\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://securityonionsolutions.com/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/securityonion.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/securityonion.svg\" alt=\"Security Onion Solutions\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://factlylabs.com/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/factly.svg\" /\u003e\u003cimg height=\"24px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/factly.svg\" alt=\"Factly\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://cashdeck.com.au/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/allmyfunds.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/allmyfunds.svg\" alt=\"All My Funds\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://nortal.com/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/nortal.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/nortal.svg\" alt=\"Nortal\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.ordermygear.com/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/ordermygear.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/ordermygear.svg\" alt=\"OrderMyGear\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://r2devops.io/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/r2devops.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/r2devops.svg\" alt=\"R2Devops\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.paralus.io/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/paralus.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/paralus.svg\" alt=\"Paralus\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://dyrector.io/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/dyrector_io.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/dyrector_io.svg\" alt=\"dyrector.io\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://pinniped.dev/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/pinniped.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/pinniped.svg\" alt=\"pinniped.dev\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003ca href=\"https://pvotal.tech/\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/light/pvotal.svg\" /\u003e\u003cimg height=\"32px\" src=\"https://raw.githubusercontent.com/ory/meta/master/static/adopters/dark/pvotal.svg\" alt=\"pvotal.tech\"\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003c/tbody\u003e\n\u003c/table\u003e\n\nMany thanks to all individual contributors\n\n\u003ca href=\"https://opencollective.com/ory\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/ory/contributors.svg?width=890\u0026limit=714\u0026button=false\" /\u003e\u003c/a\u003e\n\n\u003c!--END ADOPTERS--\u003e\n\n## Get Started with Ory Polis\n\nThere are two ways to integrate Ory Polis into an application. Depending on your use case, you can choose either of them. \u003cbr\u003e\n\n1. [As a separate service](https://ory.sh/docs/polis/guides/service) ([Next.js](https://nextjs.org/) application) This includes an admin portal out of the box for managing SSO and Directory Sync connections.\n2. [NPM library](https://ory.sh/docs/polis/guides/npm-library) as an embedded library in your application.\n\n### Installation\n\nHead over to the\n[Ory Developer Documentation](https://ory.sh/docs/polis/install) to learn\nhow to install Ory Polis.\n\n## Ecosystem\n\n\u003c!--BEGIN ECOSYSTEM--\u003e\n\nWe build Ory on several guiding principles when it comes to our architecture\ndesign:\n\n- Minimal dependencies\n- Runs everywhere\n- Scales without effort\n- Minimize room for human and network errors\n\nOry's architecture is designed to run best on a Container Orchestration system\nsuch as Kubernetes, CloudFoundry, OpenShift, and similar projects. Binaries are\nsmall (5-15MB) and available for all popular processor types (ARM, AMD64, i386)\nand operating systems (FreeBSD, Linux, macOS, Windows) without system\ndependencies (Java, Node, Ruby, libxml, ...).\n\n### Ory Kratos: Identity and User Infrastructure and Management\n\n[Ory Kratos](https://github.com/ory/kratos) is an API-first Identity and User\nManagement system that is built according to\n[cloud architecture best practices](https://www.ory.sh/docs/next/ecosystem/software-architecture-philosophy).\nIt implements core use cases that almost every software application needs to\ndeal with: Self-service Login and Registration, Multi-Factor Authentication\n(MFA/2FA), Account Recovery and Verification, Profile, and Account Management.\n\n### Ory Hydra: OAuth2 \u0026 OpenID Connect Server\n\n[Ory Hydra](https://github.com/ory/hydra) is an OpenID Certified™ OAuth2 and\nOpenID Connect Provider which easily connects to any existing identity system by\nwriting a tiny \"bridge\" application. It gives absolute control over the user\ninterface and user experience flows.\n\n### Ory Oathkeeper: Identity \u0026 Access Proxy\n\n[Ory Oathkeeper](https://github.com/ory/oathkeeper) is a BeyondCorp/Zero Trust\nIdentity \u0026 Access Proxy (IAP) with configurable authentication, authorization,\nand request mutation rules for your web services: Authenticate JWT, Access\nTokens, API Keys, mTLS; Check if the contained subject is allowed to perform the\nrequest; Encode resulting content into custom headers (`X-User-ID`), JSON Web\nTokens and more!\n\n### Ory Keto: Access Control Policies as a Server\n\n[Ory Keto](https://github.com/ory/keto) is a policy decision point. It uses a\nset of access control policies, similar to AWS IAM Policies, in order to\ndetermine whether a subject (user, application, service, car, ...) is authorized\nto perform a certain action on a resource.\n\n\u003c!--END ECOSYSTEM--\u003e\n\n## End-to-End (E2E) tests\n\nCreate a `.env.test.local` file and populate the values. To execute the tests run:\n\n```zsh\nnpm run test:e2e\n```\n\n## Security\n\n### Disclosing vulnerabilities\n\nIf you think you found a security vulnerability, please refrain from posting it\npublicly on the forums, the chat, or GitHub. You can find all info for\nresponsible disclosure in our\n[security.txt](https://www.ory.sh/.well-known/security.txt).\n\n## Telemetry\n\nOry's services collect summarized, anonymized data that can optionally be turned\noff. Click [here](https://www.ory.sh/docs/ecosystem/sqa) to learn more.\n\n## Documentation\n\n### Guide\n\nThe Guide is available [here](https://www.ory.sh/docs/polis).\n\n### HTTP API documentation\n\nThe HTTP API is documented [here](https://www.ory.sh/docs/polis/reference/api).\n\n### Upgrading and Changelog\n\nNew releases might introduce breaking changes. To help you identify and\nincorporate those changes, we document these changes in the\n[Releases](https://github.com/ory/polis/releases). For upgrading, please visit the\n[upgrade guide](https://ory.sh/docs/polis/upgrade).\n\n## Develop\n\nWe encourage all contributions and encourage you to read our\n[contribution guidelines](./CONTRIBUTING.md)\n","funding_links":["https://opencollective.com/ory"],"categories":["TypeScript","OpenID Providers (OP)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fory%2Fpolis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fory%2Fpolis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fory%2Fpolis/lists"}