Appendix
Last updated
Last updated
Oten IDP provides OpenID Connect Discovery endpoints that automatically provide all configuration information your application needs. This is the recommended way to get configuration details.
Instead of hardcoding endpoints, fetch configuration dynamically:
The discovery endpoint returns a JSON object with the following structure:
If you prefer to configure endpoints manually (not recommended), here are the static endpoints:
Based on the discovery endpoint, Oten IDP currently supports:
The following claims are available in ID tokens and UserInfo endpoint:
Additional scopes may be added in future releases:
Complete Reference: See Error Codes Reference for comprehensive error documentation with troubleshooting guides.
Most Common Errors:
Authorization Endpoint:
Token Endpoint:
JAR (JWT-Secured Authorization Request) Requirements:
IP Address Validation (Client Credentials Grant):
Client Type Enforcement:
issuer
Identity provider identifier
https://account.[env].oten.dev or https://account.oten.com
authorization_endpoint
OAuth authorization URL
/v1/oauth/authorize
token_endpoint
Token exchange URL
/v1/oauth/token
jwks_uri
Public keys for token verification
/.well-known/jwks.json
response_types_supported
Supported OAuth response types
["code"]
subject_types_supported
Subject identifier types
["public"]
id_token_signing_alg_values_supported
ID token signing algorithms
["EdDSA"]
scopes_supported
Available OAuth scopes
["openid", "profile", "email"]
token_endpoint_auth_methods_supported
Client authentication methods
["client_secret_post"]
claims_supported
Available user claims
["sub", "name", "email"]
code_challenge_methods_supported
PKCE challenge methods
["S256", "plain"]
grant_types_supported
Supported OAuth grant types
["authorization_code", "refresh_token"]
Technical Support: support@oten.dev
Developer Portal: https://developer.oten.com (Coming Soon)
API Documentation: https://docs.oten.com (Coming Soon)
Status Page: https://status.oten.com (Coming Soon)
Authorization endpoint: 10 requests/minute per IP
Token endpoint: 60 requests/minute per client
Validation endpoint: 1000 requests/minute per client
User Info endpoint: 100 requests/minute per token
Authorization endpoint: 20 requests/minute per IP
Token endpoint: 120 requests/minute per client
Validation endpoint: 2000 requests/minute per client
User Info endpoint: 200 requests/minute per token
HS256: HMAC with SHA-256 (uses client_secret)
EdDSA: Edwards-curve Digital Signature with Ed25519
EdDSA: Edwards-curve Digital Signature (for ID tokens and access tokens)
S256: SHA256 hash of code verifier (recommended)
plain: Plain text code verifier (not recommended for production)
client_secret_post: Client credentials in request body (default)
code: Authorization code flow (only supported type)
authorization_code: Standard OAuth 2.0 authorization code flow
refresh_token: Token refresh using refresh tokens
openid: Required for OpenID Connect flow - enables ID token issuance
profile: Access to basic profile information (name, etc.)
email: Access to user's email address
sub: Subject identifier - unique user ID
name: User's full name
email: User's email address
openid
sub
Minimum required scope, provides user identifier
profile
sub, name
Adds user's display name
email
sub, email
Adds user's email address
phone: Phone number access
offline_access: Refresh token capability
workspace: Workspace information access
invalid_request
Authorization
Missing request parameter or JAR expired
Implement/regenerate JAR
invalid_request_object
Authorization
Invalid JAR token
Fix JAR implementation
invalid_grant
Token
Authorization code/refresh token invalid
Restart auth flow
invalid_client
Token
Client auth failed or IP not whitelisted
Check credentials/IP
unauthorized_client
Token
Client not authorized for grant type
Use correct client type
server_error
Both
Internal server error
Retry with backoff
Always validate state parameter in authorization callbacks
Implement retry logic for server_error and temporarily_unavailable
Don't retry for invalid_grant, invalid_client, or configuration errors
Log detailed errors server-side for debugging
Provide user-friendly messages based on error codes
Either request OR request_uri parameter is REQUIRED
Cannot provide both request and request_uri parameters simultaneously
Missing request parameter results in invalid_request with message "Request parameter is required"
IP address validation is enforced when whitelist is configured
Requests from non-whitelisted IPs receive invalid_client error
Missing IP address triggers security warnings
Client credentials grant restricted to confidential clients only
Public clients receive unauthorized_client error
Client type validation occurs before credential verification
Error Codes Reference: Complete error documentation
Common Errors: Step-by-step troubleshooting
OAuth Error Handling: Implementation examples
PKCE: Required for all public clients, recommended for confidential clients
JAR: Required for confidential clients only, forbidden for public clients
HTTPS: Required for all endpoints (except localhost in development)
State Parameter: Required to prevent CSRF attacks
Authorization Code: 10 minutes
Access Token: 1 hour (configurable)
Refresh Token: 30 days (configurable)
ID Token: 1 hour
JAR Token: 5 minutes maximum
Application name
Application type (Web App, SPA, Mobile App, Server-to-Server)
Redirect URIs (must be HTTPS except localhost)
Required scopes
JAR signing method (HS256 or EdDSA)
Application description
Application logo URL
Terms of service URL
Privacy policy URL
JWKS URI (for EdDSA)