myriAD is a REST API for Microsoft Active Directory that provides a fully featured, RBAC-enabled JSON interface to AD.
The myriAD Active Directory REST API is designed to provide an interface to manage AD objects, and is suitable for integration in service oriented architectures (SOA), enterprise applications, support workflows, or basic utility scripts.
Accessing the AD objects comes under two options: 1) native object access, such as security principals, OUs, GPOs, etc., or 2) embedded workflow scripts.
The myriAD ADAPI is built on Synapse and supports embedding an entire workflow, which can be coded in a variety of languages. Embedded workflows are best used to support highly-repeatable, compound-functions with multiple AD-dependency steps.
Best practice security implementation provides that objects are accessible under a discretionary access control list (DACL) model, meaning objects are directly permissioned with allowed security principals. This implies that any tooling of choice may be used to manipulate allowed objects; the ADAPI provides a data-driven implementation of convenience, and is guaranteed to meet implementation standards for audit, logging, etc. In an enterprise setting, a typical implementation would populate the DACL via an entitlements-based RBAC-grant process, where myriAD is participating in an SOA.
myriAD supports the DACL-based RBAC approach as described above, but also provides an interface for custom role providers via RoleManagers. Thus, if you don't want to use the built-in DaclRoleManager, you can implement your own security store to abstract AD object access permissions. Separately, embedded workflow scripts are serviced by the native myriAD (Synapse) RBAC and permmissioned accordingly. Typical implementation would be for dedicated requirements.
All technical capability is housed in a .NET library, which contains the POCOs, worker classes, and utility methods. Unit testing exercises these objects/classes. The REST API is a simple wrapper on the Directory Services/LDAP core lib - it provides the URI structure, JSON payloads/responses, and logging.