Tenant-level only
The playground is an app-tier tool, so it only exercises tenant-level sign-in. Testing your org's own console Okta setup means actually signing in at https://dev-console.nostackai.com with a real teammate account.
The playground app's Settings page has a dedicated section for each provider, so you can complete a real sign-in and confirm token exchange without writing any client code first.
Google (plain Google account)
Google with a company email (Google Workspace)
provider: google and the workspace's client id, and shows Google's button for that client id.Okta (or any tenant-configured OIDC provider)
Completing the sign-in
Either flow leaves you with a raw provider ID token in the oauthtoken field. Trigger the token exchange from there the same way a native login does — the playground calls GET /token with that value as the oauthtoken header and stores the resulting x-nostackai-token for every subsequent call.
What actually differs between the two, under the hood
Every sign-in token is verified before an app JWT is minted. A Google token is checked against Google's published keys and must have been issued to a client id a workspace registered; an Okta (or other tenant-configured OIDC) token is checked against that tenant's own okta_jwks_uri, issuer and expiry. A tampered, wrong-issuer or wrong-client token is rejected at that step.
Things worth deliberately breaking
- Sign in, then edit one character of the captured id_token before exchanging it — the exchange should fail, not silently succeed.
- Save a tenant SSO provider with an issuer that doesn't match the token's real issuer, then sign in — same expectation.
- Call POST /ssoconfig with an email whose domain no tenant has registered — expect a 404, not a guess at which tenant you meant.
- Call POST /ssoconfig with a missing or wrong client_id header — expect a 400/403, not a silent pass-through.
- Try registering the same email domain on a second tenant in the same org — expect a 409 on save, not two tenants silently sharing a domain.
- Try the app-tier Invite a Tenant User endpoint as a non-admin member of the tenant — expect a 403, not a silently-accepted invite.
The full scripted checklist for all of this — native identity, both OAuth providers, profile, tenant creation/join, invites, and file uploads — lives in the App User Auth QA sweep the platform team runs before each release.