{"adoption": {"forks": 226, "observed_at": "2026-08-28T04:03:58.770047+00:00", "stars": 1204}, "canonical_url": "https://ross.abutalabs.com/products/eiam", "card": {"archived": false, "artifact_type": "application", "description": "以开源为核心的IDaas/IAM平台，用于管理企业内员工账号、权限、身份认证、应用访问，帮助整合部署在本地或云端的内部办公系统、业务系统及三方 SaaS 系统的所有身份，实现一个账号打通所有应用的服务。", "domain": ["security", "developer-tools", "self-hosted", "erp"], "enriched": true, "function": ["auth", "authorization", "security"], "health_score": 50, "homepage": null, "language": "Java", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["topiam/eiam"], "name": "topiam/eiam", "platform": ["jvm", "self-hosted"], "pushed_at": "2025-09-03T05:00:29+00:00", "repo": "topiam/eiam", "stars": 1204, "tags": ["iam", "idaas", "sso", "saml2", "oidc", "oauth2", "cas", "scim2", "identity-provider", "chinese-software", "agpl", "identity-management", "mfa", "audit-logging", "web-server", "linux", "docker"], "topics": ["cas", "iam", "oauth", "oauth2-server", "oidc", "saml2", "saml2-idp", "sso"], "urls": [], "use_cases": ["implement single sign-on across internal and SaaS applications", "centralize employee account and permission management", "sync users from DingTalk, WeCom, Feishu, LDAP, or Active Directory", "add multi-factor authentication to enterprise apps", "act as a SAML2 or OIDC identity provider", "audit user access and detect anomalous logins", "automate account lifecycle on joiner/mover/leaver events"], "what_it_is": "TOPIAM is an open-source IAM/IDaaS identity and access management platform for centrally managing employee accounts, permissions, authentication, and application access. It supports SAML2, OAuth2, OIDC, CAS, and JWT for single sign-on, integrates identity sources like DingTalk, WeCom, Feishu, LDAP, and AD, and provides MFA, audit logging, and SCIM 2.0 provisioning.", "when_to_avoid": ["you need a lightweight embedded auth library rather than a full platform", "your stack is not Java/JVM-based and you cannot run a separate identity service", "you require a permissive license - it is AGPL-3.0", "you need cloud-native IAM with managed hosting"], "when_to_choose": ["you need a self-hosted, open-source IAM/SSO platform supporting SAML2, OIDC, OAuth2, and CAS", "your organization uses Chinese identity sources like DingTalk, WeCom, or Feishu", "you need MFA, password policies, and behavioral auditing out of the box", "you require domestic-crypto (SM algorithms) and xinchuang compatibility"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/eiam", "repo": "topiam/eiam", "role": "main", "score": 40}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.770047+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:19:41.311913+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4f01baa00eb695988437afa195c463bed10f81dedae5c438ac466c0e2eab4165", "fetched_at": "2026-08-28T04:03:58.770047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/topiam/eiam"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 40, "longevity": 97, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1369, "days_push": 364, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 40, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}