2.8 KiB
2.8 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a web-based Markdown to HTML converter application with secure Microsoft Azure AD authentication. The application requires authentication to access any functionality and validates tokens server-side for security.
Architecture
The application follows a secure client-server architecture with proper authentication:
- Frontend: Vanilla JavaScript with HTML/CSS, MSAL.js for authentication
- Backend: PHP with server-side JWT token validation
- Authentication: Microsoft Azure AD/Entra ID with PKCE flow and httpOnly cookies
- Security: Server-side authentication gate, JWT validation on all requests
- Markdown Processing: Client-side using marked.js library
Key Files
Authentication & Security
AuthMiddleware.php- Authentication middleware for protecting endpointsJWTValidator.php- Custom JWT validation class for Azure AD tokensauth.php- Authentication endpoint for login/logout/status operations
Application Core
index.php- Main application page with server-side authentication requiredprocess.php- Server-side endpoint with authentication protectionconfig.php- PHP configuration and error reportingjs/script.js- Enhanced client-side JavaScript with better error handlingcss/style.css- Application styling with Montserrat font
Authentication Flow
- Page Access: All pages require authentication via
AuthMiddleware->requireAuth() - Login Process: MSAL popup → token exchange → httpOnly cookie → page reload
- Token Validation: JWT validated against Azure AD public keys on every request
- Logout Process: Clear httpOnly cookie + MSAL logout → redirect
Authentication Configuration
- Client ID:
9079054c-9620-4757-a256-23413042f1ef - Tenant ID:
e519c2e6-bc6d-4fdf-8d9c-923c2f002385 - Flow: Authorization Code with PKCE (popup-based)
- Token Storage: httpOnly cookies for security
- Validation: Stateless JWT validation on each request
Security Features
- Server-side authentication gate on all pages and endpoints
- JWT signature validation using Azure AD public keys
- httpOnly cookies prevent XSS token theft
- Proper error handling with user-friendly messages
- No client-side security dependencies (removed CSS-based hiding)
- Token expiration and claim validation
Development Notes
- Dependencies: No build process required - uses CDN resources
- PHP Required: Full functionality requires PHP server with OpenSSL support
- Testing: Authentication can be tested locally with proper redirect URI configuration
- Error Handling: Authentication errors show clear messages to users
- Modern Features: Uses modern clipboard API with fallback for copying HTML