docs(c4): fix 3a security — email field, permitted endpoints
This commit is contained in:
@@ -73,16 +73,16 @@ C4Component
|
|||||||
ContainerDb(db, "PostgreSQL")
|
ContainerDb(db, "PostgreSQL")
|
||||||
|
|
||||||
System_Boundary(backend, "API Backend (Spring Boot)") {
|
System_Boundary(backend, "API Backend (Spring Boot)") {
|
||||||
Component(secFilter, "Security Filter Chain", "Spring Security", "Enforces authentication on all requests. Parses Basic Auth header and validates credentials via BCrypt.")
|
Component(secFilter, "Security Filter Chain", "Spring Security", "Enforces authentication on all requests. Parses Basic Auth header and validates credentials via BCrypt. Permits password-reset, invite, and register endpoints without authentication.")
|
||||||
Component(permAspect, "PermissionAspect", "Spring AOP", "Intercepts methods annotated with @RequirePermission. Checks user's granted authorities against the required permission. Throws 401/403 if denied.")
|
Component(permAspect, "PermissionAspect", "Spring AOP", "Intercepts methods annotated with @RequirePermission. Checks user's granted authorities against the required permission. Throws 401/403 if denied.")
|
||||||
Component(secConf, "SecurityConfig", "Spring @Configuration", "Configures filter chain: all routes require authentication, CSRF disabled, BCrypt password encoder, DaoAuthenticationProvider with CustomUserDetailsService.")
|
Component(secConf, "SecurityConfig", "Spring @Configuration", "Configures filter chain: all routes require authentication, CSRF disabled, BCrypt password encoder, DaoAuthenticationProvider with CustomUserDetailsService.")
|
||||||
Component(userDetails, "CustomUserDetailsService", "Spring Security UserDetailsService", "Loads AppUser by username from DB. Converts group permissions to Spring GrantedAuthority objects.")
|
Component(userDetails, "CustomUserDetailsService", "Spring Security UserDetailsService", "Loads AppUser by email from DB. Converts group permissions to Spring GrantedAuthority objects. Logs unknown permissions.")
|
||||||
}
|
}
|
||||||
|
|
||||||
Rel(frontend, secFilter, "All requests", "HTTP / Basic Auth header")
|
Rel(frontend, secFilter, "All requests", "HTTP / Basic Auth header")
|
||||||
Rel(secFilter, permAspect, "Authenticated requests proceed to guarded methods", "AOP @Around")
|
Rel(secFilter, permAspect, "Authenticated requests proceed to guarded methods", "AOP @Around")
|
||||||
Rel(secConf, userDetails, "Wires as UserDetailsService", "")
|
Rel(secConf, userDetails, "Wires as UserDetailsService", "")
|
||||||
Rel(userDetails, db, "Loads user by username", "JDBC")
|
Rel(userDetails, db, "Loads user by email", "JDBC")
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3b — Document, File & Import Domain
|
### 3b — Document, File & Import Domain
|
||||||
|
|||||||
Reference in New Issue
Block a user