Okta connector configuration
Connect a test organization, verify a pre-action decision, and reconcile Event Hooks.
OIN test-instance request body — populate secrets locally
installation.json
{ "label": "Okta pilot", "org_url": "https://YOUR_ORG.okta.com", "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_INSTANCE_SECRET"}Installation and inline request headers
setup.txt
POST /v1/connectors/okta/installationsAuthorization: Bearer <verified-control-plane-identity>Idempotency-Key: <32-200 characters: letters, digits, dot, underscore, tilde, hyphen>Content-Type: application/json POST <inline_endpoint_path returned by installation>vero-okta-timestamp: <Unix seconds>vero-okta-signature: base64url(HMAC-SHA256(inline_signing_secret, timestamp + "." + rawBody))Configure a test-tenant pilot
- 01
Prerequisites: an Okta test organization, a dedicated pilot user, and a verified Presence control-plane member with integrations:manage. A tenant API key cannot install the connector. Arrange this control-plane access with support before setup.
- 02
For a custom API Services app, register an RSA public JWK, retain its private JWK and kid, grant okta.users.manage, and assign an admin role/resource set that permits session clearing for pilot users. For an OIN API Service test instance, use the client ID and one-time client secret from the authorized instance instead. OIN publication is pending.
- 03
Submit exactly one credential method to the installation API. Supported organization URLs are HTTPS origins on okta.com, okta-emea.com or oktapreview.com. Presence verifies the token grant before activation. The credential remains encrypted and is used for token renewal; setup is not proof that session revocation works.
- 04
Capture inline_signing_secret and event_hook_authorization from the first successful response in your secret manager. An idempotent retry returns the installation without secrets. If setup values are lost or credentials change, disable the installation and create a new one with a new idempotency key; revoke the old instance in Okta.
- 05
Your trusted workflow must call the returned inline endpoint before session.start, application.access, group.assignment or admin_role.assignment. Send an opaque event ID, actor ID and target resource ID, plus evidence for a Presence session already bound to that action. Sign the exact JSON bytes using the returned inline secret; timestamps have a five-minute window.
- 06
Continue only for permit. Hold require_step_up for verification or review, and refuse deny. An effective BLOCKED verdict also attempts to clear the actor's Okta sessions and OAuth tokens. Revocation failure still denies, with session_revoked=false. Shadow mode may downgrade a true block and therefore does not establish live enforcement.
- 07
Optionally create an Okta Event Hook using the returned event endpoint and exact Authorization value. Presence echoes X-Okta-Verification-Challenge as JSON and accepts deliveries with 204. Event Hooks reconcile events after they occur; they cannot prevent the originating action.
- 08
Before rollout, verify the token exchange and renewal, block a controlled operation for the dedicated pilot user, confirm session_revoked and the actual Okta session effect, retry the same event, reject changed bytes, and exercise hook verification/delivery. Check downstream application sessions separately. Remove the Presence connector and revoke its Okta credentials to disconnect.
Verify the implementation
Installation, signed decisions and Event Hook schemas.
/.well-known/openapi.json →Okta connector readiness.
/surfaces/okta →Okta API service setup.
https://developer.okta.com/docs/guides/build-api-integration/main/ →
Current limits
- Test-tenant pilot; OIN listing approval and live customer validation are pending.
- okta.users.manage permits broader user management; the connector uses it only for session clearing. Review access before authorizing an instance.
- Clearing Okta sessions does not guarantee termination of every downstream application's own local session. The application remains responsible for honoring the inline deny.
One next step
Continue with the executable path.