An open API service indexing awesome lists of open source software.

https://github.com/cerberauth/scimply


https://github.com/cerberauth/scimply

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

          

# scimply

**A complete SCIM 2.0 (and 1.1) server library for Go — RFC-compliant, zero-dependency core, and multiple backends.**

[![Join Discord](https://img.shields.io/discord/1242773130137833493?label=Discord&style=for-the-badge)](https://www.cerberauth.com/community)
[![Build](https://img.shields.io/github/actions/workflow/status/cerberauth/scimply/ci.yml?branch=main&label=build&style=for-the-badge)](https://github.com/cerberauth/scimply/actions/workflows/ci.yml)
![Latest version](https://img.shields.io/github/v/release/cerberauth/scimply?sort=semver&style=for-the-badge)
[![Coverage](https://img.shields.io/codecov/c/gh/cerberauth/scimply?style=for-the-badge)](https://codecov.io/gh/cerberauth/scimply)
[![Go Report Card](https://goreportcard.com/badge/github.com/cerberauth/scimply?style=for-the-badge)](https://goreportcard.com/report/github.com/cerberauth/scimply)
[![GoDoc](https://img.shields.io/badge/godoc-reference-5272B4.svg?style=for-the-badge)](https://pkg.go.dev/github.com/cerberauth/scimply)
[![Stars](https://img.shields.io/github/stars/cerberauth/scimply?style=for-the-badge)](https://github.com/cerberauth/scimply)
[![License](https://img.shields.io/github/license/cerberauth/scimply?style=for-the-badge)](https://github.com/cerberauth/scimply/blob/main/LICENSE)

---

A complete SCIM 2.0 (and 1.1) server library for Go.

## Features

- **Full SCIM 2.0** (RFC 7642, RFC 7643, RFC 7644) implementation
- **SCIM 1.1 support** via a conversion layer
- **Zero-dependency core** — `schema/`, `resource/`, `protocol/`, `store/`, `server/` use only the Go standard library
- **Filter parser** — recursive-descent ABNF parser for the full RFC 7644 filter grammar
- **PATCH engine** — complete RFC 7644 §3.5.2 semantics with atomicity
- **Multiple backends** — in-memory, PostgreSQL, MySQL/MariaDB, MongoDB, SCIM proxy
- **Compliance test suite** — reusable against any SCIM server
- **Structured audit logging**

## Quick Start

```go
package main

import (
"log"
"net/http"

"github.com/cerberauth/scimply/schema"
"github.com/cerberauth/scimply/server"
"github.com/cerberauth/scimply/store"
)

func main() {
reg := schema.NewRegistry()
reg.RegisterDefaults() // User, Group, EnterpriseUser

srv, err := server.New(
server.WithStore(store.NewMemoryStore()),
server.WithSchemaRegistry(reg),
server.WithBasePath("/scim/v2"),
server.WithBearerTokenAuth(func(token string) (bool, error) {
return token == "my-secret-token", nil
}),
)
if err != nil {
log.Fatal(err)
}

log.Println("SCIM 2.0 server listening on :8080")
log.Fatal(http.ListenAndServe(":8080", srv))
}
```

## Standalone Server

scimply also ships as a ready-to-run binary. No Go code needed — point it at a YAML config file and start serving SCIM.

```sh
# install
brew install cerberauth/tap/scimply
# or: go install github.com/cerberauth/scimply/cmd/scimply@latest

# create scimply.yaml
cat > scimply.yaml <