diff --git a/docs/overview/design/assets/c4-merlin-server-component.png b/docs/overview/design/assets/c4-merlin-server-component.png index 93a1fff..f274a4d 100644 --- a/docs/overview/design/assets/c4-merlin-server-component.png +++ b/docs/overview/design/assets/c4-merlin-server-component.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3e3e3f02ad892bdf1270080ab1e81eea6db9ea2b90ed8db842cde6bd77d1e520 -size 79177 +oid sha256:d8070b6f2148c8d3889a8bc237e17c2499727b92769f476e934c0af174e6f590 +size 78837 diff --git a/docs/overview/design/assets/c4-plandev-container.png b/docs/overview/design/assets/c4-plandev-container.png index a944894..c858480 100644 --- a/docs/overview/design/assets/c4-plandev-container.png +++ b/docs/overview/design/assets/c4-plandev-container.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:43eebec0e7e8d1762feb2157acd5b13e19c9de3f89405ebfd5dfbc60d96873f2 -size 211028 +oid sha256:8f4c79c2558368a673caf5130d60f2b9e77d96cb287c99fbfb7bd826f4fff704 +size 215625 diff --git a/docs/overview/design/assets/c4-plandev-context.png b/docs/overview/design/assets/c4-plandev-context.png index e21d321..fc03334 100644 --- a/docs/overview/design/assets/c4-plandev-context.png +++ b/docs/overview/design/assets/c4-plandev-context.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a04831ef6327cb1bda2a769f96435c67bbbcbb5b65fd78afff2ac078970f9cc2 -size 47460 +oid sha256:6a72f838df8072a539e7240cc3e261333fb7cb4a7b2f80943f884de667ec1244 +size 47457 diff --git a/docs/overview/design/assets/c4-plandev-context.puml b/docs/overview/design/assets/c4-plandev-context.puml index f94c8e7..9b5e5a8 100644 --- a/docs/overview/design/assets/c4-plandev-context.puml +++ b/docs/overview/design/assets/c4-plandev-context.puml @@ -9,12 +9,12 @@ System(missionScheduler, "Mission Scheduler", "The mission scheduling logic syst System(plandev, "PlanDev", "Provides mission activity and sequence simulation and resource analysis") -System_Ext(cam, "Common Access Manager", "Central authentication and authorization provider") +System_Ext(cam, "Common Access Manager", "Central authentication and identity data provider") Rel_D(missionTool, plandev, "Query data") Rel_D(planner, plandev, "Views and edits plans, resource profiles, constraints") Rel_D(missionScheduler, plandev, "Query resource profiles and constraints, mutate plans") -Rel_D(plandev, cam, "Get authentication/authorization") +Rel_D(plandev, cam, "Get authentication/identity data") @enduml diff --git a/docs/overview/design/software-design-document.mdx b/docs/overview/design/software-design-document.mdx index 0331938..556d374 100644 --- a/docs/overview/design/software-design-document.mdx +++ b/docs/overview/design/software-design-document.mdx @@ -533,18 +533,23 @@ configuration file. ### Authentication and Authorization -PlanDev provides authentication and authorization capabilities via the -Common Access Manager. Currently, authentication requests from the -PlanDev UI are proxied through the aerie-ui service. It is prudent that -PlanDev not handle (proxy/store) any credential information, for any -duration of time. As a result, PlanDev authentication will soon be -amended so requests for an authentication token are made directly to a -CAM server instance with the Cross-Origin Resource Sharing (CORS) -capability enabled. - -Authorization is provided by configuring CAM policies. The PlanDev -GraphQL API Server manages authorization of API access and limits -access based on user roles per API field granularity. +The PlanDev Gateway service handles user authentication through a +modular JavaScript adapter interface. Authentication requests from the +UI are proxied through the `plandev-ui` service to the Gateway. +Deployments can provide custom authentication adapters to integrate +PlanDev with external identity providers or use a built-in adapter. + +PlanDev currently includes one built-in adapter for integration with +Common Access Manager (CAM). CAM is an external identity provider that +is deployed and managed separately from PlanDev. The adapter authenticates +users against a deployment's CAM service and retrieves identity data, +including group membership. + +When the CAM adapter is used, a user-provided JSON configuration, +supplied through an environment variable, maps CAM groups to PlanDev +roles and permissions. PlanDev services use these roles and permissions +to authorize access to protected resources. The PlanDev GraphQL API +Server enforces authorization at field-level granularity. ### Data Model