Implements complete W3C IndieAuth Section 3.2 client identifier validation including: - Fragment rejection - HTTP scheme support for localhost/loopback only - Username/password component rejection - Non-loopback IP address rejection - Path traversal prevention (.. and . segments) - Hostname case normalization - Default port removal (80/443) - Path component enforcement All 75 validation tests passing with 99% coverage. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
10 KiB
Design: Phase 5c - Real Client Testing
Date: 2025-11-24 Author: Claude (Architect Agent) Status: Ready for Implementation Version: 1.0.0-rc.8
Purpose
Validate that the Gondulf IndieAuth server successfully interoperates with real-world IndieAuth clients, confirming W3C specification compliance and production readiness for v1.0.0 release.
Specification References
- W3C IndieAuth: Section 5.2 (Client Behavior)
- OAuth 2.0 RFC 6749: Section 4.1 (Authorization Code Flow)
- IndieAuth Discovery: https://indieauth.spec.indieweb.org/#discovery
Design Overview
This phase focuses on testing the deployed Gondulf server with actual IndieAuth clients to ensure real-world compatibility. The DNS verification bug fix in rc.8 has removed the last known blocker, making the system ready for comprehensive client testing.
Testing Strategy
Prerequisites
-
DNS Configuration Verified
- Record exists:
_gondulf.thesatelliteoflove.comTXT "gondulf-verify-domain" - Record is queryable from production server
- TTL considerations understood
- Record exists:
-
Production Deployment
- v1.0.0-rc.8 container deployed
- HTTPS working with valid certificate
- Health check returning 200 OK
- Logs accessible for debugging
-
Test Environment
- Production URL: https://gondulf.thesatelliteoflove.com
- Domain to authenticate: thesatelliteoflove.com
- Email configured for verification codes
Client Testing Matrix
Tier 1: Essential Clients (Must Pass)
1. IndieAuth.com Test Client
URL: https://indieauth.com/ Why Critical: Reference implementation test client Test Flow:
- Navigate to https://indieauth.com/
- Enter domain: thesatelliteoflove.com
- Verify discovery finds Gondulf endpoints
- Complete authentication flow
- Verify token received
Success Criteria:
- Discovery succeeds
- Authorization initiated
- Email code works
- Token exchange successful
- Profile information returned
2. IndieWebify.me
URL: https://indiewebify.me/ Why Critical: Common IndieWeb validation tool Test Flow:
- Use Web Sign-in test
- Enter domain: thesatelliteoflove.com
- Complete authentication
- Verify success message
Success Criteria:
- Endpoints discovered
- Authentication completes
- Validation passes
Tier 2: Real-World Clients (Should Pass)
3. Quill (Micropub Editor)
URL: https://quill.p3k.io/ Why Important: Popular Micropub client Test Flow:
- Sign in with domain
- Complete auth flow
- Verify token works (even without Micropub endpoint)
Success Criteria:
- Authentication succeeds
- Token issued
- No breaking errors
4. Webmention.io
URL: https://webmention.io/ Why Important: Webmention service using IndieAuth Test Flow:
- Sign up/sign in with domain
- Complete authentication
- Verify account created/accessed
Success Criteria:
- Auth flow completes
- Service recognizes authentication
Tier 3: Extended Testing (Nice to Have)
5. Indigenous (Mobile App)
Platform: iOS/Android Why Useful: Mobile client testing Note: Optional based on availability
6. Micropub Rocks Validator
URL: https://micropub.rocks/ Why Useful: Comprehensive endpoint testing Note: Tests auth even without Micropub
Test Execution Protocol
For Each Client Test
Pre-Test Setup
# Monitor production logs
docker logs -f gondulf --tail 50
# Verify DNS record
dig TXT _gondulf.thesatelliteoflove.com
# Check server health
curl https://gondulf.thesatelliteoflove.com/health
Test Execution
-
Document Initial State
- Screenshot client interface
- Note exact domain entered
- Record timestamp
-
Discovery Phase
- Verify client finds authorization endpoint
- Check logs for discovery requests
- Note any errors or warnings
-
Authorization Phase
- Verify redirect to Gondulf
- Check domain verification flow
- Confirm email code delivery
- Document consent screen
-
Token Phase
- Verify code exchange
- Check token generation logs
- Confirm client receives token
-
Post-Auth Verification
- Verify client shows authenticated state
- Test any client-specific features
- Check for error messages
Test Documentation
Create test report: /docs/reports/2025-11-24-client-testing-[client-name].md
# Client Testing Report: [Client Name]
**Date**: 2025-11-24
**Client**: [Name and URL]
**Version**: v1.0.0-rc.8
**Tester**: [Name]
## Test Results
### Summary
- **Result**: PASS/FAIL
- **Duration**: XX minutes
- **Issues Found**: None/Listed below
### Discovery Phase
- Endpoints discovered: YES/NO
- Discovery method: Link headers/HTML tags/.well-known
- Issues: None/Description
### Authorization Phase
- Redirect successful: YES/NO
- Domain verification: DNS/Email/Pre-verified
- Email code received: YES/NO (time: XX seconds)
- Consent shown: YES/NO
- Issues: None/Description
### Token Phase
- Code exchange successful: YES/NO
- Token received: YES/NO
- Token format correct: YES/NO
- Issues: None/Description
### Logs
[Relevant log entries]
### Screenshots
[Attach if relevant]
### Recommendations
[Any improvements needed]
Error Scenarios to Test
1. Invalid Redirect URI
- Modify redirect_uri after authorization
- Expect: Error response
2. Expired Authorization Code
- Wait >10 minutes before token exchange
- Expect: Error response
3. Wrong Domain
- Try authenticating with different domain
- Expect: Domain verification required
4. Invalid State Parameter
- Modify state parameter
- Expect: Error response
Performance Validation
Response Time Targets
- Discovery: <500ms
- Authorization page load: <1s
- Email delivery: <30s
- Token exchange: <500ms
Concurrency Test
- Multiple clients simultaneously
- Verify no session conflicts
- Check memory usage
Acceptance Criteria
Must Pass (P0)
- IndieAuth.com test client works end-to-end
- IndieWebify.me validation passes
- No critical errors in logs
- Response times within targets
- Security headers present
Should Pass (P1)
- At least one Micropub client works
- Webmention.io authentication works
- Error responses follow OAuth 2.0 spec
- Concurrent clients handled correctly
Nice to Have (P2)
- Mobile client tested
- 5+ different clients tested
- Performance under load validated
Security Considerations
During Testing
- Use Production Domain: Test with actual domain, not localhost
- Monitor Logs: Watch for any security warnings
- Check Headers: Verify security headers on all responses
- Test HTTPS: Ensure no HTTP fallback
Post-Testing
- Review Logs: Check for any suspicious activity
- Rotate Secrets: If any were exposed during testing
- Document Issues: Any security concerns found
Rollback Plan
If critical issues found during testing:
-
Immediate Response
- Document exact failure
- Capture all logs
- Screenshot error states
-
Assessment
- Determine if issue is:
- Configuration (fix without code change)
- Minor bug (rc.9 candidate)
- Major issue (requires design review)
- Determine if issue is:
-
Action
- Configuration: Fix and retest
- Minor bug: Create fix design, implement rc.9
- Major issue: Halt release, return to design phase
Success Metrics
Quantitative
- Client compatibility: ≥80% (4 of 5 tested clients work)
- Response times: All <1 second
- Error rate: <1% of requests
- Uptime during testing: 100%
Qualitative
- No confusing UX issues
- Clear error messages
- Smooth authentication flow
- Professional appearance
Timeline
Day 1: Core Testing (4-6 hours)
- Deploy rc.8 (30 minutes)
- Verify DNS (15 minutes)
- Test Tier 1 clients (2 hours)
- Test Tier 2 clients (2 hours)
- Document results (1 hour)
Day 2: Extended Testing (2-4 hours)
- Error scenario testing (1 hour)
- Performance validation (1 hour)
- Additional clients (1 hour)
- Final report (1 hour)
Day 3: Release Decision
- Review all test results
- Go/No-Go decision
- Tag v1.0.0 or create rc.9
Output Artifacts
Required Documentation
/docs/reports/2025-11-24-client-testing-summary.md- Overall results/docs/reports/2025-11-24-client-testing-[name].md- Per-client reports/docs/architecture/v1.0.0-compatibility-matrix.md- Client compatibility table
Release Artifacts (If Proceeding)
- Git tag:
v1.0.0 - GitHub release with notes
- Updated README with tested clients
- Announcement blog post (optional)
Decision Tree
Start Testing
|
v
DNS Verification Works?
|
+-- NO --> Fix DNS, restart
|
+-- YES
|
v
IndieAuth.com Works?
|
+-- NO --> Critical failure, create rc.9
|
+-- YES
|
v
IndieWebify.me Works?
|
+-- NO --> Investigate spec compliance
|
+-- YES
|
v
2+ Other Clients Work?
|
+-- NO --> Document issues, assess impact
|
+-- YES
|
v
RELEASE v1.0.0
Post-Release Monitoring
After v1.0.0 release:
First 24 Hours
- Monitor error rates
- Check memory usage
- Review user reports
- Verify backup working
First Week
- Track authentication success rate
- Collect client compatibility reports
- Document any new issues
- Plan v1.1.0 features
First Month
- Analyze usage patterns
- Review security logs
- Optimize performance
- Gather user feedback
Conclusion
This testing phase is the final validation before v1.0.0 release. With the DNS bug fixed in rc.8, the system should be fully functional. Successful completion of these tests will confirm production readiness and W3C IndieAuth specification compliance.
The structured approach ensures comprehensive validation while maintaining focus on the most critical clients. The clear success criteria and rollback plan provide confidence in the release decision.