. . .

Auth and Security

Implement basic authentication or OAuth for end-users and developers to control data access on a class and object level.

ApiOmat gives you complete control over two entities, app end-users and developers. Both can authenticate with ApiOmat's built-in feature or using an external OAuth service and can be granted specific access to data. Configure individual roles for each backend in ApiOmat and grant developers access to only the essential project components.

Relevant Links: Access Control Lists | User Management | OAuth2 | Authentication Classes | Dynamic Roles | LDAP | SAML

Key Capabilities

Basic Authentication

Without any configuration the default auth mechanism provides basic security out of the box

OAuth2, SAML, LDAP

More complex auth mechanisms can be used for more convenience (e.g. Single-Sign-On) or higher security (e.g. with expiring tokens)

Access Control Lists

Use pre-defined or create custom roles for end-users and assign CRUD rights to these roles on class or even object level

Developer Roles

Grant other backend developers the right to change or just view your data model, to just download the SDKs for your backend or view your backend data

Authentication Classes

Native Modules can contain specific classes that can contain fully customized authentication logic and optionally be used for authentication ApiOmat-wide (not just in that Module)

Dynamic Roles

Native Modules can contain specific classes that can contain fully customized authorization logic and optionally be used for authorization ApiOmat-wide (not just in that Module)

Contracts

An ApiOmat admin can define contracts which a developer has to accept in order to gain access

How it works

Authentication and authorization are divided into two groups of people: end-users and developers. An end-user is a person that uses an app that uses ApiOmat as its backend. A developer is a person who created the backend on ApiOmat and who has access to the Dashboard.

End-users

End-user objects can be created with a registration form in your app or via REST API, which enables an end-user to send requests to your backend, protected by basic authentication. You can also fetch OAuth2 tokens for those users in an app and use token-based authentication.

You don't have to create the user objects explicitly. Instead, you can use the LDAP module to sync users with an LDAP directory or use SAML for Single-Sign-On.

A user's access to data can be restricted by pre-defined roles, custom roles or complete custom implementations. For example, you can grant read access to the class "MyClass" to all app users, but write access only to the owners of the objects. You can also create custom roles like "Team lead" or "build server" and grant CRUD rights to those roles. Complete custom implementations let you fetch role data from a 3rd party system for example.

You can also create custom authentication classes where you have full control over the authentication and authorization mechanism. For example, if you already have a user database and a web service in front of it, you could implement an auth class that sends requests to that web service to authenticate the requests to ApiOmat. The LDAP module works in a similar way.

When developing a web application, it may come in handy that you can also define the allowed Origins for Cross-Origin-Requests.

Developers

Especially when working in a team, you might want to grant other developers access to your backend's metadata and data. You can do this on a fine-granular level.

Also, when external developers are part of your team, you can use ApiOmat's contract feature to require them to sign a contract before they gain access to ApiOmat.

* link only available in Enterprise Documentation