CorpusIQ

OAuth Storage Quick Reference

Files Created

File Purpose
src/corpusiq/oauth_storage.py Core storage implementation
src/corpusiq/oauth_cleanup.py Background cleanup task
test_oauth_storage.py Test suite
.oauth_data/clients.json Registered OAuth clients
.oauth_data/codes.json Authorization codes
.oauth_data/tokens.json Access tokens

Key Features

Thread-safe file operations
Automatic expiration (codes: 10 min, tokens: 1 hour)
Background cleanup (runs every hour)
Client validation on all endpoints
One-time use authorization codes
Redirect URI validation

Quick Commands

Test Storage

$env:PYTHONPATH="$PWD\src"
python test_oauth_storage.py

View Registered Clients

Get-Content .oauth_data\clients.json | ConvertFrom-Json | ConvertTo-Json

View Active Tokens

Get-Content .oauth_data\tokens.json | ConvertFrom-Json | ConvertTo-Json

Backup OAuth Data

$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
Copy-Item .oauth_data .oauth_data_backup_$timestamp -Recurse

Clear All OAuth Data (Fresh Start)

Remove-Item .oauth_data -Recurse -Force
# Data will be recreated on next use

Expiration Times

Item Lifetime
Authorization Code 10 minutes
Access Token 1 hour
Client Secret 90 days

Security Notes

⚠️ Never commit .oauth_data/ (already in .gitignore)
⚠️ Backup regularly for production use
⚠️ Monitor logs for failed auth attempts

Storage Location

.oauth_data/ in your project root:

corpusiq-openai-sdk/
├── .oauth_data/          ← OAuth storage (ignored by git)
│   ├── clients.json      ← Registered clients
│   ├── codes.json        ← Authorization codes
│   └── tokens.json       ← Access tokens
├── src/
│   └── corpusiq/
│       ├── oauth_storage.py   ← Storage implementation
│       └── oauth_cleanup.py   ← Cleanup task
└── test_oauth_storage.py      ← Tests

Next: Test with ChatGPT

  1. Make sure your server is running
  2. Follow CHATGPT_INTEGRATION_STEPS.md
  3. Watch server logs for OAuth flows
  4. Check .oauth_data/ for registered clients

Your authorization server: https://mcp.sqltrainer.com