pkg

module
v2.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 25, 2020 License: MIT

README ΒΆ

SCIM

GoDoc

This module implements features described in RFC 7643 - SCIM: Core Schema and RFC 7644 - SCIM: Protocol, along with custom features that address specific implementation difficulties.

The goal of this package is to provide extensible, maintainable and easy-to-use building blocks for implementing a SCIM service with relatively good performance.

It is not the goal of this package to enable every possible use case, or to provide an out-of-box SCIM service.

This module evolved from v1 of github.com/imulab/go-scim.

We had since learnt couple lessons (issue 11 and 39) from this initial implementation and had decided to pursue a completely different design. Due to the drastic difference between the two major versions, we decided to stop maintaining v1 and devote limited resources and future efforts on maintaining v2.

We apologize for any inconvenience caused by this decision. The original v1 can still be checked out via tags.

πŸ’‘ Usage

To get this package:

# make sure Go 1.13
go get github.com/imulab/go-scim/pkg/v2

🎁 Features in v2

  • πŸ†“ Reflection free operations on resources
  • πŸ“¬ Property subscribers
  • πŸš€ Direct serialization and deserialization in JSON and other data exchange formats
  • πŸ”§ Enhanced attributes model to allow for custom metadata
  • πŸ‘ Robust SCIM path and filter parsing
  • ⏩ Resource filters to allow for custom resource processing

πŸ“ Project Structure

Features in this module are separated into different directories:

  • spec directory implements the foundation of SCIM resource type definition
  • prop directory implements Property which holds pieces of resource data
  • json directory implements direct serialization and deserialization between SCIM resource and its JSON format
  • crud directory implements parsing and evaluation capabilities for SCIM path and SCIM filters
  • db directory introduces a standard DB interface and a in-memory implementation
  • annotation directory documents internally used attribute annotations and their purpose
  • groupsync directory implements utilities to synchronize change in Group.members with User.groups
  • service directory implements CRUD services that carry out most of the protocol work
  • handlerutil directory implements utilities that help parsing and rendering HTTP, assuming Go's HTTP abstraction

For detailed documentation, please check out README of individual directories, or GoDoc.

πŸš„ Road Map

After delivering the v2.0.0 which will cover most features, efforts will be directed toward:

  • ResourceType(s) and Schema(s) endpoints (see issue 40)
  • Root query
  • Bulk operations
  • SCIM password management extension
  • SCIM soft delete extension

Directories ΒΆ

Path Synopsis
This package describes the internally used annotations
This package describes the internally used annotations
This package implements modification and evaluation of Resource
This package implements modification and evaluation of Resource
expr
This package implements compilers for SCIM path and SCIM filters, and defines the basic data structure for their representation in memory.
This package implements compilers for SCIM path and SCIM filters, and defines the basic data structure for their representation in memory.
This package defines the database provider interface, and provides a simple in-memory implementation.
This package defines the database provider interface, and provides a simple in-memory implementation.
This package serves as a frontend of custom structures that are mappable to SCIM schemas.
This package serves as a frontend of custom structures that are mappable to SCIM schemas.
This package provides utility to deal with the group synchronization issue.
This package provides utility to deal with the group synchronization issue.
This package implements helper functions to parse service requests and render service responses.
This package implements helper functions to parse service requests and render service responses.
This package implements direct JSON serializing and de-serializing for Property and Resource.
This package implements direct JSON serializing and de-serializing for Property and Resource.
This package contains SCIM property definitions and its respective implementations defined in the SCIM specification.
This package contains SCIM property definitions and its respective implementations defined in the SCIM specification.
This package implements most commonly used endpoint logic in RFC7644.
This package implements most commonly used endpoint logic in RFC7644.
filter
This package defines filtering mechanism on resources, which consists the main extension point in services.
This package defines filtering mechanism on resources, which consists the main extension point in services.
This package implements the founding blocks for defining SCIM resource types, and basic error types.
This package implements the founding blocks for defining SCIM resource types, and basic error types.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL