Why the proxy pattern actually fits here
Because Scienter is self-hosted, authentication can be enforced in front of it by infrastructure you already run and already trust. For a single-tenant internal deployment this is not a workaround — it is the same architecture most internal tools use, and it keeps identity in your IdP where it belongs.Setting it up with Okta
1
Create an OIDC app in Okta
Create a Web application with the authorization code flow. Set the redirect URI to your proxy’s callback (for
oauth2-proxy, https://your-host/oauth2/callback).Assign the Okta groups that should have access.2
Put the proxy in front of both ports
The dashboard (
3101) and the engine (8777) are separate listeners. Both need covering — protecting only the dashboard leaves the engine’s data endpoints open.3
Bind the services to loopback
The proxy should be the only thing that can reach them:Confirm neither service is reachable on a public interface after the proxy is deployed.
4
Set the engine's tunnel token as a second layer
state/config.json
5
Map Okta groups to platform roles manually
Include workspace membership in your offboarding checklist. See Org accounts.
What this pattern gives you, and what it does not
That last row is the significant limitation. The audit log records the application’s actor, not the Okta identity, so correlating an audit entry to an employee requires joining on the application’s user record.
Equivalent providers
The same pattern works with Entra ID, Google Workspace, or any OIDC provider. Common proxies: Cloudflare Access,oauth2-proxy, AWS ALB with OIDC, Pomerium, Teleport.
Scienter publishes impersonal market signals of general and regular circulation. Nothing here is investment, legal, or tax advice, or a recommendation to buy, sell, or hold any asset. Scienter is not a registered investment adviser or broker-dealer. Trading digital assets can result in the total loss of your funds — see Disclaimers for the full text.