Overview
The Session Launcher Edge Function generates authenticated session URLs for remote access to resources through various connection methods including Guacamole, TSPlus HTML5, RDP, SSH, and direct web access. Endpoint:/functions/v1/session-launcher
Authentication: Required (Authorization header with Supabase JWT)
Method: POST
Request
UUID of the resource to access from
resources tableConnection method:
guacamole, tsplus, rdp, ssh, or directResponse
Whether session launch was successful
Complete URL to access the resource
Unique session identifier (UUID)
Error message if request failed
Connection Types
Direct Connection
Returns the external URL for web applications or direct access. Type:direct
- Uses
metadata.external_urlor falls back toip_address - No session token required
- Suitable for web applications with their own authentication
Example
Guacamole Connection
Launches a session via Apache Guacamole through Pomerium proxy. Type:guacamole
URL Format:
pomerium_url- Pomerium base URL (orPOMERIUM_BASE_URLenv var)guacamole_connection_id- Guacamole connection identifier (defaults to resource ID)
TSPlus HTML5
Connects to TSPlus HTML5 remote desktop gateway. Type:tsplus
URL Format:
tsplus_url- TSPlus server URL (orTSPLUS_BASE_URLenv var)tsplus_user- Username for TSPlus (defaults to user email)target_host- Target host IP or hostname
RDP via Guacamole
Launches RDP session through Guacamole. Type:rdp
Required Metadata:
pomerium_url- Pomerium base URLrdp_connection_id- RDP connection identifier (defaults tordp-{resource_id})
SSH via Guacamole
Launches SSH session through Guacamole. Type:ssh
Required Metadata:
pomerium_url- Pomerium base URLssh_connection_id- SSH connection identifier (defaults tossh-{resource_id})
Session Token
The function generates a signed session token for authenticated connections:Token Payload
{base64_payload}.{sha256_hash}
Expiry: 1 hour from creation
Access Control
The function enforces access control before generating session URLs:- Authentication Check: Valid Supabase JWT required
- Access Verification: Queries
user_resource_accesstable - Status Check: Access must be
active - Resource Validation: Resource must exist and be accessible
Access Check
Audit Logging
All session launches are logged to theaudit_logs table:
Audit Log Entry
Environment Variables
TypeScript Interfaces
TypeScript
Example Responses
Success Response
Error Responses
Missing Authorization:Resource Metadata
Resource metadata should be stored as JSONB in theresources.metadata column:
Example Metadata
Security Considerations
- Token Signing: Implement proper HMAC-SHA256 signing for production
- Token Rotation: Tokens expire after 1 hour
- Access Validation: Every request validates current access status
- Audit Trail: All launches logged with connection details
- HTTPS Only: Session URLs should only be served over HTTPS
Related Tables
resources- Resource definitionsuser_resource_access- User access permissionsaudit_logs- Session launch audit trail