feat(okta): add complete Okta identity management integration#3685
feat(okta): add complete Okta identity management integration#3685waleedlatif1 merged 7 commits intostagingfrom
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Updates docs and UI metadata: generates new Extends landing-page Written by Cursor Bugbot for commit c613e78. Configure here. |
Greptile SummaryThis PR adds a complete Okta identity management integration with 18 tools covering full user lifecycle (list, get, create, update, activate, deactivate, suspend, unsuspend, reset password, delete) and group management (list, get, create, update, delete, add/remove members, list members). It also ships the corresponding block, icon, registry entries, and docs. Additionally, the PR includes landing-page/doc stubs for Workday, Box, and DocuSign (without block implementations) and expands the Ashby docs.
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User as User / LLM
participant Block as Okta Block<br/>(okta.ts)
participant Registry as Tool Registry
participant Tool as Okta Tool<br/>(e.g. list_users.ts)
participant Validator as validateOktaDomain()
participant OktaAPI as Okta API<br/>(your-org.okta.com)
User->>Block: Select operation + enter apiKey, domain, params
Block->>Registry: config.tool(params) → tool id
Block->>Registry: config.params(params) → mapped params
Registry->>Tool: execute(params)
Tool->>Validator: validateOktaDomain(params.domain)
alt Domain fails regex
Validator-->>Tool: throw Error("Invalid Okta domain")
Tool-->>User: Error: invalid domain
else Domain is valid
Validator-->>Tool: sanitized domain string
Tool->>OktaAPI: SSWS ${apiKey} authenticated request
alt HTTP error (4xx/5xx)
OktaAPI-->>Tool: error response
Tool->>Tool: try response.json() for OktaApiError
Tool-->>User: throw Error(errorSummary)
else HTTP 200 / 204
OktaAPI-->>Tool: JSON or empty body
Tool->>Tool: transform response → typed output
Tool-->>User: success: true + output fields
end
end
Last reviewed commit: "fix(okta): prevent s..." |
Add 18 Okta Management API tools covering user lifecycle (list, get, create, update, activate, deactivate, suspend, unsuspend, reset password, delete) and group management (list, get, create, update, delete, add/remove members, list members). Includes block with conditional UI, icon, registry entries, and generated docs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3323d5f to
3704fca
Compare
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…, consistent sendEmail - Add validateOktaDomain() to prevent SSRF via user-supplied domain param - Fix 9 tools to check response.ok before calling response.json() - Make sendEmail query param explicit in deactivate_user and delete_user Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@greptile |
|
@cursor review |
Switch subBlocks default to OFF (false), which was being forwarded to tools and overriding their default-true behavior for sendEmail and activate params. Now only forward these when explicitly toggled ON. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@cursor review |
|
@greptile |
Block now forwards sendEmail/activate values as-is (including false). Tools use ?? operator so: explicit true/false from switches are respected, undefined (programmatic calls) still defaults to true. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@cursor review |
|
@greptile |
- update_group: always include description in PUT body (defaults to '') since PUT replaces the full profile object - update_user: use !== undefined checks so empty strings can clear fields via Okta's POST partial update - block: allow empty strings through passthrough loop and use !== undefined for groupDescription mapping Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Domain validation missing whitespace trimming causes confusing errors
- Added .trim() to validateOktaDomain function to remove leading and trailing whitespace before domain validation.
Or push these changes by commenting:
@cursor push 1b4322d39b
Preview (1b4322d39b)
diff --git a/apps/sim/tools/okta/types.ts b/apps/sim/tools/okta/types.ts
--- a/apps/sim/tools/okta/types.ts
+++ b/apps/sim/tools/okta/types.ts
@@ -8,7 +8,7 @@
* Ensures the domain matches a known Okta domain suffix.
*/
export function validateOktaDomain(rawDomain: string): string {
- const domain = rawDomain.replace(/^https?:\/\//, '').replace(/\/$/, '')
+ const domain = rawDomain.trim().replace(/^https?:\/\//, '').replace(/\/$/, '')
if (!OKTA_DOMAIN_PATTERN.test(domain)) {
throw new Error(
`Invalid Okta domain: "${domain}". Must be a valid Okta domain (e.g., dev-123456.okta.com)`This Bugbot Autofix run was free. To enable autofix for future PRs, go to the Cursor dashboard.
- Moved validateOktaDomain from tools/okta/types.ts to lib/core/security/input-validation.ts alongside other validation utils - Added .trim() to handle copy-paste whitespace in domain input - Updated all 18 tool files to import from the new location Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>


Summary
Test plan