{"id":58558,"date":"2026-06-03T08:08:52","date_gmt":"2026-06-03T05:08:52","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/"},"modified":"2026-06-03T08:08:52","modified_gmt":"2026-06-03T05:08:52","slug":"downauth","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/","title":{"rendered":"DownAuth"},"content":{"rendered":"<p># DownAuth<\/p>\n<p>Fallback authentication for Velocity proxy with strong, configurable security controls when Mojang auth is unavailable.<\/p>\n<p>## Overview<br \/>\n&#8211; **Purpose**: Allow trusted players to join using their cached session if Mojang authentication is down.<br \/>\n&#8211; **How**: Switches to offline-mode for the affected connection, validates against a cached session, and applies layered security checks to reduce spoofing risk.<\/p>\n<p>## Key Features<br \/>\n&#8211; **Fallback authentication**<br \/>\n  &#8211; Uses cached session data: UUID, username, last known IP, timestamps, GameProfile properties (skin\/cape).<br \/>\n  &#8211; Automatically activates when Mojang auth appears down; reverts when back up.<\/p>\n<p>&#8211; **Service health monitoring**<br \/>\n  &#8211; Periodic checks drive fallback enable\/disable logic.<br \/>\n  &#8211; Tunable health check interval and failure threshold.<\/p>\n<p>&#8211; **Audit logging (optional)**<br \/>\n  &#8211; Writes security events (fallback used, geo\/ASN change, PIN prompts) to `audit.log`.<\/p>\n<p>&#8211; **IP validation with IPv6 support**<br \/>\n  &#8211; Strict IP match by default.<br \/>\n  &#8211; Optional network range matching with configurable CIDR for IPv4 and IPv6.<\/p>\n<p>&#8211; **Geo\/ASN checks**<br \/>\n  &#8211; Looks up the country code and ASN of the connecting IP.<br \/>\n  &#8211; Alerts staff on large changes; can optionally deny fallback until a normal online-mode login occurs again.<br \/>\n  &#8211; ASN blocklist to deny known hosting\/VPN networks during fallback.<br \/>\n  &#8211; Provider URL, timeout, and response cache TTL are configurable.<\/p>\n<p>&#8211; **Rate limiting**<br \/>\n  &#8211; Per-IP and per-UUID attempt throttling.<br \/>\n  &#8211; Extended throttling per-subnet and per-ASN to slow broad spoof attempts.<\/p>\n<p>&#8211; **PIN verification during outages (optional)**<br \/>\n  &#8211; Require players to set a PIN during normal operation; when fallback is used, they must verify with `\/pin <code>` within a timeout.<br \/>\n  - Players are reminded on join to set a PIN if the policy requires it and they don\u2019t have one yet.<br \/>\n  - PINs are stored hashed (SHA-256) in the cached session.<\/p>\n<p>- **Admin alerts**<br \/>\n  - Notify players with `downauth.alert` when fallback is used or when a geo\/ASN change is detected.<\/p>\n<p>- **Storage**<br \/>\n  - JSON on-disk session storage with optional cleanup on startup.<\/p>\n<p>## Commands<br \/>\n- `\/setpin <code>`<br \/>\n  - Sets a personal fallback PIN (minimum length configurable).<br \/>\n- `\/pin <code>`<br \/>\n  - If a verification is pending (during fallback), verifies the code.<br \/>\n  - If no verification is pending, sets the PIN as a convenience.<br \/>\n- `\/resetpin`<br \/>\n  - Clears your PIN only when Mojang auth is healthy (online-mode path).<\/p>\n<p>## Permissions<br \/>\n- **downauth.alert**<br \/>\n  - Receive staff alerts about fallback usage and geo\/ASN changes.<br \/>\n- Commands do not enforce additional permissions by default. Use your proxy\u2019s permission system if you want to restrict them.<\/p>\n<p>## Configuration (excerpt)<br \/>\n```yaml<br \/>\nsession-cache:<br \/>\n  max-session-age: 72<br \/>\n  storage-type: \"JSON\"<br \/>\n  strict-ip-check: true<br \/>\n  allow-ip-range-match: true<br \/>\n  ipv4-range-prefix: 24<br \/>\n  ipv6-range-prefix: 64<br \/>\n  cleanup-on-startup: true<\/p>\n<p>security:<br \/>\n  min-login-history: 3<br \/>\n  max-failed-attempts: 10<br \/>\n  failure-ban-duration: 30<br \/>\n  require-recent-activity: true<br \/>\n  recent-activity-days: 30<br \/>\n  alert-on-fallback: true<br \/>\n  enable-geo-checks: true<br \/>\n  alert-on-geo-change: true<br \/>\n  deny-on-geo-change: false<br \/>\n  require-pin-on-fallback: false<br \/>\n  pin-timeout-seconds: 60<br \/>\n  pin-min-length: 6<br \/>\n  max-failed-attempts-per-subnet: 30<br \/>\n  max-failed-attempts-per-asn: 100<br \/>\n  blocked-asns: []<br \/>\n  require-mojang-auth: []  # UUIDs that must always authenticate online<\/p>\n<p>monitoring:<br \/>\n  health-check-interval: 30<br \/>\n  failure-threshold: 3<br \/>\n  enable-statistics: true<br \/>\n  enable-metrics: true<br \/>\n  enable-audit-log: true<br \/>\n  geo-lookup-timeout: 2000<br \/>\n  geo-provider-url: \"https:\/\/ipwho.is\/{ip}?fields=ip,country_code,connection\"<br \/>\n  geo-cache-ttl: 300<\/p>\n<p>messages:<br \/>\n  fallback-auth-active: \"&eAuthentication servers are down. Using cached session.\"<br \/>\n  fallback-auth-failed: \"&cCannot authenticate: No cached session found.\"<br \/>\n  session-expired: \"&cYour session has expired. Please try again when auth servers are online.\"<br \/>\n  mojang-down-notice: \"&7Mojang authentication servers appear to be down.\"<br \/>\n  pin-prompt: \"&ePlease verify your identity: use &6\/pin <code>&e within &6%timeout%s\"<br \/>\n  pin-success: \"&aVerification successful.\"<br \/>\n  pin-failure: \"&cIncorrect PIN.\"<br \/>\n  pin-required-notice: \"&ePins are required during auth outages. Set your PIN with &6\/setpin <code>&e.\"<br \/>\n  geo-denied: \"&cConnection denied due to location or network change. Please try again later.\"<br \/>\n```<\/p>\n<p>## Security messages and when they appear<br \/>\n- **fallback-auth-active**: Sent to staff with `downauth.alert` when fallback is used.<br \/>\n- **fallback-auth-failed**: Sent to the player if no cached session exists while in fallback.<br \/>\n- **session-expired**: Sent to the player if their cached session is too old or invalid.<br \/>\n- **mojang-down-notice**: General heads-up when services seem to be down (used by the plugin in appropriate places).<br \/>\n- **pin-prompt**: Direct message to a player who must verify their PIN during fallback; they must run `\/pin <code>` before the timeout.<br \/>\n- **pin-success \/ pin-failure**: Results of PIN verification.<br \/>\n- **pin-required-notice**: Reminds players (on join) to set a PIN when policy requires pins during outages and they don\u2019t have one yet.<br \/>\n- **geo-denied**: Disconnect reason if policy denies fallback on geo\/ASN change while services are down.<\/p>\n<p>## How it works (high level)<br \/>\n1. **PreLogin**: If Mojang auth appears down, the connection is switched to offline-mode and validated against the cached session with IP\/rate\/geo\/ASN checks.<br \/>\n2. **GameProfileRequest**: Supplies a profile built from the cached session (UUID, name, properties).<br \/>\n3. **PostLogin**: Updates the session, re-checks geo\/ASN, alerts staff if needed, and optionally enforces PIN verification.<\/p>\n<p>## Geo provider<br \/>\n- Default provider: `ipwho.is` (no key required). You can change the provider URL and tune timeouts and TTL in `monitoring`.<\/p>\n<p>## Notes<br \/>\n- This plugin is designed for Velocity proxy environments. Place the jar into the proxy\u2019s `plugins\/` folder. Adjust `config.yml` as needed, then restart the proxy.<br \/>\n- If you enable PINs, ensure players set their PINs while authentication is healthy to avoid disruption when outages occur.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fallback for Velocity in the event of Mojang Outages<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"_minecraft_slug":"downauth","_minecraft_project_id":"fzkaAoGw","_minecraft_author":"Bobcat","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":28,"_minecraft_follows":0,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"downauth.zip","_minecraft_size_bytes":55762,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-15T22:12:07.624773Z","_minecraft_date_created":"2025-10-30T06:29:24.233684Z","_minecraft_date_modified":"2025-10-29T18:44:59.536223Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/downauth","_minecraft_icon_attachment_id":0,"_minecraft_imported_at":"2026-06-03T05:08:53+00:00","_minecraft_import_hash":"32c33c4e7bbef4f8ef77bbef548b1b5e","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[89,123,92,985],"mod_loader":[986],"minecraft_version":[40,801,79,780,781,782,783,784,80,785,786,82,796,797,798,799,800,778,779,790,791,792,793,794,802,803,804],"class_list":["post-58558","mod","type-mod","status-publish","hentry","mod_category-game-mechanics","mod_category-technology","mod_category-utility","mod_category-velocity","mod_loader-velocity","minecraft_version-1-21-10","minecraft_version-1-21-10-rc1","minecraft_version-1-21-6","minecraft_version-1-21-6-pre1","minecraft_version-1-21-6-pre2","minecraft_version-1-21-6-pre3","minecraft_version-1-21-6-pre4","minecraft_version-1-21-6-rc1","minecraft_version-1-21-7","minecraft_version-1-21-7-rc1","minecraft_version-1-21-7-rc2","minecraft_version-1-21-9","minecraft_version-1-21-9-pre1","minecraft_version-1-21-9-pre2","minecraft_version-1-21-9-pre3","minecraft_version-1-21-9-pre4","minecraft_version-1-21-9-rc1","minecraft_version-25w20a","minecraft_version-25w21a","minecraft_version-25w34a","minecraft_version-25w34b","minecraft_version-25w35a","minecraft_version-25w36a","minecraft_version-25w36b","minecraft_version-25w41a","minecraft_version-25w42a","minecraft_version-25w43a"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DownAuth - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DownAuth - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Fallback for Velocity in the event of Mojang Outages\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/downauth\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/downauth\\\/\",\"name\":\"DownAuth - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"datePublished\":\"2026-06-03T05:08:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/downauth\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/downauth\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/downauth\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"DownAuth\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DownAuth - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/","og_locale":"en_US","og_type":"article","og_title":"DownAuth - Minecraft","og_description":"Fallback for Velocity in the event of Mojang Outages","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/","name":"DownAuth - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"datePublished":"2026-06-03T05:08:52+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/downauth\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/downauth\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"DownAuth"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/58558","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=58558"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=58558"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=58558"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=58558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}