出品者:Esme R.

Casdoor is an open-source IAM and MCP gateway with a web UI, supporting OAuth 2.0, OIDC, SAML, LDAP, WebAuthn, MFA, and AI agent protocols for secure, scalable authentication.
Casdoor is a self-hosted identity and access management server supporting OAuth 2.0, OIDC, SAML, CAS, LDAP, SCIM, WebAuthn, TOTP, MFA, and Face ID. It ships a Go backend with a React frontend and acts as a centralized auth provider for downstream applications. The typical buyer is a backend or full-stack team that needs a production-grade auth server they can run on-premises and integrate with via standard protocols.
.github/ - CI/CD workflows for build and sync automation.vscode/ - editor launch configuration for Go debuggingauthz/ - Casbin-based authorization policy enginecaptcha/ - captcha provider adapters (Aliyun, reCAPTCHA, hCaptcha, Geetest, Turnstile)certificate/ - TLS/ACME certificate management and ECC key utilitiesconf/ - application configuration loading, quota config, WAF configcontrollers/ - HTTP handler layer for all API endpoints (accounts, auth, applications, adapters, agents)cred/ - credential/password hashing strategiesdeployment/ - deployment manifests and helpersemail/ - email sending provider integrationsfaceId/ - Face ID/biometric identity verificationform/ - form parsing utilitiesi18n/ - internationalization resource loadingidp/ - third-party identity provider adapters (OAuth, OIDC, SAML)idv/ - identity verification workflowsip/ - IP address resolution and geolocationldap/ - LDAP server and client integrationlog/ - structured logging utilitiesmcp/ - MCP (Model Context Protocol) gateway handlersmcpself/ - self-hosted MCP endpoint logicnotification/ - notification provider integrations (SMS, push)object/ - core domain models and ORM layer (users, orgs, apps, tokens)pp/ - privacy policy managementproxy/ - reverse proxy helpersradius/ - RADIUS protocol serverrouters/ - HTTP router wiring and middleware隔離されたサンドボックスを起動しサーバー側で実行 — ローカル設定不要。
このバージョンの Tetrees AI Review
This React web app completed archive review with strong static results. Structure, dependency manifests, documentation, functional source, and common risk patterns were checked by the Tetrees verification pipeline; runtime phases are stated separately.
Deterministic AVCP artifact review
パイプライン avcp-2026-08-04.1 · SHA-256 4a8a2fe3fe81b83d…
This version-scoped review deterministically inspects the submitted archive for structure, dependencies, documentation, functional source, and common malicious or high-risk signals. Build and test phases are reported as passed only after an isolated sandbox audition. It is not a guarantee of perfect security.
レビュー日 2026年8月4日
この製品をお使いのAI IDE・Webビルダー・クラウドIDEに直接取り込みます。
Tetreesを対応AI IDEに接続し、所有製品の一覧取得と検証済みZIPの取得を、販売者のアップロード権限を公開せずに行えます。
まだレビューがありません。
Sign in to join the discussion
Loading discussion…
rule/ - rule evaluation enginescan/ - QR code scan-to-login logicscim/ - SCIM 2.0 provisioning endpointsservice/ - internal service helpersstorage/ - file/object storage provider adaptersswagger/ - auto-generated Swagger/OpenAPI documentationsync/ - legacy user sync jobssync_v2/ - v2 user sync frameworkutil/ - shared utility functions (strings, time, HTTP, crypto)web/ - React + Ant Design frontend applicationxlsx/ - Excel import/export helpersmain.go - application entry pointdocker-compose.yml - local development stack definitionk8s.yaml - Kubernetes deployment manifestsbuild.sh - production build script for frontend + backendThis is a Go + React project. The frontend lives in source/web/.
# Frontend (run inside source/web/)
npm install
For the Go backend, use the Go toolchain directly:
# Install Go 1.20+ then:
go mod download
Native / additional build steps:
npm run build inside source/web/ to produce the static frontend assets before embedding them into the Go binary.docker-compose up in source/ starts Casdoor + a MySQL instance with no further manual steps.source/build.sh orchestrates the full frontend + backend build in CI.source/ directory into your project root (e.g. ./casdoor-src/).source/conf/app.conf to your working directory and edit the database DSN, HTTP port, and runmode:
httpport = 8000
runmode = dev
driverName = mysql
dataSourceName = root:password@tcp(localhost:3306)/casdoor
dbName = casdoor
app.conf):
export CASDOOR_DB_DRIVER=mysql
export CASDOOR_DB_DSN="root:password@tcp(127.0.0.1:3306)/casdoor"
cd casdoor-src
go run main.go
cd casdoor-src/web
npm install && npm run build
casdoor-js-sdk npm package as the HTTP client; the source here is the server, not a client library.The symbols below are from the actual file excerpts provided.
// web/src/App.js (default export, used in web/src/index.js)
import App from "./App";
The App component is the root of the React SPA. It is mounted in index.js via createRoot inside a BrowserRouter. Reference this when you need to understand the top-level routing structure or when embedding Casdoor's frontend into a micro-frontend shell.
// Mirrors web/src/index.js exactly
import React from "react";
import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import App from "./App";
const container = document.getElementById("root");
const app = createRoot(container);
app.render(
<BrowserRouter>
<App />
</BrowserRouter>
);
This is the canonical bootstrap pattern from index.js. Use it when re-hosting the Casdoor frontend inside your own shell app or when upgrading the project from ReactDOM.render to the React 18 createRoot API.
// web/src/backend/FetchFilter.js (imported as side-effect in index.js)
import "./backend/FetchFilter";
FetchFilter is imported purely for its side effects: it patches the global fetch to add CSRF tokens and session headers to every outbound API request. Import it once, at application entry, before any API calls are made. Do not import it more than once; duplicate imports produce duplicate interceptor registrations.
Start a fully-wired Casdoor instance (MySQL + server) with a single command. Useful for local development against a real auth endpoint.
# From source/
docker-compose up -d
# Casdoor is now available at http://localhost:8000
# Default admin: admin / 123
// After the server is up, verify it responds:
const response = await fetch("http://localhost:8000/api/health");
const data = await response.json();
console.log(data); // { "status": "ok" }
Reuse the Casdoor React entry point inside a host application that already controls its own router.
// host-app/src/AuthShell.tsx
import React from "react";
import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
// Point the alias to your copy of source/web/src
import App from "../../casdoor-src/web/src/App";
// Must be imported once to register fetch interceptors
import "../../casdoor-src/web/src/backend/FetchFilter";
export function mountCasdoorUI(containerId: string): void {
const el = document.getElementById(containerId);
if (!el) throw new Error(`Container #${containerId} not found`);
const root = createRoot(el);
root.render(
<BrowserRouter>
<App />
</BrowserRouter>
);
}
Authenticate a machine-to-machine request using Casdoor's OAuth2 client credentials flow.
// services/auth.ts
async function getClientCredentialsToken(
casdoorBaseUrl: string,
clientId: string,
clientSecret: string,
scope: string
): Promise<string> {
const params = new URLSearchParams({
grant_type: "client_credentials",
client_id: clientId,
client_secret: clientSecret,
scope,
});
const res = await fetch(`${casdoorBaseUrl}/api/login/oauth/access_token`, {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: params.toString(),
});
if (!res.ok) {
throw new Error(`Token request failed: ${res.status}`);
}
const json = await res.json();
return json.access_token as string;
}
// Usage
const token = await getClientCredentialsToken(
"http://localhost:8000",
"your-client-id",
"your-client-secret",
"read"
);
console.log("access_token:", token);
.github/workflows/ - GitHub Actions pipelines for building binaries and syncing translations via Crowdin..vscode/launch.json - VSCode debug configuration for attaching the Go debugger to a running Casdoor process.authz/authz.go - Initializes the Casbin enforcer; defines the enforce function used in middleware to check permissions.captcha/ - One file per captcha vendor; each implements the Provider interface defined in captcha/provider.go.certificate/ - ACME/Let's Encrypt account management, DNS challenge helpers, and ECC key pair generation.conf/conf.go - Reads app.conf via beego's config system and exposes typed accessors for all settings.controllers/base.go - Base controller with helper methods for JSON response writing and session extraction, embedded by all other controllers.controllers/auth.go - Handles /api/login, token issuance, and OAuth2/OIDC authorize endpoint logic.object/ - The persistence layer; contains ORM structs and CRUD functions for every domain entity (User, Org, App, Token, etc.).routers/ - Registers all HTTP routes against beego's router, applying auth middleware and CORS headers.web/src/index.js - React application entry point; mounts <App> into #root using React 18 createRoot.main.go - Parses flags, initializes database connections, starts the HTTP server, and registers routes.docker-compose.yml - Defines casdoor and db services; the fastest path to a running environment.k8s.yaml - Production-ready Kubernetes Deployment + Service + ConfigMap manifests.CREATE DATABASE casdoor; before first run.app.conf not found at runtime: The server looks for conf/app.conf relative to the working directory, not the binary location. Fix: always run go run main.go from source/, or set --conf flag to an absolute path.web/build/ at compile time; if the directory is absent the UI returns 404. Fix: run cd web && npm run build before go build.createRoot double-render in StrictMode: Casdoor's index.js does not wrap in <StrictMode>, so effects fire once. Fix: do not add StrictMode without auditing all useEffect hooks for idempotency.FetchFilter imported multiple times: Bundler tree-shaking does not deduplicate side-effect-only imports when referenced from multiple entry chunks. Fix: import FetchFilter only in the top-level index.js/entry file.I have the Casdoor IAM server source code in the `source/` directory of my project.
I also have a USAGE.md file that documents the real exports, file layout, and integration patterns.
My project is a [describe your stack, e.g. "Node.js + Express API with a React frontend"].
Please read USAGE.md and the relevant files under source/ and then:
1. Set up the Casdoor backend (Go) to run alongside my project using docker-compose.
2. Configure my React frontend to redirect unauthenticated users to Casdoor's login page using the OAuth2 authorization code flow.
3. Add a middleware to my Express API that validates Casdoor-issued JWTs using the JWKS endpoint at /api/get-jwks.
4. Show me how to call Casdoor's /api/get-users endpoint with an admin token to list all users.
5. Point out any environment variables I need to set and where they map to in source/conf/app.conf.
Work step-by-step and use only the real API surface documented in USAGE.md.
Do not invent endpoints or configuration keys that are not shown there.
Casdoor is released under the Apache License 2.0. See source/LICENSE for the full text.
Upstream repository: https://github.com/casdoor/casdoor Official documentation: https://casdoor.ai/docs/overview
This product’s unique contribution is clean room implementation of valuable code block into AVCP compatible standard.
完全なインストールガイドと統合プロンプトは購入後に解放されます。
Automation, Utilities & Developer Tools
無料