Skip to content

AdminUI Cedarling Authorization Design

Kiran Mali edited this page Oct 8, 2025 · 27 revisions

This document defines a Cedar-based fine-grained authorization architecture for the Admin UI. It is modeled on the Gluu AdminUI Cedarling Authorization Design and expands it into a practical implementation plan: schema, roles, resources, policy patterns, evaluation flows, and examples.

graph LR
    %% Style definitions
    classDef green fill:#d5f0d5,stroke:#000,stroke-width:1px;
    classDef yellow fill:#fff2cc,stroke:#000,stroke-width:1px;
    classDef blue fill:#d9e8fb,stroke:#000,stroke-width:1px;
    classDef orange fill:#f9d5b3,stroke:#000,stroke-width:1px;

    %% Top level actors
    AUI -.->|Access APIs| CAB
    U["👥 Users"] -.->|Access components| AUI
    AD["👤 Admin"] -.->|Enable cedarling<br/>Add Policy store URL| CCP
    AD -.->|Manage policy store<br/>edit/delete schema| PA

    %% Admin UI Frontend
    subgraph AUI[Admin UI Frontend]
        CCP[Cedarling Config Page]
        CC[Cedarling Client<br/>- authz user request]
    end
    class AUI green

    %% Config API Backend
    subgraph CAB[Config API Backend]
        CCB[Cedarling Client<br/>- authz user request]
    end
    class CAB yellow

    %% Policy Authoring
    subgraph PA[Policy Authoring]
        ALPD[🧩 Agama Lab Policy Designer]
        GHR[💾 GitHub Repository]
        ALPD -.-> GHR
    end
    class PA blue

    %% Lock
    L["🔒 Lock"]
    class L orange

    %% Connections between UI & Backend
    CC -.->|Send Audit data| L
    CCB -.->|Send Audit Data| L

    %% Policy store fetch
    CCB -.->|Fetch policy store| GHR
    CC -.->|Fetch policy store| GHR

Loading

Backend Config API Policy store

https://github.com/JanssenProject/jans/wiki/Protect-Config-API-using-Cedarling

Principals (Actors)

These are the kinds of principles we can add to our schema and policy store:

  • Admin: full control across all system settings, manage roles and permissions
  • Identity Manager: manages user lifecycle (create/update/disable users, set passwords, manage settings for clients, scripts, SCIM, FIDO, SAML)
  • Security Auditor: read access to logs, cannot modify critical config
  • Developer: create & manage OAuth clients, redirect URIs, client secrets for App
  • Support Staff: Limited access, reset password, unlock accounts
  • End User: Standard user who can manage their own credentials

Frontend Resources

Below are resources with parent group and sub resources.

  • System and monitoring
    • Dashboard
    • Health
    • License
    • MAU
    • Settings
    • Security
    • Webhooks
    • Assests
    • AuditLogs
  • AuthServer and configuration
    • Clients
    • Scopes
    • Keys
    • AuthServerProperties
    • Logging
    • SSA
    • Authn
    • ConfigAPIPropeties
    • Sesisons
  • Identity and Access
    • Users
    • Scripts
    • UserClaims
  • Service
    • Cache
    • Persistance
    • SMTP
    • SCIM
    • FIDO
    • SAML
    • Lock
  • Profile

Actions

  • add
  • update
  • delete
  • view
  • lock
  • unlock
  • reset_password
action_diagram

Policy Store

https://github.com/kdhttps/admin-ui-cedarling-config/blob/agama-lab-policy-designer/a817022659d2401a4b0f7c25098793341b71fff9c9fb.json

Policies and permissions

Admin

Admin can manage Auth server config

@id("AdminCanManageAuthServerConfiguration")
permit(
  principal in Gluu::Flex::AdminUI::Role::"admin",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::AuthServerConfigurationResource
);

Admin can manage User Indetity and Access

@id("AdminCanManageUserIdentityAndAccess")
permit(
  principal in Gluu::Flex::AdminUI::Role::"admin",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::IdentityAccessResource
);

Admin can manage system monitoring

@id("AdminCanManageSystemMonitoring")
permit(
  principal in Gluu::Flex::AdminUI::Role::"admin",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::SystemAndMonitoringResource
);

Admin can manage services

@id("AdminCanManageService")
permit(
  principal in Gluu::Flex::AdminUI::Role::"admin",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::ServiceResource
);

Identity Manager

Manager can manage OAuth clients

@id("ManagerCanManageClients")
permit(
  principal in Gluu::Flex::AdminUI::Role::"manager",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::ClientsResource
);

Manager can manage Custom Scripts

@id("ManagerCanManageCustomScripts")
permit(
  principal in Gluu::Flex::AdminUI::Role::"manager",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::ScriptsResource
);

Security Auditor

Auditor can access logs and monitor resources

@id("AuditorCanManageSystemMonitoring")
permit(
  principal in Gluu::Flex::AdminUI::Role::"auditor",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::SystemAndMonitoringResource
);

Developer

Develoepr can manage OAuth clients

@id("DeveloperCanManageClients")
permit(
  principal in Gluu::Flex::AdminUI::Role::"developer",
  action in [Gluu::Flex::AdminUI::Action::"add",
  Gluu::Flex::AdminUI::Action::"update",
  Gluu::Flex::AdminUI::Action::"view",
  Gluu::Flex::AdminUI::Action::"delete"],
  resource is Gluu::Flex::AdminUI::ClientsResource
);

Support Staff

Support Staff can lock/unlock user

@id("SupportStaffCanManageClients")
permit(
  principal in Gluu::Flex::AdminUI::Role::"supportstaff",
  action in [Gluu::Flex::AdminUI::Action::"lock",
  Gluu::Flex::AdminUI::Action::"unlock"],
  resource is Gluu::Flex::AdminUI::UsersResource
);

End User

End user can manage profile

@id("EndUserCanManageClients")
permit(
  principal in Gluu::Flex::AdminUI::Role::"enduser",
  action in [Gluu::Flex::AdminUI::Action::"update"],
  resource is Gluu::Flex::AdminUI::ProfileResource
);

Settings in Admin UI

We will provide a fully configured Cedarling project with above above-defined schema, principals, roles, actions, and policies. The user can edit it as per their requirments.

We can use jans-lock in here. We can use this same UI to configure jans-lock.

image
image
Clone this wiki locally