ores.iam.core
Table of Contents
2. Summary
ores.iam.core provides identity and access management for ORE Studio:
user account lifecycle (creation, listing, deletion), secure password
authentication (scrypt), account locking on failed login attempts, session
and role management, and multi-tenancy / multi-party support. Business logic
is exposed as NATS message handlers in the 0x2000–0x2FFF range. A synthetic-
data generator produces test accounts for development and CI use.
3. Inputs
- NATS request messages from UI clients and peer services (account CRUD, login, authorisation queries, bootstrap, reset) in the 0x2000–0x2FFF range.
- PostgreSQL connections to
ores_iam_*tables with temporal versioning.
4. Outputs
- Account, role, party, session, and tenant records persisted to the
ores_iamschema with bitemporal history. - Authentication tokens and session state returned to callers via NATS.
- NATS response messages for all IAM operations.
5. Entry points
include/ores.iam.core/ores.iam.hpp— aggregate include.include/ores.iam.core/messaging/registrar.hpp— registers all NATS handlers (account, auth, session, role, tenant, bootstrap, reset).include/ores.iam.core/service/account_operations_service.hpp— account management entry point.include/ores.iam.core/service/authorization_service.hpp— authorisation and role-check entry point.
6. Dependencies
ores.iam.api— shared domain types and NATS protocol schemas.ores.dq— ORM base classes and data-quality infrastructure.soci— SQL ORM for PostgreSQL persistence.nats.c— NATS messaging client.libsodium/ scrypt — secure password hashing.
7. Build dependencies
What the shared profile cannot know, declared here rather than hand-edited into the generated build file. Each block is spliced into its generated file after the profile's baseline.
8. See also
- ores.iam — component group overview.
- ores.iam.api — protocol types and domain entities.
- ores.iam.service — NATS service entrypoint.
- ores.iam.client — client-side session and token-provider library.
- ores.iam Messaging Reference — subject families and their owning protocol headers; the generated headers are the full catalogue.
- Multi-Tenancy Architecture — tenant isolation and bootstrap design.
- Multi-Party Login Flow — multi-party authentication sequence.
- IAM Account — account entity design and state transitions.
9. Test dependencies
The suites link what the profile cannot know about.
find_package(Immer CONFIG REQUIRED)
target_link_libraries(${lib_target_name}
PUBLIC
ores.iam.api.lib
ores.geo.lib
ores.variability.core.lib
ores.database.lib
ores.dq.api.lib
ores.eventing.api.lib
ores.eventing.core.lib
ores.platform.lib
ores.security.lib
ores.nats.lib
ores.workflow.api.lib
ores.assets.api.lib
ores.reporting.api.lib
ores.scheduler.api.lib
PRIVATE
ores.history.core.lib
ores.iam.client.lib
ores.inbox.api.lib
ores.service.lib
ores.utility.lib
ores.refdata.api.lib
ores.refdata.core.lib
ores.synthetic.api.lib
ores.synthetic.core.lib
ores.marketdata.api.lib
ores.marketdata.core.lib
faker-cxx::faker-cxx
libfort::fort
immer)
target_link_libraries(${tests_target_name}
PRIVATE
${lib_target_name}
ores.refdata.core.lib
ores.assets.core.lib
ores.telemetry.core.lib
ores.inbox.api.lib
ores.inbox.core.lib
ores.service.lib
ores.utility.lib
ores.testing.lib
Catch2::Catch2
faker-cxx::faker-cxx
ores.openssl_cleanup
Threads::Threads)
