ProAuth is based on a modular architecture which easily enables the addition of new modules like new Identity Providers, Protocols, Enterprise Directory Synchronization or TwoFactor Authentication Mechanisms. ProAuth can be horizontally scaled in a cloud environment and supports a zero-downtime deployment mechanism which also includes database schema changes.
The ProAuth application is divided into multiple services:
- ProAuth Core
- Authentication Pipelines / OIDC endpoints
- Authentication Views
- Management API
- User Store API
- SCIM API
- ProAuth Admin UI
- User interface to interact with Management API and User Store API
- Is an optional component and does not need to be accessed publicly
- Database Infrastructure
- ProAuth stores its configuration data in an MSSQL database
- ProAuth User Stores store the data in MSSQL databases
- Caching / State Store / PubSub
- ProAuth internally uses dapr to abstract the resource access to state store and messaging components.
- By default, ProAuth is configured with a Redis configuration as state store and PubSub component.
- Any components compatible with dapr can be configured and used.
ProAuth Core is designed to run as a multi-instance deployment to support load-balancing, failover, scaling and zero-downtime scenarios. For testing purposes, ProAuth Core can be run in single instance mode with in-memory caching and PubSub, but this setup is not recommended in a production environment.
ProAuth consists of the following components:
User Store API
If a federated scenario is not applicable, users and groups can be managed in user stores. ProAuth can manage multiple user stores and normally, the users from different legal entities or tenants are separated into different user stores (normally a dedicated database per user store). Therefore the user store API is always executed in the context of a specific user store instance.
The API lets you manage users, groups, and group memberships as well as managing additional user profile data. Managing user credentials like setting initial passwords, resetting passwords is also part of the user store management API.
IDP Modules
The IDP modules are the base implementation to create IDP instances which perform the federated authentication to a specific identity provider of authenticate with a user store instance. Each type of protocol of vendor specific implementation details result in a dedicated module. Most of the modules relay on OpenID Connect and OAuth.
Each module offers a set of configuration options. The options are validated and can be automatically migrated for module version updates.
Customer specific modules can easily be integrated. However the standard product offers a fixed set of modules.
TwoFactor
As with the IDP modules, the TwoFactor implementation are defined in dedicated modules. Those module offer a second factor implementation for SMS, e-mail or TOTP.
Each module offers a set of configuration options. The options are validated and can be automatically migrated for module version updates.
Customer specific modules can easily be integrated. However the standard product offers a fixed set of modules.