calendar-plugin/requirements/authentication.md

2.7 KiB

Authentication Requirements

Purpose

Define authentication behavior for admin UI, API, CalDAV, and ICS access.

Scope

This document covers:

  • Credential types and login flows
  • Session/token behavior
  • Password rules and recovery
  • Abuse controls and lockout behavior

Credential Domains

Authentication domains:

  • WordPress admin authentication (for plugin admin pages)
  • Plugin CalDAV user authentication (for CalDAV access)
  • API authentication (WordPress auth for admin API and plugin user auth where relevant)

Credentials must not be shared in plaintext between domains.

Admin UI Authentication

  • Admin pages (Users, Setup) require valid WordPress authenticated session.
  • Capability checks are enforced after authentication.
  • Non-authenticated access redirects/fails using WordPress-standard behavior.

CalDAV Authentication

  • CalDAV endpoints require authenticated plugin CalDAV user credentials over HTTPS.
  • Supported first-pass mechanism: HTTP Basic over TLS against plugin user store.
  • Password verification must use secure hash comparison.
  • Unverified or non-approved (pending_approval) users cannot authenticate.

API Authentication

  • Admin API endpoints require WordPress-authenticated context plus nonce/CSRF protections where cookie auth is used.
  • User lifecycle endpoints may allow public access only where explicitly required (register, verify, forgot/reset) with abuse controls.
  • Authenticated user endpoints require either WordPress user context or plugin user context as documented per endpoint.

Password Policy

  • Minimum length: 8 characters.
  • Passwords must be stored only as secure hashes (never reversible encryption).
  • Password reset rotates credentials immediately.

Token Policy

  • Verification and reset tokens must be single-use, random, and time-limited.
  • Token reuse must fail deterministically.
  • Expired tokens must produce actionable but non-sensitive error messaging.

Session and Revocation

  • After password reset, prior login sessions/tokens for that identity should be invalidated.
  • Users not in active status lose access immediately for new requests.

Abuse Controls

  • Rate limiting required for:
    • registration
    • verification attempts
    • forgot/reset flows
    • login attempts
  • Lockout/backoff behavior must be documented in operational docs.

Logging and Privacy

  • Authentication failures should be logged with timestamp and source context.
  • Logs must not contain plaintext passwords or tokens.
  • Responses must avoid user enumeration details.

Verification Requirements

Acceptance should verify:

  • Valid credentials authenticate to intended surfaces only.
  • Invalid credentials fail safely.
  • Pending/unverified users are denied.
  • Password reset and token expiry behavior works as specified.