Claude 24f816b6a3
Consolidate 22 sibling repos into layered organism structure
Place useful parts of the surrounding repos into sica-fondt by layer, per the
body model (Ada = membrane; brain/endocrine/capabilities/knowledge non-Ada):

- brain/        LLM reasoning + providers (dapr, hermes, MoMoA)
- capabilities/ REPRAG sidecars: hermes tools/skills, dapr tools, parallel
                dispatch, A51 channels, and the OSINT cluster
- knowledge/    LORAG corpus: 754 cyber-skills, agency personas, secure-coding,
                MITRE ATT&CK data
- reference/    defensive threat-reference (C3, shhbruh doc) + AdaYaml parser

License handling: AGPL sources (worldosint, advanced_evolution, mercury,
Reticulum) and GPL DeTTECT are SPEC-only clean-room/port descriptions — no
copyleft code copied. MIT/Apache/data parts copied as working trees.

Safety: shhbruh escape/persistence material and C3 covert-C2 kept as reference
only, not wired into the running organism. See CONSOLIDATION.md.

https://claude.ai/code/session_01UehUqEXXJJCsHoA4voCU5c
2026-06-10 06:53:01 +00:00

97 lines
2.8 KiB
Markdown

# SCIM Provisioning Workflows
## User Provisioning Workflow
```
1. Admin assigns user to Okta application
2. Okta checks if user exists (GET /Users?filter=userName eq "user@domain.com")
├── User NOT found → Okta sends POST /Users with user attributes
│ │
│ └── SCIM server creates user → Returns 201 Created
└── User found → Okta sends PUT /Users/{id} to update attributes
└── SCIM server updates user → Returns 200 OK
```
## User Deprovisioning Workflow
```
1. Admin unassigns user from Okta application (or user deactivated in Okta)
2. Okta sends PATCH /Users/{id}
Body: {"schemas":["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations":[{"op":"replace","value":{"active":false}}]}
3. SCIM server deactivates user (sets active=false, revokes sessions)
4. Returns 200 OK with updated user object
```
## Group Push Workflow
```
1. Admin enables Group Push for Okta group
2. Okta sends POST /Groups with group name and initial members
3. When group membership changes in Okta:
├── Member added → PATCH /Groups/{id}
│ Op: add, path: members, value: [{value: userId}]
└── Member removed → PATCH /Groups/{id}
Op: remove, path: members[value eq "userId"]
```
## Profile Sync Workflow
```
1. User profile updated in Okta (e.g., department change)
2. Okta sends PUT /Users/{id} or PATCH /Users/{id}
Body includes updated attributes
3. SCIM server updates user attributes in local database
4. Returns 200 OK with full updated user representation
```
## Error Recovery Workflow
```
1. SCIM operation fails (network timeout, server error)
2. Okta logs failed task in Provisioning > Tasks
3. Admin can retry individual failed tasks
4. For persistent failures:
├── Check SCIM server logs for error details
├── Verify network connectivity and TLS certificate
├── Validate bearer token has not expired
└── Review attribute mapping for data format issues
```
## Implementation Testing Workflow
```
1. Deploy SCIM server to staging environment
2. Configure Okta SCIM integration with staging URL
3. Run Okta SCIM validator test suite
4. Test manual operations:
├── Assign test user → verify account created
├── Update user profile → verify attributes synced
├── Unassign user → verify account deactivated
└── Push group → verify group and members created
5. Review provisioning logs in Okta Admin Console
6. Promote to production with production SCIM URL
```