Comprehensive Authentication Guide

A practitioner’s reference for authentication security — protocols, mechanisms, vulnerabilities, exploitation techniques, and defense strategies. Covers traditional and modern authentication methods from enterprise to web applications. Compiled from 55 research sources.


Table of Contents

  1. Fundamentals
  2. Password-Based Authentication
  3. Multi-Factor Authentication (MFA)
  4. OAuth 2.0 & OpenID Connect
  5. SAML & Enterprise SSO
  6. Modern Authentication (FIDO, WebAuthn, Passkeys)
  7. JWT Security
  8. Session Management
  9. Authentication Bypasses & Attacks
  10. Implementation Security
  11. Testing & Verification

1. Fundamentals

Core Concepts

TermDefinitionSecurity Impact
Authentication (AuthN)Process of verifying identity claimsFoundation of access control
Digital IdentityUnique representation in online contextBasis for authorization decisions
Identity ProofingBinding digital identity to real personKYC/compliance requirement
Session ManagementMaintaining state across requestsCritical for web application security
Non-Human Identity (NHI)API keys, OAuth tokens, service accountsPath of least resistance for attackers — not bound by MFA or IP restrictions

Authentication Factors

Factor TypeExamplesVulnerability Classes
Something You KnowPasswords, PINs, security questionsBrute force, credential stuffing, social engineering
Something You HaveHardware tokens, mobile apps, SMSSIM swapping, device theft, malware
Something You AreBiometrics (fingerprint, face, voice)Spoofing, template theft, privacy concerns

2. Password-Based Authentication

Password Strength Requirements

RequirementNIST SP800-63B StandardSecurity Rationale
Minimum Length8 chars (with MFA), 14+ (without MFA)Increases brute force difficulty
Maximum LengthAt least 64 charactersPrevents artificial length limits
Character CompositionNo mandatory complexity rulesAvoid predictable patterns
Dictionary CheckingBlock common passwordsPrevent credential stuffing

Common Password Vulnerabilities

ATTACK VECTORS:
├── Credential Stuffing
│   ├── Breach databases (HaveIBeenPwned)
│   ├── Password reuse across sites
│   └── Automated login attempts
├── Brute Force Attacks
│   ├── Dictionary attacks
│   ├── Rule-based mutations
│   └── Hybrid attacks
└── Password Reset Flows
    ├── Weak reset tokens
    ├── Token reuse vulnerabilities
    ├── Account enumeration
    └── Email interception for ATO (Post SMTP CVE-2025-24000 — Subscriber+ reads reset emails via broken REST API permissions)

Secure Implementation Patterns

Security ControlImplementationBypass Techniques
Rate LimitingProgressive delays, account lockoutsIP rotation, distributed attacks
CAPTCHAHuman verification challengesOCR bypass, solving services
Password Hashingbcrypt, scrypt, Argon2Rainbow tables (if salts weak)
Breach DetectionMonitor for credential exposurePrivate/corporate breaches
REST API AuthRole-based permission callbacks (not just is_user_logged_in())Subscriber-level access to admin endpoints

3. Multi-Factor Authentication (MFA)

MFA Implementation Types

MethodSecurity LevelUser ExperienceAttack Vectors
SMS OTPLowHigh frictionSIM swapping, SS7 attacks
TOTP AppsMediumMedium frictionDevice compromise, social engineering
Push NotificationsMedium-HighLow frictionMFA fatigue, device takeover
Hardware TokensHighMedium frictionPhysical theft, supply chain
BiometricsHighLow frictionSpoofing, template extraction
Passwordless (FastPass/FIDO2)Very HighLow frictionDevice compromise (Okta Terrify), endpoint proxy

MFA Bypass Techniques

BYPASS METHODS:
├── Social Engineering
│   ├── MFA fatigue (push spam)
│   ├── Vishing (voice phishing)
│   └── SIM swapping
├── Technical Bypasses
│   ├── Session fixation
│   ├── MFA enrollment abuse
│   ├── Backup code exploitation
│   └── Race conditions
├── Adversary-in-the-Middle (AiTM)
│   ├── Real-time phishing (Evilginx, Tycoon 2FA, Evilproxy, Mamba 2FA)
│   ├── Session cookie interception and replay
│   ├── Token replay
│   └── Cloudflare Workers as transparent proxy (IOActive research)
├── Authentication Downgrade Attacks
│   ├── JSON config manipulation — flip FIDO2 isDefault:false, push isDefault:true
│   ├── CSS injection to hide passkey/FIDO2 UI options
│   ├── Browser User-Agent spoofing (e.g., Safari on Windows) to trigger Entra ID fallback
│   └── WebAuthn immediate mediation abuse for non-WebAuthn fallback steering
├── Conditional Access Policy (CAP) Bypasses
│   ├── IP whitelisting bypass (VPN, Zscaler pivoting)
│   ├── Geo-whitelisting bypass (VPN/location spoofing)
│   ├── User-agent whitelisting bypass (custom UA strings)
│   ├── Cloud tooling bypasses (ROADtools, BloodHound, AADInternals)
│   └── Non-MFA hosts (legacy protocols, password reset portals)
└── Machine-Based Attacks
    ├── Session token theft from memory (Cobalt Strike BOFs)
    ├── OTP keylogging / seed QR code theft
    ├── Okta Terrify — extract passwordless keys from compromised endpoint
    └── Stolen/unlocked devices

Phishing-as-a-Service (PhaaS) Kits

KitTechniqueDetection Evasion
EvilginxOpen-source reverse proxy AiTMDefault LetsEncrypt certs, 8-char URL paths, TLS fingerprint differs from target
Tycoon 2FAPhaaS MFA bypassDynamically obfuscated JS, phishing URL gating, IP/UA filtering
EvilproxyPhaaS MFA bypassTemplates for popular targets, bot detection
Mamba 2FAPhaaS MFA bypassAnti-crawler delays, redirect to benign pages
Cloudflare WorkersServerless transparent proxy (IOActive PoC)Zero forensic footprint, trusted CDN IPs, ephemeral execution

Implementation Security Checklist

ControlVerificationCommon Mistakes
Enrollment SecurityVerify primary auth before MFA setupAllow MFA changes without re-auth
Backup MechanismsSecure recovery codesWeak backup code generation
Device TrustRisk-based authenticationUnlimited device trust
Rate LimitingThrottle MFA attemptsNo limits on failed attempts
Eliminate FallbacksNo SMS/TOTP/push if FIDO2 deployedMixed-mode policies allow downgrade
Audit MFA LogsDetect new MFA device registration post-compromiseMissing persistence detection

4. OAuth 2.0 & OpenID Connect

OAuth 2.0 Flow Types

Grant TypeUse CaseSecurity Considerations
Authorization CodeServer-side web appsMost secure, requires PKCE for SPAs
Authorization Code + PKCEPublic clients, SPAsPrevents authorization code injection
ImplicitLegacy SPAsDeprecated, token in URL fragment
Client CredentialsService-to-serviceNo user context, secure storage critical
Device CodeIoT/limited input devicesPhishing risk during user approval

Common OAuth Vulnerabilities

VulnerabilityAttack VectorMitigation
Authorization Code InterceptionRedirect URI manipulationStrict redirect validation
State Parameter MissingCSRF attacksCryptographically strong state
Scope EscalationPrivilege elevationMinimal scope principle
Client ImpersonationStolen client credentialsClient authentication
OAuth Parameter InjectionInject arbitrary params (redirect_uri, scope) into auth flowInput sanitization (Okta auth0/nextjs-auth0 vuln)
Implicit Flow Token TheftAccess token in URL fragment, referer leakageMigrate to Authorization Code + PKCE
CSRF via Missing StateAttacker injects own authorization code into victim sessionState parameter enforcement
Redirect URI BypassPattern-matching bypass (%2f%2f, %5c%5c, %3F, %23, port injection)Exact string match, no wildcards
Credential Leakage via RefererAuthorization code or token in Referer header to third-party contentNo third-party resources on callback pages
Non-Human Identity AbuseCompromised OAuth tokens with overly broad scopes, null expiry refresh tokensScope minimization, token rotation, vendor vetting

Dynamic Client Registration SSRF (PortSwigger Research)

SSRF ATTACK SURFACE VIA DYNAMIC REGISTRATION:
├── logo_uri — Server fetches logo image → SSRF on /authorize
├── jwks_uri — Server fetches JWK set for client_assertion validation → Blind SSRF
├── sector_identifier_uri — Server fetches redirect_uri list → SSRF on registration or authorization
├── request_uris — Whitelisted request_uri values → SSRF on /authorize via request_uri param
│   (Even without dynamic registration, test request_uri on /authorize directly)
└── Discovery: GET /.well-known/openid-configuration
    ├── registration_endpoint
    ├── request_uri_parameter_supported
    └── require_request_uri_registration

CVE-2021-26715: SSRF via logo_uri in MITREid Connect
ForgeRock OpenAM: SSRF via request_uri + redirect_uri Session Poisoning

OAuth Security Implementation

SECURITY CONTROLS:
├── Authorization Server
│   ├── Strict redirect URI validation (exact match, no wildcards)
│   ├── State parameter enforcement
│   ├── PKCE for public clients
│   ├── Short-lived authorization codes (single use)
│   └── Disable Dynamic Client Registration if not needed
├── Resource Server
│   ├── Token introspection
│   ├── Scope validation
│   ├── Audience verification
│   └── Rate limiting
├── Client Application
│   ├── Secure token storage (never in browser history/URL)
│   ├── Token refresh handling with expiry
│   ├── CSRF protection via state parameter
│   ├── PKCE code_verifier/code_challenge
│   └── TLS everywhere
└── Non-Human Identity Governance
    ├── Monitor OAuth app registrations and consent grants
    ├── Audit token scopes vs actual usage
    ├── Enforce refresh token expiry (no null expiry)
    └── Vendor breach monitoring for third-party OAuth apps

OAuth Pentesting Checklist (Authorization Code Grant)

Test CaseWhat to CheckImpact
Redirect URI ValidationChange redirect_uri to attacker domain, test pattern bypassesToken/code theft
State ParameterRemove or reuse state, test CSRFAccount hijacking
Code ReuseReplay authorization codeSession hijacking
Client Secret ExposureCheck JS source, mobile app binariesFull OAuth flow compromise
Scope ManipulationRequest elevated scopesPrivilege escalation
Token in URL/HistoryCheck if access_token appears in URL fragment or browser historyToken theft
Referer LeakageCheck callback pages for third-party resource loadsCode/token leakage
request_uri SSRFSupply attacker URL in request_uri param on /authorizeServer-side request forgery

5. SAML & Enterprise SSO

SAML Attack Surface

ComponentAttack VectorsSecurity Controls
Identity Provider (IdP)XML signature bypass, SAML injectionStrong XML validation, signature verification
Service Provider (SP)Assertion replay, audience restriction bypass, parser differential exploitationStrict temporal/audience checks, single XML parser
SAML AssertionsXXE, signature wrapping (XSW), attribute pollutionSecure XML parsing, validation
MetadataMetadata spoofing, certificate substitutionOut-of-band verification
FortiCloud SSOCrafted SAMLResponse to /remote/saml/login (CVE-2025-59718)Disable FortiCloud SSO until patched

XML Signature Wrapping (XSW) Attacks — Deep Dive

XSW ATTACK TAXONOMY:
├── Classic XSW
│   ├── Move signed element, inject forged element in original location
│   ├── Application processes forged data, signature validates against hidden original
│   └── 8+ documented XSW variants in USENIX "On Breaking SAML" research
├── Parser Differential Exploits
│   ├── ruby-saml: REXML + Nokogiri dual parser → different XPath results
│   │   ├── CVE-2025-25291 / CVE-2025-25292 (ruby-saml < 1.18.0)
│   │   ├── CVE-2024-45409 (ruby-saml signature bypass by ahacker1)
│   │   └── Exploited in GitLab — sign in as any user with single valid signature
│   ├── Attribute pollution — parser-specific attribute handling differences
│   ├── REXML namespace confusion — without DTDs
│   └── Void Canonicalization — novel technique (PortSwigger "The Fragile Lock")
├── Signature Exclusion / Comment Injection
│   ├── Removing Signature element entirely
│   ├── XML comment injection between signature elements
│   └── Bypassing signature validation in libraries that don't enforce presence
├── Encrypted Assertion Bypass
│   ├── GitHub Enterprise: signature extracted pre-decryption, inner assertion signature never validated
│   │   ├── CVE-2024-4985 / CVE-2024-9487
│   │   └── Forge assertion inside encrypted envelope, only outer response signature checked
│   └── samlify (Node.js): CVE-2025-47949 — Signature Wrapping with unsigned assertion extraction
└── Improper Cryptographic Signature Verification
    ├── FortiGate FortiCloud SSO: CVE-2025-59718 / CVE-2025-59719 (CVSS 9.8)
    │   ├── SAML response signature not validated → forged SAMLResponse grants super_admin
    │   ├── Endpoint: POST /remote/saml/login
    │   ├── Actively exploited in the wild (Arctic Wolf, CISA KEV)
    │   └── Affects FortiOS, FortiProxy, FortiSwitchManager, FortiWeb
    └── CWE-347 pattern: system checks temporal claims but skips signature verification

Real-World SAML CVEs

CVEProductVulnerabilityImpact
CVE-2025-59718FortiGate FortiCloud SSOMissing SAML signature validationUnauthenticated admin access
CVE-2025-59719FortiGate FortiCloud SSORelated bypass variantUnauthenticated admin access
CVE-2025-25291ruby-samlParser differential (REXML/Nokogiri)Sign in as any user
CVE-2025-25292ruby-samlParser differential (REXML/Nokogiri)Sign in as any user
CVE-2024-45409ruby-samlSignature bypassAuthentication bypass
CVE-2024-4985GitHub EnterpriseEncrypted assertion signature skipSAML SSO bypass
CVE-2024-9487GitHub EnterpriseFollow-up encrypted assertion fixSAML SSO bypass
CVE-2025-47949samlify (Node.js)Signature Wrapping — unsigned assertion consumedAuthentication bypass, user impersonation

SAML Bug Hunting Methodology

SAML TESTING WORKFLOW (using SAML Raider):
├── Setup
│   ├── Install SAML Raider Burp extension
│   ├── Import/clone X.509 certificates
│   └── Capture SAML Response in proxy
├── Signature Wrapping Tests
│   ├── Apply all 8 XSW variants from SAML Raider
│   ├── Test with both signed Response and signed Assertion
│   └── Test with cloned/self-signed certificates
├── Signature Removal
│   ├── Remove Signature element entirely
│   ├── Remove SignatureValue content
│   └── Test if SP accepts unsigned assertions
├── Assertion Manipulation
│   ├── Modify NameID to target user
│   ├── Modify role/group attributes
│   ├── Change audience restriction
│   └── Alter temporal conditions (NotBefore/NotOnOrAfter)
├── XML-Level Attacks
│   ├── XXE injection in SAML Response
│   ├── XML comment injection in NameID
│   ├── DTD-based attacks (if not blocked)
│   └── Namespace confusion / attribute pollution
└── Certificate Tests
    ├── Clone IdP certificate, self-sign assertion
    ├── Test if SP validates certificate chain
    └── Test if SP accepts any valid signature (not just from trusted IdP)

6. Modern Authentication (FIDO, WebAuthn, Passkeys)

FIDO2/WebAuthn Architecture

ComponentFunctionSecurity Properties
AuthenticatorPrivate key storage, user verificationHardware-backed, phishing-resistant
Client (Browser)Protocol handling, user interactionSandboxed execution, origin binding
Relying PartyCredential management, verificationChallenge-response validation
FIDO ServerRegistration/authentication logicCryptographic verification

Passkey Types and Security Properties

TypeStorageSecurity LevelEnterprise Suitability
Device-Bound (Hardware Key)YubiKey, security key hardwareHighest — non-exportable, hardware-backedRecommended for enterprise
Synced (Multi-Device)iCloud Keychain, Google Password ManagerMedium — inherits cloud account riskConsumer use only; not recommended for enterprise

Synced Passkey Risks

SYNCED PASSKEY ATTACK SURFACE:
├── Cloud Account Compromise
│   ├── iCloud/Google account takeover → all synced passkeys compromised
│   ├── Recovery workflow abuse → authorize new device with stolen credentials
│   └── Personal cloud account on corporate device → passkeys leak to personal devices
├── Authentication Downgrade
│   ├── AiTM proxy spoofs unsupported browser → Entra ID disables passkey option
│   ├── User steered to SMS/OTP/push → captured by proxy
│   └── WebAuthn immediate mediation abused to offer weak fallback
├── Browser Extension Attacks
│   ├── webAuthenticationProxy API — intercept navigator.credentials.create()/get()
│   ├── Content script DOM injection — manipulate passkey UI elements
│   ├── DOM-based extension clickjacking — trigger autofill and exfiltration
│   └── Malicious extension forces password fallback or re-registration
└── Help Desk Social Engineering
    └── Recovery process = real control point attackers target

WebAuthn Security Benefits

ProtectionTraditional AuthWebAuthn
Phishing ResistanceCredentials reusableOrigin binding prevents cross-site use
Credential TheftServer breaches expose passwordsPublic key only stored server-side
Replay AttacksStatic credentialsCryptographic challenges with freshness
Man-in-the-MiddleCredentials interceptableOrigin verification blocks proxy attacks

Enterprise Passkey Deployment Guidance

AreaRecommendationRationale
Credential TypeDevice-bound only (hardware security keys)Non-exportable, hardware-backed, inventoriable
Fallback MethodsEliminate all (SMS, TOTP, push, email)Weakest method = real security level
Browser ExtensionsAllowlist only; block webAuthenticationProxy permissionPrevent WebAuthn API interception
AttestationCapture device model and assurance at registrationReject unrecognized authenticators
RecoveryHardware key-based reproofing onlyNo help desk/email-based recovery
Session BindingTie sessions to device context, not just initial authPrevent portable session cookie theft

Cloudflare FIDO2 Deployment Case Study

CLOUDFLARE ROLLOUT TIMELINE:
├── 2018: Distributed YubiKey 5 Nano + YubiKey 5 NFC to all employees
├── 2020: Selective enforcement via Cloudflare Access (Zero Trust proxy)
│   ├── OAuth2 integration with IdP, enforce "swk" (security key) AMR value
│   └── Incremental rollout — one service at a time
├── Feb 2021: Full enforcement — disabled all TOTP/SMS
│   ├── Triggered by social engineering phone calls to employees
│   └── Offline recovery process for lost keys (distribute 2 keys per employee)
├── SSH via Cloudflare Tunnel: cloudflared + Access policies enforce FIDO2 for SSH
└── Result: Zero successful phishing attacks post-deployment

7. JWT Security

JWT Attack Vectors

VulnerabilityTechniqueReal-World Example
Algorithm Confusion (alg=none)Set JWT header alg to “none”, remove signatureClassic JWT bypass
Missing Signature VerificationServer decodes JWT but never checks signatureConvoy KVM CVE-2026-33746 (CVSS 9.8) — JWTService::decode() missing SignedWith constraint
JWE Encryption Mix-UpEncrypt unsigned PlainJWT with server’s RSA public key; server decrypts and accepts without signature checkpac4j-jwt CVE-2026-29000 — forge admin tokens with public key only
Hardcoded JWT SecretsStatic/weak signing secretsZendesk Android SDK — hardcoded secret “987sdasdlkjlakdjf” + sequential IDs → mass ATO
Weak Cookie Auth TagsBrute-forceable authentication tags on session cookiesAuth0-PHP SDK CVE-2025-47275 (CVSS 9.1) — brute force CookieStore auth tags
Default Signing KeysPredictable or default JWT signing keysApache StreamPipes CVE-2025-47411

JWT Security Checklist

ControlImplementationCommon Mistakes
Algorithm EnforcementWhitelist allowed algorithms server-sideAccept alg from JWT header without validation
Signature VerificationAlways verify before trusting claimsCheck only expiration (Convoy pattern)
Key ManagementRotate secrets, use asymmetric keysHardcoded secrets, public key in source
Claim ValidationVerify iss, aud, exp, nbf, iatTrust user-controlled claims
JWE HandlingEnforce inner JWT must be signed, not PlainJWTAccept PlainJWT inside JWE (pac4j-jwt pattern)

8. Session Management

Session Security Requirements

PropertyImplementationAttack Prevention
UniquenessCryptographically random IDsSession prediction
UnpredictabilityHigh entropy (128+ bits)Brute force guessing
Secure TransmissionHTTPS only, Secure flagNetwork interception
Proper ExpirationAbsolute/idle timeoutsSession hijacking
Device BindingTie session to device context/posturePortable cookie theft via AiTM

Session Attack Vectors

SESSION ATTACKS:
├── Session Hijacking
│   ├── Network sniffing
│   ├── Cross-site scripting (XSS)
│   ├── Malware/browser compromise
│   └── AiTM reverse proxy cookie interception (Evilginx, Tycoon 2FA)
├── Session Fixation
│   ├── Pre-authentication session reuse
│   ├── URL-based session ID
│   └── Missing session regeneration
├── Session Timing
│   ├── Concurrent sessions
│   ├── Logout handling
│   └── Session timeout bypass
└── Session Token Portability
    ├── Stolen session cookies replayed from different device/IP
    ├── Impossible travel detection evasion
    └── Post-compromise MFA device registration for persistence

9. Authentication Bypasses & Attacks

Business Logic Bypasses

Bypass TypeTechniqueTesting Approach
Direct AccessURL manipulationForced browsing, parameter tampering
State ManipulationSession/workflow bypassMulti-step process analysis
Role ConfusionPrivilege escalationHorizontal/vertical privesc testing
Reset AbuseAccount takeoverPassword reset flow analysis
Middleware-Only AuthNext.js CVE-2025-29927 — x-middleware-subrequest header bypassVerify auth in page routes/API routes, not just middleware

Technical Bypasses

COMMON BYPASS PATTERNS:
├── Authentication Logic Flaws
│   ├── Boolean bypass (admin=true)
│   ├── SQL injection in auth queries
│   ├── LDAP injection
│   └── Authentication timing attacks
├── Protocol-Specific Issues
│   ├── JWT manipulation (alg=none, missing signature verification, JWE mix-up)
│   ├── OAuth state bypass / parameter injection
│   ├── SAML signature bypass (XSW, parser differential, encrypted assertion)
│   └── Kerberos attacks (Golden/Silver tickets)
├── Framework-Specific Bypasses
│   ├── Next.js middleware bypass (CVE-2025-29927) — set x-middleware-subrequest header
│   ├── WordPress REST API permission flaws (Post SMTP CVE-2025-24000)
│   └── Grafana open redirect + CSPT → XSS → account takeover (CVE-2025-6023)
├── Predictable Token Generation
│   ├── Zendesk Android SDK — SHA-1(REDACTED-{AccountID}-{HardcodedSecret}) → zero-click mass ATO
│   ├── Sequential ID enumeration + static secrets
│   └── No rate limiting on token validation endpoints
└── Implementation Weaknesses
    ├── Default credentials
    ├── Weak password policies
    ├── Missing rate limiting
    ├── Insecure session handling
    └── AI-generated code with insufficient input sanitization (Okta nextjs-auth0 OAuth injection)

Real-World Authentication CVEs

CVEProductTypeCVSSImpact
CVE-2025-59718FortiGateSAML signature bypass9.8Unauthenticated admin access (actively exploited, CISA KEV)
CVE-2026-33746Convoy KVMJWT signature skip9.8Full account takeover including admin
CVE-2026-29000pac4j-jwtJWE encryption mix-upCriticalForge admin tokens with RSA public key
CVE-2025-47275Auth0-PHP SDKCookie auth tag brute force9.1Unauthorized account access
CVE-2025-47949samlifySAML Signature WrappingCriticalAuthentication bypass, user impersonation
CVE-2025-29927Next.jsMiddleware auth bypassCriticalAuthorization bypass via internal header
CVE-2025-25291/92ruby-samlParser differentialCriticalSign in as any user (GitLab exploitable)
CVE-2024-4985GitHub EnterpriseEncrypted assertion bypassCriticalSAML SSO bypass
CVE-2025-24000Post SMTP (WordPress)Broken access controlHighSubscriber reads admin emails → ATO
CVE-2025-6023GrafanaOpen redirect + CSPT → XSSHighFull account takeover
CVE-2025-47411Apache StreamPipesJWT default keyHighAdmin privilege escalation

10. Implementation Security

Secure Coding Practices

Security ControlImplementation PatternCommon Mistakes
Input ValidationWhitelist validationBlacklist approaches
CryptographyIndustry-standard algorithmsCustom/weak crypto
Error HandlingGeneric error messagesInformation disclosure
LoggingSecurity event loggingSensitive data in logs
AI Code ReviewManual security audit of AI-generated auth codeAI “slop” — functional but insecure patterns (Okta nextjs-auth0 case)

Framework-Specific Guidance

FRAMEWORK SECURITY:
├── Spring Security
│   ├── Method-level security
│   ├── CSRF protection
│   └── Session management
├── ASP.NET Identity
│   ├── Identity configuration
│   ├── Cookie authentication
│   └── External providers
├── Express.js/Passport
│   ├── Strategy configuration
│   ├── Session security
│   └── Middleware order
├── Next.js
│   ├── Never rely solely on middleware for auth (CVE-2025-29927)
│   ├── Verify auth in Server Components, Page Routes, and API Routes
│   └── Block x-middleware-subrequest header from external requests
├── WordPress
│   ├── REST API permission callbacks must check capabilities, not just login status
│   ├── Audit plugins exposing sensitive data via REST endpoints
│   └── Post SMTP pattern: get_logs_permission() → is_user_logged_in() is insufficient
└── Node.js SAML (samlify)
    ├── Upgrade to >= 2.10.0 to fix Signature Wrapping (CVE-2025-47949)
    └── Use single XML parser for validation + processing

Defensive Architecture Principles

PrincipleImplementationWhy It Matters
Eliminate Weak FallbacksRemove SMS/TOTP/push when FIDO2 is availableWeakest method = real security posture
Single XML ParserUse one parser for signature validation and data extractionParser differentials enable XSW bypasses
Defense in Depth for AuthAuth check at middleware AND route/controller levelSingle-layer bypass (Next.js pattern)
Hardware-Rooted TrustDevice-bound credentials with attestationPrevents credential export and synced passkey risks
Continuous AuthRe-evaluate posture on device/location/behavior changesA login is not a permanent hall pass

11. Testing & Verification

Authentication Testing Methodology

PhaseFocus AreasTools/Techniques
ReconnaissanceAuthentication mechanisms, IdP discoveryManual analysis, Burp Suite, /.well-known/openid-configuration
EnumerationUser accounts, endpoints, registration endpointsUsername enumeration, timing attacks, /connect/register
Attack ExecutionCredential attacks, bypasses, AiTMHydra, Evilginx, custom scripts
Post-ExploitationSession security, privilege escalation, persistenceManual testing, token analysis, MFA device registration

Automated Testing Tools

TESTING ARSENAL:
├── Credential Attacks
│   ├── Hydra (brute force)
│   ├── Medusa (parallel login)
│   ├── Patator (modular brute forcer)
│   └── MFASweep (CAP misconfiguration discovery)
├── OAuth/JWT Testing
│   ├── jwt_tool (JWT manipulation)
│   ├── Burp JWT Editor
│   ├── request_uri SSRF testing via /authorize
│   └── Dynamic Client Registration fuzzing
├── SAML Testing
│   ├── SAML Raider (Burp extension) — 8 XSW variants, cert cloning, assertion editing
│   ├── SAMLReq (CLI tool)
│   ├── Manual XML manipulation
│   └── Parser differential toolkit (PortSwigger "The Fragile Lock")
├── MFA Bypass Testing
│   ├── Evilginx (AiTM reverse proxy)
│   ├── Cloudflare Workers PoC (IOActive auth downgrade)
│   └── ROADtools / AADInternals (Azure AD CAP bypass)
└── Passkey / WebAuthn Testing
    ├── Browser extension permission auditing (webAuthenticationProxy)
    ├── Downgrade scenario simulation (UA spoofing, CSS injection)
    └── Device-bound vs synced credential policy verification

Security Assessment Checklist

CategoryVerification PointsRisk Level
Password SecurityStrength requirements, storage, reset flowsHigh
Multi-Factor AuthImplementation, bypass resistance, fallback eliminationCritical
Session ManagementGeneration, transmission, expiration, device bindingHigh
OAuth Protocol SecurityRedirect validation, state, PKCE, dynamic registrationCritical
SAML Protocol SecuritySignature validation, single parser, XSW resistanceCritical
JWT SecurityAlgorithm enforcement, signature verification, key managementCritical
WebAuthn/PasskeysDevice-bound enforcement, no fallback, attestationHigh
Framework AuthAuth at every layer, not just middlewareHigh
Business LogicAuthentication flows, error handling, race conditionsMedium

Key Takeaways

  1. Defense in Depth: Combine multiple authentication factors and security controls — but eliminate weak fallbacks that attackers will force
  2. Protocol Compliance: Follow established standards (NIST, OWASP, OAuth specs, FIDO2) and keep libraries updated
  3. Single Parser Principle: Never use dual XML parsers for SAML signature validation and data extraction
  4. Phishing-Resistant MFA: Deploy device-bound FIDO2/WebAuthn; synced passkeys are insufficient for enterprise
  5. JWT Rigor: Always enforce algorithm whitelists, verify signatures before trusting claims, and reject PlainJWT inside JWE
  6. Implementation Quality: Secure coding practices prevent logic bypasses — audit AI-generated auth code carefully
  7. Continuous Monitoring: Log authentication events, audit MFA device registrations, detect impossible travel and session anomalies
  8. Test Real Attack Paths: Use AiTM tools, XSW variants, and downgrade scenarios in security assessments — not just credential brute force

This guide compiles practical authentication security knowledge from 55 research sources. Keep updated with emerging authentication technologies and attack techniques.