Overview
TOTAL ingests identity and authentication event data from your Okta tenant via the Okta System Log API. We poll the/api/v1/logs endpoint on a configurable interval to collect, normalize, and correlate authentication events, MFA challenges, user lifecycle changes, and administrative actions across your environment.
Connector Type: Polling
Prerequisites
- Okta Administrator access with permission to create API tokens or OAuth 2.0 service apps
- Okta tenant (production or preview) with active users and event logging enabled
- Super Admin or Read-Only Admin role for the service account
- Approximately 15 minutes to complete setup
Step 1: Identify Your Okta Org URL
- Sign in to your Okta Admin Console
- Your Okta Org URL is displayed in the browser address bar — it follows the format
https://your-org.okta.com - Paste the Org URL into the TruU Portal
The Org URL is your unique Okta domain, e.g.https://acme.okta.comorhttps://acme.oktapreview.comfor sandbox environments.
Step 2: Create an API Service Account (OAuth 2.0 — Recommended)
TOTAL authenticates to your Okta tenant using a scoped OAuth 2.0 service app with the Client Credentials grant flow.- In the Okta Admin Console, navigate to Applications → Applications
- Click Create App Integration
- Select API Services and click Next
- Enter:
- Name:
TruU TOTAL - Log Reader
- Name:
- Click Save
- On the app’s General tab, copy the Client ID
- Under Client Credentials, select Public key / Private key
- Click Add Key, generate a new key pair, and copy the Private Key (JSON)
- Paste the Client ID and Private Key into the TruU Portal
Assign Required Scopes
- Navigate to Security → API → Tokens (or the app’s Okta API Scopes tab)
- Grant the following scope:
okta.logs.read
- Optionally assign the Read-Only Administrator role to the service app under Admin Roles
Alternative: If your organization prefers SSWS API tokens, you can generate one under Security → API → Tokens. Copy the token value immediately — it is only shown once. Paste it into the TruU Portal. Note that SSWS tokens have broader access and shorter rotation cycles than scoped OAuth 2.0 tokens.
Step 3: Verify Connectivity
Once credentials are entered in the TruU Portal:- Click Test Connection — TOTAL will issue a test query against your System Log API
- If successful, you’ll see a confirmation with the number of recent events detected
- If configured, TOTAL will run a historical data pull on initial setup to seed user personas before live monitoring begins
Security & Privacy
What We Access
- Read-only access to the Okta System Log via
/api/v1/logs - Queries use
since/untilfiltering — we only fetch new events since the last poll - All API calls are scoped to the
okta.logs.readpermission
What We Don’t Have Access To
- Write access to your Okta tenant
- Ability to create, modify, or delete users, groups, or policies
- Access to user passwords or MFA secrets
- Access to Okta configuration or administrative functions
Updating or Rotating Credentials
Rotate OAuth 2.0 Keys (Recommended: Before expiry)
- In Okta Admin Console, go to Applications →
TruU TOTAL - Log Reader - Under Client Credentials, click Add Key to generate a new key pair
- Copy the new private key and paste it into the TruU Portal
- After TOTAL confirms the new key is active, deactivate the old key
Revoke Access
To immediately remove TOTAL’s access:-
Option A — Disable in the TruU Portal:
- Go to the TruU Portal → Settings → Connectors
- Find the Okta connector and click Disable
-
Option B — Deactivate the app in Okta:
- Go to Applications →
TruU TOTAL - Log Reader - Click Deactivate
- Go to Applications →
-
Option C — Delete the app:
- Go to Applications →
TruU TOTAL - Log Reader - Click Delete
- Go to Applications →
Rate Limiting & Scalability
Okta API Rate Limits
| Parameter | Limit |
|---|---|
| System Log endpoint | ~120 req/min org-wide (varies by tier) |
| Per-token share | Up to 50% of the org-wide bucket |
| Response page size | 100 events per response (adjustable) |
| Throttle response | HTTP 429 with Retry-After header |
| DynamicScale add-on | Multiplies limits on eligible endpoints |
Ingestion Capacity
At the standard tier, TOTAL sustains ~200 events/sec — approximately 17.2M events/day. A large enterprise with 100K+ users typically generates 500K–2M Okta events/day, giving TOTAL 8–30× headroom above expected volume. Peak-hour surges (3–5× average during morning logins) are absorbed without approaching the ceiling.Event Freshness
Events appear in the Okta System Log within seconds. TOTAL polls on a configurable interval (default: 60 seconds). End-to-end latency from event occurrence to TOTAL processing is typically under 2 minutes.Resilience
TOTAL uses cursor-based ingestion with at-least-once delivery. The polling cursor only advances after events are successfully collected, normalized, and published. If any step fails — API throttling, network interruption, process restart — the cursor stays put and the next poll replays from the last known-good position. No events are lost. Transient failures (429s, 5xx, timeouts) are retried automatically with exponential backoff. After 5 consecutive failures, the connector self-pauses to prevent runaway retries and can be re-enabled from the TruU Portal. On recovery from an extended outage, TOTAL resumes from its last cursor — Okta retains System Log events for 90 days, so data loss requires 90+ days of downtime.Part 2: Event Types & Data Schema
Signal Classification
| Signal Class | TOTAL Category |
|---|---|
| Core IAM | Authentication, Admin |
| MFA & Device Trust | Authentication |
Event Types We Ingest
TOTAL extracts the following categories of events from the Okta System Log. Every event is tied to a human identity via theactor field. System-level events (policy creation, application lifecycle) that are not attributable to a specific user are excluded.
Authentication Events
| Okta Event Type | Description | TOTAL Classification |
|---|---|---|
user.authentication.sso | SSO authentication into an application | Authentication |
user.authentication.auth_via_mfa | Authentication via MFA challenge | Authentication |
user.authentication.auth_via_IDP | Authentication via external Identity Provider | Authentication |
user.authentication.auth_via_social | Authentication via social login | Authentication |
user.authentication.verify | Step-up authentication verification | Authentication |
user.session.start | User session initiated | Authentication |
user.session.end | User session terminated | Authentication |
user.session.clear | All sessions cleared for a user | Authentication |
user.authentication.auth_via_radius | Authentication via RADIUS | Authentication |
MFA / Factor Events
| Okta Event Type | Description | TOTAL Classification |
|---|---|---|
user.mfa.factor.activate | MFA factor enrolled and activated | Authentication |
user.mfa.factor.deactivate | MFA factor removed | Authentication |
user.mfa.factor.reset_all | All MFA factors reset for a user | Authentication |
user.mfa.factor.update | MFA factor updated | Authentication |
user.mfa.attempt_bypass | MFA bypass attempted | Authentication |
user.authentication.auth_via_mfa | MFA challenge completed | Authentication |
User Lifecycle Events
| Okta Event Type | Description | TOTAL Classification |
|---|---|---|
user.lifecycle.create | New user created | Admin |
user.lifecycle.activate | User account activated | Admin |
user.lifecycle.deactivate | User account deactivated | Admin |
user.lifecycle.suspend | User account suspended | Admin |
user.lifecycle.unsuspend | User account unsuspended | Admin |
user.lifecycle.delete.initiated | User deletion initiated | Admin |
user.account.lock | User account locked | Authentication |
user.account.unlock | User account unlocked | Admin |
user.account.unlock_token | Unlock token generated | Admin |
Group & Role Events
| Okta Event Type | Description | TOTAL Classification |
|---|---|---|
group.user_membership.add | User added to group | Admin |
group.user_membership.remove | User removed from group | Admin |
user.account.privilege.grant | Admin privilege granted to user | Admin |
user.account.privilege.revoke | Admin privilege revoked from user | Admin |
Application Access Events
| Okta Event Type | Description | TOTAL Classification |
|---|---|---|
app.user_management.assign_user_to_app | User assigned to application | Admin |
app.user_management.deactivate_user | User deactivated from application | Admin |
application.provision.user.push | User pushed to downstream app | Admin |
Security Events
| Okta Event Type | Description | TOTAL Classification |
|---|---|---|
security.threat.detected | Threat detected for a user by Okta ThreatInsight | Alert |
security.request.blocked | User’s request blocked by ThreatInsight | Alert |
Sample Source Event (Okta System Log)
TOTAL Normalized Event
The raw Okta event above is normalized into the TOTAL event schema:How This Feeds TOTAL
Persona Building
Okta is one of the highest-value signal sources for TOTAL. Every SSO authentication, MFA challenge, and session event contributes to a user’s digital routine baseline — what apps they access, when, from where, and how they authenticate. This forms the core identity anchor of each persona.Anomaly Detection
TOTAL’s behavioral engine uses Okta events to detect:- Impossible travel — authentication from geographically impossible locations within a short time window
- Credential compromise indicators — failed authentication bursts, password spray patterns, unusual SSO targets
- MFA fatigue attacks — rapid repeated MFA push notifications indicating an attacker trying to exhaust a user into approving
- Privilege escalation — unexpected admin role grants, group membership changes that expand access boundaries
- Account takeover signals — MFA factor resets, session anomalies, authentication from new devices or ISPs that deviate from the established persona

