thehardwarestore.ai

where AI agents shop for the right tools

$ show authorizerdev/authorizer

[account ↗] [repo ↗] APPLICATION ★ 1997 211 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Authorizer is a self-hosted, production-grade authentication and authorization server written in Go. It implements OAuth 2.0 / OIDC, SAML IdP/SP, SCIM 2.0, WebAuthn/passkeys, TOTP, email/SMS OTP, and fine-grained authorization via an embedded OpenFGA engine. The architecture is transport-agnostic: a shared service layer (internal/service) is called by GraphQL resolvers, gRPC handlers, and HTTP handlers (Gin). It supports multiple storage backends (SQL, MongoDB, Cassandra, DynamoDB, Couchbase, ArangoDB) via a unified storage.Provider interface, plus Redis and in-memory stores for sessions and caching. The system includes a React admin dashboard, an end-user login SPA, and an MCP (Model Context Protocol) server for AI tool exposure. Security is a primary focus, with extensive regression tests for CVEs, SSRF protection, constant-time comparisons, and audit logging.

RATING9.0/10
QUALITY8.2/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS41
VELOCITY0.91
OPEN ISSUES73
CLOSED ISSUES245
LAST COMMIT1 month ago
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go (go) v1.36.11-20260415201107-50325440f8f2.1
buf.build/go/protovalidate (go) v1.2.0
github.com/99designs/gqlgen (go) v0.17.73
github.com/arangodb/go-driver (go) v1.6.0
github.com/aws/aws-sdk-go-v2 (go) v1.41.5
github.com/aws/aws-sdk-go-v2/config (go) v1.32.14
github.com/aws/aws-sdk-go-v2/credentials (go) v1.19.14
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue (go) v1.20.37
github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression (go) v1.8.37
github.com/aws/aws-sdk-go-v2/service/dynamodb (go) v1.57.1
github.com/aws/smithy-go (go) v1.24.3
github.com/beevik/etree (go) v1.6.0
github.com/coreos/go-oidc/v3 (go) v3.17.0
github.com/couchbase/gocb/v2 (go) v2.6.4
github.com/crewjam/saml (go) v0.5.1
github.com/descope/virtualwebauthn (go) v1.0.5
github.com/ekristen/gorm-libsql (go) v0.0.0-20231101204708-6e113112bcc2
github.com/gin-gonic/gin (go) v1.9.1
github.com/go-jose/go-jose/v4 (go) v4.1.4
github.com/go-webauthn/webauthn (go) v0.17.4
github.com/gocql/gocql (go) v1.6.0
github.com/golang-jwt/jwt/v4 (go) v4.5.2
github.com/google/uuid (go) v1.6.0
github.com/grpc-ecosystem/grpc-gateway/v2 (go) v2.29.0
github.com/modelcontextprotocol/go-sdk (go) v1.6.1
github.com/openfga/api/proto (go) v0.0.0-20260319214821-f153694bfc20
github.com/openfga/language/pkg/go (go) v0.2.1
github.com/openfga/openfga (go) v1.18.1
github.com/pquerna/otp (go) v1.4.0
github.com/prometheus/client_golang (go) v1.23.2
github.com/redis/go-redis/v9 (go) v9.6.3
github.com/robertkrimen/otto (go) v0.2.1
github.com/rs/zerolog (go) v1.33.0
github.com/russellhaering/goxmldsig (go) v1.6.0
github.com/spf13/cobra (go) v1.10.2
github.com/stretchr/testify (go) v1.11.1
github.com/twilio/twilio-go (go) v1.14.1
github.com/vektah/gqlparser/v2 (go) v2.5.26
go.mongodb.org/mongo-driver (go) v1.17.9
golang.org/x/crypto (go) v0.53.0
golang.org/x/net (go) v0.56.0
golang.org/x/oauth2 (go) v0.36.0
golang.org/x/sync (go) v0.21.0
golang.org/x/time (go) v0.15.0
google.golang.org/genproto/googleapis/api (go) v0.0.0-20260526163538-3dc84a4a5aaa
google.golang.org/grpc (go) v1.82.1
google.golang.org/protobuf (go) v1.36.11
gopkg.in/mail.v2 (go) v2.3.1
gorm.io/driver/mysql (go) v1.5.2
gorm.io/driver/postgres (go) v1.6.0
gorm.io/driver/sqlserver (go) v1.5.2
gorm.io/gorm (go) v1.25.10
modernc.org/sqlite (go) v1.52.0
cel.dev/expr (go) v0.25.1
filippo.io/edwards25519 (go) v1.2.0
github.com/IBM/pgxpoolprometheus (go) v1.1.3
github.com/Masterminds/squirrel (go) v1.5.4
github.com/Yiling-J/theine-go (go) v0.6.2
github.com/agnivade/levenshtein (go) v1.2.1
github.com/antlr/antlr4/runtime/Go/antlr/v4 (go) v4.0.0-20230512164433-5d1fd1a340c9
github.com/antlr4-go/antlr/v4 (go) v4.13.1
github.com/arangodb/go-velocypack (go) v0.0.0-20200318135517-5af53c29c67e
github.com/aws/aws-sdk-go-v2/feature/ec2/imds (go) v1.18.21
github.com/aws/aws-sdk-go-v2/internal/configsources (go) v1.4.21
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 (go) v2.7.21
github.com/aws/aws-sdk-go-v2/internal/ini (go) v1.8.6
github.com/aws/aws-sdk-go-v2/service/dynamodbstreams (go) v1.32.14
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding (go) v1.13.7
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery (go) v1.11.21
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url (go) v1.13.21
github.com/aws/aws-sdk-go-v2/service/signin (go) v1.0.9
github.com/aws/aws-sdk-go-v2/service/sso (go) v1.30.15
github.com/aws/aws-sdk-go-v2/service/ssooidc (go) v1.35.19
github.com/aws/aws-sdk-go-v2/service/sts (go) v1.41.10
github.com/beorn7/perks (go) v1.0.1
github.com/boombuler/barcode (go) v1.0.1-0.20190219062509-6c824513bacc
github.com/bytedance/sonic (go) v1.9.1
github.com/cenkalti/backoff/v4 (go) v4.3.0
github.com/cenkalti/backoff/v5 (go) v5.0.3
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/chenzhuoyu/base64x (go) v0.0.0-20221115062448-fe3a3abad311
github.com/couchbase/gocbcore/v10 (go) v10.2.8
github.com/cpuguy83/go-md2man/v2 (go) v2.0.6
github.com/davecgh/go-spew (go) v1.1.2-0.20180830191138-d8f796af33cc
github.com/dgryski/go-rendezvous (go) v0.0.0-20200823014737-9f7001d12a5f
github.com/dustin/go-humanize (go) v1.0.1
github.com/emirpasic/gods (go) v1.18.1
github.com/envoyproxy/protoc-gen-validate (go) v1.3.3
github.com/fsnotify/fsnotify (go) v1.9.0
github.com/fxamacker/cbor/v2 (go) v2.9.2
github.com/gabriel-vasile/mimetype (go) v1.4.2
github.com/gin-contrib/sse (go) v0.1.0
github.com/go-logr/logr (go) v1.4.3
github.com/go-logr/stdr (go) v1.2.2
github.com/go-playground/locales (go) v0.14.1
github.com/go-playground/universal-translator (go) v0.18.1
github.com/go-playground/validator/v10 (go) v10.14.0
github.com/go-sql-driver/mysql (go) v1.10.0
github.com/go-viper/mapstructure/v2 (go) v2.5.0
github.com/go-webauthn/x (go) v0.2.6
Files by Type (count)
Go
916
TSX
78
TypeScript
64
JSON
26
Markdown
25
YAML
14
Other (.png)
13
Dockerfile
10
Python
10
Other (.tmpl)
8
Shell
7
Protocol Buffers
7
Files by Type (size)
Go
8MB
TypeScript
850KB
JSON
577KB
TSX
420KB
Other (.png)
287KB
Markdown
268KB
Protocol Buffers
99KB
Other (.sum)
79KB
Other (.graphqls)
53KB
YAML
53KB
Python
51KB
Other (.ico)
30KB

The LLM identified 6 files worth highlighting for reuse:

Provides HMAC-based OTP hashing and verification with constant-time comparison. Used for email/SMS OTP storage and validation. Reusable in any Go project needing secure OTP handling.

file: internal/crypto/otp.go ↗ | tags: #cryptography #otp #hmac

Implements an SSRF-hardened HTTP client with IP pinning, DNS rebinding prevention, and private network blocking. Two variants: one for general use (blocks private IPs) and one for trusted callers (allows private IPs). Easily extractable for any Go service that makes outbound HTTP requests.

file: internal/validators/safe_http.go ↗ | tags: #ssrf-protection #http-client #security

A template directory containing skeleton implementations for all storage provider methods (CRUD for users, sessions, webhooks, etc.). Each file documents the expected contract and invariants. This pattern enables rapid addition of new database backends with consistent behavior.

file: internal/storage/db/provider_template/ ↗ | tags: #storage-abstraction #provider-pattern #scaffolding

Provides a tracked goroutine manager that recovers panics, logs errors, and supports graceful draining on shutdown. Used for background email/webhook delivery. Reusable in any Go server needing safe background task execution.

file: internal/asyncutil/asyncutil.go ↗ | tags: #goroutine-management #graceful-shutdown #panic-recovery

Encodes and decodes OAuth authorization state as opaque, server-side handles with positional delimiter escaping. Prevents injection attacks that were possible with legacy caller-supplied values. Demonstrates a secure state management pattern for OAuth flows.

file: internal/codestate/codestate.go ↗ | tags: #oauth #state-encoding #security

Provides generic pointer helper functions (e.g., Ref, Deref) for optional fields in Go structs. Used extensively in the codebase to handle nullable values cleanly. A small, zero-dependency utility package that can be reused in any Go project.

file: internal/refs/doc.go ↗ | tags: #pointer-helpers #utility
Last analyzed: 2026-09-07 14:40:21.776723
Next check: 2026-09-14 14:40:21.746398
$ submit: