mrkeyoor.com_
Sat 17 Oct 13:35 UTC
Self-Hostedevaluationupdated 26 Aug 2026

casdoor review

Casdoor is a self-hosted identity server with a web console for managing users, organizations, applications, sign-in methods, and access rules. It gives teams one place to provide OAuth, OpenID Connect, SAML, LDAP, SCIM, passkeys, MFA, and MCP gateway access instead of building those systems into every application.

+45stars / 7d
Verdict

Our Casdoor build succeeded in 158 seconds, but its Go test run passed 6 of 14 tests and failed 8, including an XLSX reader panic. Its protocol range and visual console still justify a trial for teams that want to own a shared identity service. Do not make it a high-risk identity perimeter until your staged release passes disablement, token revocation, logout, and every sign-in method you plan to expose.

We ran it

Lab card: what happened when we ran casdoorScreenshot of casdoor (casdoor.ai)
Install✓ · 194s807 packages
Build✓ · 158s
Tests✗ · 47s6 passed · 8 failed of 14 (go test)
Repo881 files~158,290 lines of source · 25.7 MB · 3 CI workflows · Dockerfile

Answers from our run

Does casdoor build from source?

Dependencies installed in 194 seconds (807 packages), and the build succeeded in 158 seconds. We cloned commit e6b2338 into a clean Debian container with 3 CPUs and no project-specific setup.

Do casdoor's tests pass?

No. The project's own test command finished in 47 seconds and reported 6 passed, 8 failed (go test).

Who should not use casdoor?

Security teams that expect hiding a password method in the console to disable it at the API: issue 5761 says the backend ignores the rule and can still accept password login.

What are the alternatives to casdoor?

Keycloak, authentik, Logto. Our Casdoor build succeeded in 158 seconds, but its Go test run passed 6 of 14 tests and failed 8, including an XLSX reader panic.

Setup3/5Quick demo image; 194-second source install and 8 failed tests
Docs4/5Clear trial, source, Compose, Helm, SDK, and security guidance
Community4/514,276 stars, an August 2026 release, and active issue reports
Maturity3/5Broad IAM surface, but our run failed 8 of 14 tests

Discussed on

  1. hnCasdoor: Open-source IAM and SaaS management solution4 points

Who it’s for

Teams that want to own their identity data and need a visual admin console rather than configuration files alone.
Organizations connecting several internal or customer-facing applications through OAuth, OpenID Connect, SAML, CAS, LDAP, or SCIM.
Go and React teams willing to operate an identity service, database, certificates, providers, and upgrades.
AI platform teams that want MCP access controls beside their existing users, organizations, roles, and tokens.

Who it’s NOT for

Security teams that expect hiding a password method in the console to disable it at the API: issue 5761 says the backend ignores the rule and can still accept password login.
Operators who treat deleting a browser session as token revocation: issue 5737 says OAuth access and refresh tokens minted in that session remain valid until expiry.
Deployments that require standards-correct OpenID back-channel logout with brokers such as Keycloak: issue 5585 says the session identifier is placed in jti instead of sid.
Organizations needing a strict identity-provider-only portal: issue 5631 says authenticated non-admin users can still reach account and application pages.
Teams unwilling to stage upgrades for a security-critical service: v3.159.0 shipped on August 25 while 110 issues and pull requests remained open.

Setup reality

Our sandbox installed 807 Go packages in 194 seconds. The build succeeded in 158 seconds. Tests ran for 47 seconds and exited 1: 6 passed and 8 failed of 14. The log tail shows TestReadSheet panicking inside xlsx.ReadXlsxFile.

The SQLite all-in-one container is a quick evaluation path, with sample credentials and data that disappear with the container. Source work needs Go 1.25 or newer, Node 20 LTS, Yarn 1.x, a frontend build, and a configured database.

Production adds TLS, durable database backups, new secrets, mail or SMS, external providers, policy design, monitoring, and token-revocation tests. Multiple replicas also need Redis. The Helm chart packages these pieces but does not remove the operating responsibility.

One server handles at least eight identity protocols

Casdoor sits between applications and the people who use them. It issues tokens, runs sign-in screens, stores users and organizations, connects external identity providers, and gives administrators a web console. That is a much larger responsibility than adding a social-login library to one application. The appeal is that OAuth 2.0, OpenID Connect, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, and social providers can live behind one service instead of being rebuilt for each product.

The project also connects authorization to Casbin, so teams can express ACL, RBAC, and ABAC policies alongside identity. Multi-organization support, audit logs, theming, REST APIs, Swagger, webhooks, and SDKs for several common languages make Casdoor credible as shared infrastructure. Its Apache 2.0 license is friendly to commercial deployment. The newer MCP gateway and A2A features extend the same identity layer toward agents, but they should be viewed as additions to a broad IAM server, not the sole reason to adopt it.

The web console manages users, applications, providers, and policy

The strongest part of Casdoor is the breadth of its control plane. Administrators can manage users, applications, providers, roles, permissions, tokens, and organizations through a modern interface. Teams replacing scattered OAuth settings and hand-built user tables gain a common place to see and change identity configuration. The read-only and frequently reset writable demos make that interface easy to inspect before installing anything.

Integration choices are similarly wide. An application can use a standard protocol or one of Casdoor's SDKs, while existing directories and enterprise identity systems can connect through LDAP, SAML, SCIM, Google Workspace, or Azure AD. Passkeys and TOTP cover modern and conventional second-factor needs. This range matters when one company has new web products, older internal services, and external partners that cannot all agree on one protocol.

The MCP gateway is relevant for teams already standardizing agent access around the same accounts and tokens. Casdoor includes MCP code and advertises gateway support, so an organization can evaluate whether agent tools belong under its existing identity rules. Still, the README gives far more detail about IAM than MCP operations. Buyers primarily seeking a mature standalone MCP proxy should verify discovery, policy granularity, observability, and client compatibility in their own environment rather than buying the AI-first label.

What happened when we ran it

Our sandbox installed 807 Go packages in 194 seconds. The build succeeded in 158 seconds. The checkout at commit e6b2338 held 881 files, about 158,290 source lines, and 25.7 MB before installation. Those results show that a fresh Go environment can compile the server, though the source build takes more than the 30-second container trial advertised for evaluation.

The test command ran for 47 seconds and exited 1. Go reported 6 passed and 8 failed out of 14. The final failure was in the XLSX package: TestReadSheet panicked inside xlsx.ReadXlsxFile, with the stack pointing to xlsx.go line 22. The supplied tail does not reveal the value or external file that led to the panic, so assigning a cause would be guesswork.

Our run used an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Go 1.24, and no secrets. The Go tool downloaded a 1.25.8 toolchain during the run, as shown in the stack paths. We did not start a database, complete a browser login, or test OAuth, SAML, LDAP, SCIM, MFA, WebAuthn, or MCP behavior.

The one-container trial is separate from production IAM

The all-in-one image starts Casdoor on port 8000 with SQLite and the public built-in, admin, 123 demo credentials. Its data lives inside the container and is not intended for production. Docker Compose builds from source beside MySQL, while the Helm route expects an external database and ingress work for a real deployment.

Production setup includes a public origin, HTTPS, changed defaults, protected database credentials, backups, email or SMS, external identity providers, and application-specific role design. Multiple replicas need Redis. Operators also need staged upgrades and failure exercises because one Casdoor incident can block every connected application.

Current session and sign-in reports need direct tests

Issue 5761 says a sign-in method marked Hide password affects the frontend while backend checks still see the method and accept API login. It also reports an empty method list can restore Face ID for registered users. Issue 5737 says deleting a Beego browser session does not revoke OAuth tokens created in that session, so refresh and bearer access can continue until token expiry.

Back-channel logout has a separate interoperability report. Issue 5585 says Casdoor puts the session identifier in the jti claim rather than the OIDC sid claim, preventing a relying party such as Keycloak from matching the session. These are open reports rather than failure rates from our sandbox. They are specific enough to turn into acceptance tests before production.

The August 2026 release pace requires version pinning

Casdoor is plainly alive. The repository had 14,190 stars, was pushed on August 13, 2026, and released v3.153.0 that day. Recent releases arrived several times within a few days, covering LDAP searches, policy loading, cross-organization restrictions, validation, and provider fixes. GitHub showed 108 open issues and pull requests, split by search into 102 issues and six pull requests on August 14. That is an active queue around an actively changing product, not evidence of neglect.

The pace is reassuring for support and concerning for change control. Identity teams should pin a version, read every relevant release note, test migrations and login flows in staging, and avoid automatic upgrades. Casdoor is a serious contender for teams that value ownership, protocol range, and a Go-based server. It is not the conservative choice for buyers who want the oldest ecosystem or who cannot spend time validating security-sensitive edge cases. Run the trial with real protocols and failure scenarios, not just the happy-path admin demo.

Alternatives

ProjectWhat it isPick it when
Keycloak gh↗A long-established open-source identity and access management server for applications and services.pick this instead when protocol interoperability, enterprise adoption, and a larger established ecosystem matter more than Casdoor's Go stack and MCP direction.
authentik gh↗A self-hosted identity provider designed to act as authentication glue across existing services.pick this instead when protecting a mixed collection of self-hosted applications is the main job and its proxy-oriented integrations fit your stack.
LogtoOpen-source authentication and authorization infrastructure aimed at SaaS and AI applications.pick this instead when customer identity for a SaaS product is the center of the project and you prefer Logto's application-focused developer workflow.

What people are saying

  1. [github-trending] casdoor/casdoor

Sources

  1. Casdoor repository and README
  2. Casdoor documentation
  3. Casdoor v3.159.0 release
  4. Hidden sign-in method report
  5. Session deletion and OAuth token report
  6. Back-channel logout sid report
  7. Identity-provider-only mode request

More self-hosted reviews

playport · edge-smart-doh · Comma · ProsperoEden · zulu · node_exporter · the whole board →