Admin Service

Documentation for arya-banking-admin-service — the infrastructure and identity administration backbone of Arya Banking.

Overview
What the admin-service does, its role in the Arya Banking platform, and the tech stack powering it.
Entry Point & Annotations
The main application class, Spring Boot exclusions, component scan strategy, and the two custom annotations — @AdminRestController and @AllowedRoles.
Architecture
System architecture, component interactions, project structure, and key design patterns.
Getting Started
Prerequisites, local setup, bootstrap configuration, and running the admin-service for the first time.
Configuration Reference
Complete reference for application.yaml, bootstrap.yml, and all configuration beans.
API Reference
Complete REST API reference for all five admin-service controllers — Keycloak clients, realm roles, Vault AppRoles, KV secrets, and HCL policies.
Services Deep-Dive
Implementation internals of all five service classes — KeyCloakServiceImpl, VaultAppRoleServiceImpl, VaultOperationServiceImpl, VaultPolicyServiceImpl, and RolePermissionValidator.
Mappers
MapStruct compile-time mapping — BaseMapper contract, KeycloakRoleMapper, VaultResponseMapper, and how annotation processor ordering is configured.
Security
JWT authentication flow, role-based access control, RolePermissionValidator internals, and the @AllowedRoles annotation.
Vault Integration
Deep dive into HashiCorp Vault AppRole authentication, KV v2 operations, and HCL policy management within the admin-service.
Keycloak Integration
How the admin-service integrates with Keycloak — the KeyCloakManager factory, client creation flow, and realm role management.
Data Models & Common Library
Domain models, DTOs, MapStruct mappers, exceptions, and utilities from arya-banking-common used by the admin-service.
CI/CD & Build
GitHub Actions workflows, Maven build configuration, SonarCloud analysis, and Docker image generation.
Roadmap & Known Issues
Planned features, GitHub issue backlog, and known bugs or technical debt in the current v1.0.0 release.