{"adoption": {"forks": 332, "observed_at": "2026-09-01T02:13:55.975460+00:00", "stars": 1093}, "canonical_url": "https://ross.abutalabs.com/products/mod_auth_openidc", "card": {"archived": false, "artifact_type": "plugin", "description": "OpenID Certified™ OpenID Connect and FAPI 2 Relying Party module for Apache HTTPd", "domain": ["security", "web-development", "backend", "apis"], "enriched": true, "function": ["auth", "authorization", "middleware"], "health_score": 100, "homepage": "https://www.openidc.com", "language": "C", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["OpenIDC/mod_auth_openidc"], "name": "OpenIDC/mod_auth_openidc", "platform": ["windows", "cpp"], "pushed_at": "2026-08-30T09:52:32+00:00", "repo": "OpenIDC/mod_auth_openidc", "stars": 1093, "tags": ["apache-httpd", "openid-connect", "oidc", "sso", "relying-party", "fapi", "c", "reverse-proxy", "authentication-module", "linux", "macos", "web-server"], "topics": ["apache-httpd", "openid-connect", "openidconnect-client", "openidc", "c", "authentication", "oidc", "sso", "access-control"], "urls": [], "use_cases": ["add OpenID Connect SSO login to apps behind Apache", "protect legacy applications with OIDC via reverse proxy without code changes", "enforce claim-based authorization rules with Apache Require directives", "pass id_token and userinfo claims to backend apps via headers", "migrate legacy authentication systems to standards-based OIDC", "secure SPAs and APIs fronted by Apache with single sign-on"], "what_it_is": "An OpenID Certified™ Apache HTTPd module implementing OpenID Connect 1.x and FAPI 2.x Relying Party functionality. It lets an Apache web server relay user authentication to an OpenID Connect Provider, establish sessions, and pass identity claims to protected applications or reverse-proxied backends.", "when_to_avoid": ["your stack uses nginx, Caddy, or another non-Apache web server", "you need a full identity provider rather than a relying party", "you prefer application-level OIDC libraries instead of web-server modules"], "when_to_choose": ["you run Apache HTTPd and need OIDC/OAuth2 authentication in front of applications", "you want OpenID Certified FAPI 2 compliance for high-security scenarios like banking", "you need to add SSO to existing services without modifying them", "you want fine-grained authorization based on OIDC claims"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mod_auth_openidc", "repo": "OpenIDC/mod_auth_openidc", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-01T02:13:55.975460+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:47:39.984497+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "31098e9db9c0ea4902f8924f9c262e2bcb92409afb367c9483cb5827964dbab1", "fetched_at": "2026-09-01T02:13:55.975460+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenIDC/mod_auth_openidc"}, {"content_hash": "6e59bda9190f033274a63ae497b6a8dfaaf4faeb51e620607fac7c24de354cfc", "fetched_at": "2026-08-29T12:50:36.187951+00:00", "kind": "homepage", "missing": false, "url": "https://www.openidc.com"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4542, "days_push": 3, "days_rel": 23, "gap_med": 29, "n_releases_24m": 22}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 5, "stale_scrape": false}}