{"id":113738,"date":"2026-06-06T19:48:25","date_gmt":"2026-06-06T16:48:25","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/"},"modified":"2026-06-06T19:48:25","modified_gmt":"2026-06-06T16:48:25","slug":"not-enough-auth","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/","title":{"rendered":"NotEnoughAuth [OAuth: Google, Discord, Telegram and more]"},"content":{"rendered":"<p>**NotEnoughAuth** is a **Paper (1.21.7+)** plugin that allows you to authenticate players using **OAuth2 providers** (_Google, GitHub, GitLab, Discord, Twitch, Telegram_) based on the Dialog functionality.<\/p>\n<p>How to set up \u2014 scroll down to the **\ud83e\ude84 Configuration** section.<\/p>\n<p>### \ud83d\udc40 Screenshots<\/p>\n<p><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/6de4ccad-41e9-4e68-aadd-f5eac1f3d88c\" \/><br \/>\n<img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/4a1395e5-cb73-4069-931d-029d0ab6abfb\" \/><br \/>\n<img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/6331ec73-2134-4d33-a4f7-bc0d958d1864\" \/><br \/>\n<img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/80e9cdec-4469-4ffe-9689-e9a3a6080b7a\" \/><br \/>\n<img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/c97ec6ca-ab2d-40c7-a2cf-e2e4cb8798d0\" \/><br \/>\n<img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/c0d3ce3b-db8a-4110-b4c6-797ee5d3fdd2\" \/><\/p>\n<p><b>* While you authenticate, you will see the &#8216;Joining world&#8230;&#8217; screen.<\/b><br \/>\n<b>* After successfully authenticating, you will be automatically redirected to the server after the &#8216;Joining world&#8230;&#8217; screen.<\/b><\/p>\n<p>### \ud83e\uddf6 How it works?<\/p>\n<p>Each player session has a hash describing the state of the client, and it is checked against the database (`data.yml`) each time a player joins.<br \/>\nIf sessions match &#8211; proceed to the server. If they don&#8217;t, force the authentication.<\/p>\n<p>The session hash is composed of multiple factors:<br \/>\n&#8211; IP address [`Player.getClientAddress()`)]<br \/>\n&#8211; View distance [`ClientOption.VIEW_DISTANCE`]<br \/>\n&#8211; Flag to allow server listings [`ClientOption.ALLOW_SERVER_LISTINGS`]<br \/>\n&#8211; Locale [`ClientOption.LOCALE`]<br \/>\n&#8211; Chat visibility [`ClientOption.CHAT_VISIBILITY`]<br \/>\n&#8211; Skins parts [`ClientOption.SKIN_PARTS`]<\/p>\n<p>### \ud83d\udcbb Commands<\/p>\n<p>&#8211; `\/link` \u2014 opens a dialog to link an additional OAuth2 provider to your account.<br \/>\n&#8211; `\/unlink` \u2014 opens a dialog to unlink an OAuth2 provider from your account.<br \/>\n&#8211; `\/logout` \u2014  terminates your current session hash, requires authentication on next join.<br \/>\n&#8211; `\/auth info` \u2014 see a list of available commands.<br \/>\n&#8211; `\/auth reload` \u2014 reloads the plugin.<\/p>\n<p>Aliases: `\/nea`, `\/notenoughauth`.<\/p>\n<p>### \ud83d\udd1e Permissions<\/p>\n<p>&#8211; `notenoughauth.admin` _(for **operators** by default)_ \u2014 Allows to use `\/auth reload`.<br \/>\n&#8211; `notenoughauth.default` _(**true** by default)_ \u2014 Allows to use the `\/auth info` command.<br \/>\n&#8211; `notenoughauth.link` _(**true** by default)_ \u2014 Allows to use the `\/link` command.<br \/>\n&#8211; `notenoughauth.unlink` _(**true** by default)_ \u2014 Allows to use the `\/unlink` command.<\/p>\n<p>### \ud83d\udcc4 Default config<\/p>\n<p>**[CAUTION]** **Don&#8217;t forget** to put your **public IP** into the `webIp` field.<br \/>\nAlso, you should **open the TCP port** on your machine for the plugin to work. <i>Port **4177** by default<\/i>.<br \/>\n**Otherwise, nothing will work.**<\/p>\n<p>&#8220;`yaml<br \/>\n# After setting &#8216;webIp&#8217; and &#8216;webPort&#8217;, take a look at the console output;<br \/>\n# You will see a list of OAuth2 redirect URLs &#8211; copy these and paste them into your OAuth provider settings (e.g., Google, GitHub) when creating the application credentials.<br \/>\nwebIp: &#8220;127.0.0.1&#8221;<br \/>\nwebPort: 4177<\/p>\n<p># Defines whether auth redirect links will contain &#8220;http&#8221; or &#8220;https&#8221;;<br \/>\n# For example, if you use Nginx\/Apache as a reverse proxy (&#8217;80&#8217; \u2192 &#8216;4177&#8217;) and Cloudflare for SSL certificate, set this to &#8216;true&#8217;;<br \/>\n# For local testing, you may leave this as &#8216;false&#8217;.<br \/>\nuseHttps: false<\/p>\n<p># If you use tunneling software (such as &#8216;playit.gg&#8217; or &#8216;ngrok&#8217;), you may use this field for overriding the base URL (e.g., &#8216;https:\/\/4be8-112-41-125-11.ngrok-free.app&#8217;).<br \/>\noverriddenRedirectUrlBase: &#8220;&#8221;<\/p>\n<p># Time for a player to pass the auth process (in seconds).<br \/>\ntimeout: 90<\/p>\n<p># Link for creating Google application: https:\/\/console.cloud.google.com\/apis\/credentials<br \/>\ngoogle:<br \/>\n  enabled: true<br \/>\n  clientId: &#8220;YOUR_GOOGLE_CLIENT_ID&#8221;<br \/>\n  secret: &#8220;YOUR_GOOGLE_CLIENT_SECRET&#8221;<\/p>\n<p># Link for creating GitHub application: https:\/\/github.com\/settings\/developers<br \/>\ngithub:<br \/>\n  enabled: true<br \/>\n  clientId: &#8220;YOUR_GITHUB_CLIENT_ID&#8221;<br \/>\n  secret: &#8220;YOUR_GITHUB_CLIENT_SECRET&#8221;<\/p>\n<p># Link for creating GitLab application: https:\/\/gitlab.com\/-\/user_settings\/applications<br \/>\ngitlab:<br \/>\n  enabled: true<br \/>\n  clientId: &#8220;YOUR_GITLAB_APPLICATION_ID&#8221;<br \/>\n  secret: &#8220;YOUR_GITLAB_SECRET&#8221;<\/p>\n<p># Link for creating Discord application: https:\/\/discord.com\/developers\/applications<br \/>\ndiscord:<br \/>\n  enabled: true<br \/>\n  clientId: &#8220;YOUR_DISCORD_CLIENT_ID&#8221;<br \/>\n  secret: &#8220;YOUR_DISCORD_CLIENT_SECRET&#8221;<\/p>\n<p># Link for creating Twitch application: https:\/\/dev.twitch.tv\/console\/apps\/create<br \/>\ntwitch:<br \/>\n  enabled: true<br \/>\n  clientId: &#8220;YOUR_TWITCH_CLIENT_ID&#8221;<br \/>\n  secret: &#8220;YOUR_TWITCH_CLIENT_SECRET&#8221;<\/p>\n<p># Link to Telegram documentation: https:\/\/core.telegram.org\/bots\/telegram-login#tldr<br \/>\ntelegram:<br \/>\n  enabled: true<br \/>\n  clientId: &#8220;YOUR_TELEGRAM_BOT_CLIENT_ID&#8221;<br \/>\n  secret: &#8220;YOUR_TELEGRAM_BOT_CLIENT_SECRET&#8221;<\/p>\n<p>messages:<br \/>\n  &#8220;prefix&#8221;: &#8220;&#038;#C8D1DE[NotEnoughAuth]&#8221;<br \/>\n  &#8220;auth-required&#8221;: &#8220;&#038;fAuthentication required to join this server.&#8221;<br \/>\n  &#8220;title&#8221;: &#8220;&#038;#FFDB60Welcome!&#8221;<br \/>\n  &#8220;description&#8221;: &#8220;Let&#8217;s verify it&#8217;s you using OAuth2.nYou will be prompted to open your browser.&#8221;<br \/>\n  &#8220;google&#8221;: &#8220;&#038;#D5DEEAGoogle Account&#8221;<br \/>\n  &#8220;google-hover&#8221;: &#8220;Click for Google authentication&#8221;<br \/>\n  &#8220;github&#8221;: &#8220;&#038;#D5DEEAGitHub Account&#8221;<br \/>\n  &#8220;github-hover&#8221;: &#8220;Click for GitHub authentication&#8221;<br \/>\n  &#8220;gitlab&#8221;: &#8220;&#038;#D5DEEAGitLab Account&#8221;<br \/>\n  &#8220;gitlab-hover&#8221;: &#8220;Click for GitLab authentication&#8221;<br \/>\n  &#8220;discord&#8221;: &#8220;&#038;#D5DEEADiscord Account&#8221;<br \/>\n  &#8220;discord-hover&#8221;: &#8220;Click for Discord authentication&#8221;<br \/>\n  &#8220;twitch&#8221;: &#8220;&#038;#D5DEEATwitch Account&#8221;<br \/>\n  &#8220;twitch-hover&#8221;: &#8220;Click for Twitch authentication&#8221;<br \/>\n  &#8220;telegram&#8221;: &#8220;&#038;#D5DEEATelegram Account&#8221;<br \/>\n  &#8220;telegram-hover&#8221;: &#8220;Click for Telegram authentication&#8221;<br \/>\n  &#8220;auth-success&#8221;: &#8220;Authentication successful.&#8221;<br \/>\n  &#8220;auth-success-description&#8221;: &#8220;You can now return to Minecraft.&#8221;<br \/>\n  &#8220;auth-failed&#8221;: &#8220;Authentication failed.&#8221;<br \/>\n  &#8220;account-mismatch&#8221;: &#8220;This Minecraft account is linked to a different account in this OAuth provider.&#8221;<br \/>\n  &#8220;provider-mismatch&#8221;: &#8220;This provider isn&#8217;t linked to this player&#8217;s account.&#8221;<br \/>\n  &#8220;invalid-state&#8221;: &#8220;Invalid or expired state. Please try again.&#8221;<br \/>\n  &#8220;timeout&#8221;: &#8220;Timeout.&#8221;<br \/>\n  &#8220;link-title&#8221;: &#8220;&#038;#FFDB60Link a provider&#8221;<br \/>\n  &#8220;link-description&#8221;: &#8220;You may &#038;#A4D400&#038;nlink&#038;r an additional oAuth2 provider to your account to be able to use it as your additional sign-in option on this server.&#8221;<br \/>\n  &#8220;link-hover&#8221;: &#8220;Click to link this provider&#8221;<br \/>\n  &#8220;unlink-title&#8221;: &#8220;&#038;#FFDB60Unlink a provider&#8221;<br \/>\n  &#8220;unlink-description&#8221;: &#8220;You may choose an account to &#038;#EB4C42&#038;nunlink&#038;r. If needed, you will be able to link the provider again.&#8221;<br \/>\n  &#8220;unlink-hover&#8221;: &#8220;Click to unlink this provider&#8221;<br \/>\n  &#8220;unlink-confirm-title&#8221;: &#8220;&#038;#FFDB60Are you sure?&#8221;<br \/>\n  &#8220;unlink-confirm-description&#8221;: &#8220;This provider will be removed from your account.&#8221;<br \/>\n  &#8220;confirm-unlink&#8221;: &#8220;&#038;#E74C3CConfirm Unlink&#8221;<br \/>\n  &#8220;confirm-unlink-hover&#8221;: &#8220;Permanently unlink this provider&#8221;<br \/>\n  &#8220;confirm&#8221;: &#8220;&#038;#A4D400Confirm&#8221;<br \/>\n  &#8220;cancel&#8221;: &#8220;&#038;#EB4C42Cancel&#8221;<br \/>\n  &#8220;back&#8221;: &#8220;&#038;#EB4C42\u2190 Back&#8221;<br \/>\n  &#8220;back-hover&#8221;: &#8220;Go back to server list&#8221;<br \/>\n  &#8220;info-header&#8221;: &#8220;<prefix> &#038;#ECF4FBCommands:&#8221;<br \/>\n  &#8220;info-link&#8221;: &#8220;n &#038;#D8E5EC&#038;n\/link&#038;r&#038;#ECF4FB &#8211; link an additional provider to your account.&#8221;<br \/>\n  &#8220;info-unlink&#8221;: &#8220;n &#038;#D8E5EC&#038;n\/unlink&#038;r&#038;#ECF4FB &#8211; unlink one of the providers from your account.&#8221;<br \/>\n  &#8220;info-logout&#8221;: &#8220;n &#038;#D8E5EC&#038;n\/logout&#038;r&#038;#ECF4FB &#8211; sign out of the account.&#8221;<br \/>\n  &#8220;info-reload&#8221;: &#8220;n &#038;#D8E5EC&#038;n\/auth reload&#038;r&#038;#ECF4FB &#8211; reload the plugin configuration.&#8221;<br \/>\n  &#8220;successfully-linked&#8221;: &#8220;<prefix> &#038;#A4D400Linked successfully!&#8221;<br \/>\n  &#8220;successfully-unlinked&#8221;: &#8220;<prefix> &#038;#A4D400Unlinked successfully!&#8221;<br \/>\n  &#8220;provider-linked&#8221;: &#8220;Provider linked successfully!&#8221;<br \/>\n  &#8220;logged-out&#8221;: &#8220;&#038;fYou&#8217;ve successfully logged out.&#8221;<br \/>\n  &#8220;reloaded&#8221;: &#8220;<prefix> &#038;#ECF4FBReloaded!&#8221;<br \/>\n  &#8220;disconnected&#8221;: &#8220;Disconnected.&#8221;<br \/>\n  &#8220;command-not-found&#8221;: &#8220;<prefix> &#038;#E03E3EOops! That command doesn&#8217;t exist, or you don&#8217;t have enough permissions.&#8221;<br \/>\n  &#8220;not-enough-permissions&#8221;: &#8220;<prefix> &#038;#E03E3ENot enough permissions.&#8221;<br \/>\n  &#8220;one-provider-left&#8221;: &#8220;<prefix> &#038;#E03E3EYou have only one provider left linked to your account.&#8221;<br \/>\n  &#8220;all-providers-already-linked&#8221;: &#8220;<prefix> &#038;#ECF4FBYou&#8217;ve already linked all possible providers to your account!&#8221;<br \/>\n  &#8220;rejoin&#8221;: &#8220;<prefix> &#038;#E03E3ESession hashes don&#8217;t match. Please rejoin.&#8221;<br \/>\n  &#8220;an-error-occurred&#8221;: &#8220;<prefix> &#038;#E03E3EAn error occurred during reload! Check the console logs for details.&#8221;<br \/>\n&#8220;`<\/p>\n<p>### \ud83d\ude80 Installation<\/p>\n<p>**[IMPORTANT]** Before getting started, make sure that the plugin&#8217;s version is **compatible** with your server version.<\/p>\n<p>1. Download the latest version of the plugin from the Releases tab.<br \/>\n1. Put the downloaded `.jar` into the `\/plugins` folder of your server.<br \/>\n1. Restart your server or enter the `\/reload` command.<\/p>\n<p>### \ud83e\ude84 Configuration<\/p>\n<p>**[CAUTION]** **Never share your client secrets, bot tokens, or any other credentials** shown in your `config.yml`. Anyone with access to these can impersonate your application.<br \/>\nAll credentials visible in the screenshots throughout the guide have been revoked and are no longer valid.<\/p>\n<p>**Prerequisites**:<br \/>\n1. Make sure to put your server&#8217;s public IP into the `webIp` field in `config.yml`.<br \/>\n1. Open a **TCP port** _(**4177** by default)_ on your server equal to the `webPort` field from the `config.yml`.<\/p>\n<p>**How to configure specific providers**:<\/p>\n<details>\n<summary><img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/c\/c1\/Google_\"G\"_logo.svg' > <b>Google<\/b><\/summary>\n<p>  1. Follow the link to open Google Cloud Console: <b>https:\/\/console.cloud.google.com\/apis\/credentials<\/b><\/p>\n<p>  1. Create a project: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/0201f038-6806-42c5-9b14-bd59befb615d\" \/><\/p>\n<p>  1. Click <b>&#8220;Create credentials&#8221;<\/b> \u2192 <b>&#8220;OAuth client ID&#8221;<\/b>: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/35eccdda-73fa-4add-8915-e75a6cb9a9f9\" \/><\/p>\n<p>  1. Set **&#8221;Application type&#8221;** to **&#8221;Web application&#8221;** and provide it with a name: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/ea4138ba-6011-4020-ab32-73f8c7be62ec\" \/><\/p>\n<p>  1. Enter `\/auth reload` and copy the link for Google callback _(before that, make sure to populate `webIp` in the configuration with your server public IP or domain)_: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/80df5da8-2918-4535-8c39-283b1ac45965\" \/><\/p>\n<p>  1. Add the link from the console to the **&#8221;Authorized redirect URIs&#8221;** section and click **&#8221;Create&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/509373ed-8205-471a-9857-ca4e106580d1\" \/><\/p>\n<p>  1. Copy both **&#8221;Client ID&#8221;** and **&#8221;Client Secret&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/cb696b60-40dc-444c-ba9c-4d715ec62123\" \/><\/p>\n<p>  1. In the `google` section, replace `YOUR_GOOGLE_CLIENT_ID` and `YOUR_GOOGLE_CLIENT_SECRET` with the obtained credentials: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/e0e76b31-5d3a-428e-9ae8-f1b2522394a5\" \/><\/p>\n<p>  1. \u2705 Enter the `\/auth reload` and enjoy!<\/p>\n<\/details>\n<details>\n<summary><img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/24\/Github_logo_svg.svg' > <b>GitHub<\/b><\/summary>\n<p>  1. Follow the link to open GitHub Developer Settings: <b>https:\/\/github.com\/settings\/developers<\/b><\/p>\n<p>  1. Click **&#8221;New OAuth App&#8221;**: <br \/><img src='https:\/\/github.com\/user-attachments\/assets\/937e55d7-9eb3-49e5-b591-82b7686e57fa' width=\"600\" \/><\/p>\n<p>  1. Enter `\/auth reload` and copy the link for GitHub callback _(before that, make sure to populate `webIp` in the configuration with your server public IP or domain)_: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/a3d6693c-3ffa-4868-99bc-94ede61e979a\" \/><\/p>\n<p>  1. Fill in **&#8221;Application name&#8221;**, **&#8221;Homepage URL&#8221;**, and paste the redirect URL from the plugin console into the **&#8221;Authorization callback URL&#8221;** field, then click **&#8221;Register application&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/f79075db-22aa-4b5f-a001-ee9c7d38a149\" \/><\/p>\n<p>  1. Copy the **&#8221;Client ID&#8221;**, then click **&#8221;Generate a new client secret&#8221;** and copy the generated secret: <br \/><img width=\"600\" src='https:\/\/github.com\/user-attachments\/assets\/99e6ceb2-1a40-4b2c-82c8-d8403728050d' \/><\/p>\n<p>  1. In the `github` section, replace `YOUR_GITHUB_CLIENT_ID` and `YOUR_GITHUB_CLIENT_SECRET` with the obtained credentials: <br \/><img width=\"600\" src='https:\/\/github.com\/user-attachments\/assets\/c7c6f5bf-eba8-40ae-9305-db99d29d93a6' \/><\/p>\n<p>  1. \u2705 Enter `\/auth reload` and enjoy!<\/p>\n<\/details>\n<details>\n<summary><img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/35\/GitLab_icon.svg' > <b>GitLab<\/b><\/summary>\n<p>  1. Follow the link to open GitLab User Application Settings: <b>https:\/\/gitlab.com\/-\/user_settings\/applications<\/b><\/p>\n<p>  1. Click **&#8221;Add new application&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/902d29e6-2c8d-429f-8ba4-90065e996be0\"><\/p>\n<p>  1. Enter `\/auth reload` and copy the link for GitLab callback _(before that, make sure to populate `webIp` in the configuration with your server public IP or domain)_: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/32bbc471-c5e0-4c30-8671-efe3f712c0ff\"><\/p>\n<p>  1. Fill in the **&#8221;Name&#8221;** field, paste the redirect URL from the plugin console into the **&#8221;Redirect URI&#8221;** field, and select the **`read_user`** scope, then click **&#8221;Save application&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/565801cf-4bd7-40f5-962f-93119da3593c\"><\/p>\n<p>  1. Copy both the **&#8221;Application ID&#8221;** and the **&#8221;Secret&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/5cb266f2-e7fd-4c35-ba8e-58afceaf8e74\"><\/p>\n<p>  1. In the `gitlab` section, replace `YOUR_GITLAB_APPLICATION_ID` and `YOUR_GITLAB_SECRET` with the obtained credentials: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/96b11e2c-59db-42d0-8f6f-9fa4292743aa\"><\/p>\n<p>  1. \u2705 Enter `\/auth reload` and enjoy!<\/p>\n<\/details>\n<details>\n<summary><img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/fr\/4\/4f\/Discord_Logo_sans_texte.svg' > <b>Discord<\/b><\/summary>\n<p>  1. Follow the link to open the Discord Developer Portal: <b>https:\/\/discord.com\/developers\/applications<\/b><\/p>\n<p>  1. Click **&#8221;New Application&#8221;**, enter a name for your application, and click **&#8221;Create&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/aa5fbba7-f847-4064-955d-26fb8e68a9de\"><\/p>\n<p>  1. In the left sidebar, select the **&#8221;OAuth2&#8243;** tab. Copy the **&#8221;Client ID&#8221;** and **&#8221;Client Secret&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/61e61577-04e1-44f8-bace-219e05b04722\"><\/p>\n<p>  1. Enter `\/auth reload` and copy the link for Discord callback _(before that, make sure to populate `webIp` in the configuration with your server public IP or domain)_: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/b6258ece-79a2-4161-8b75-f02f53481a51\"><\/p>\n<p>  1. Under the **&#8221;Redirects&#8221;** section on the same OAuth2 page, click **&#8221;Add Redirect&#8221;**, paste the redirect URL from the plugin console, and click **&#8221;Save Changes&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/affb4b7f-2531-4675-b901-8f7230208366\"><\/p>\n<p>  1. In the `discord` section, replace `YOUR_DISCORD_CLIENT_ID` and `YOUR_DISCORD_CLIENT_SECRET` with the obtained credentials: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/cffa309c-ec8b-47a3-9676-f3539a5f2f5b\"><\/p>\n<p>  1. \u2705 Enter `\/auth reload` and enjoy!<\/p>\n<\/details>\n<details>\n<summary><img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/d\/d3\/Twitch_Glitch_Logo_Purple.svg' > <b>Twitch<\/b><\/summary>\n<p>  1. Follow the link to open the Twitch Developer Console: <b>https:\/\/dev.twitch.tv\/console\/apps\/create<\/b><\/p>\n<p>  1. Enter `\/auth reload` and copy the link for Twitch callback _(before that, make sure to populate `webIp` in the configuration with your server public IP or domain)_: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/488c6369-fa8d-4356-b77f-aba3aff4f348\"><\/p>\n<p>  1. Fill in the **&#8221;Name&#8221;** field, paste the redirect URL from the plugin console into the **&#8221;OAuth Redirect URLs&#8221;** field and click **&#8221;Add&#8221;**, then choose any **&#8221;Category&#8221;** (e.g. _&#8221;Website Integration&#8221;_), and click **&#8221;Create&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/f341bc0b-6509-4eab-831e-846ad49bbcda\"><\/p>\n<p>  1. Back on the **&#8221;Applications&#8221;** list, find your newly created app and click **&#8221;Manage&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/45db25e1-4229-4a61-a1a7-48a341409f9f\"><\/p>\n<p>  1. Copy the **&#8221;Client ID&#8221;**, then click **&#8221;New Secret&#8221;** and copy the generated **&#8221;Client Secret&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/56d12a1e-78e5-4ba0-abfe-800b53d706b4\"><\/p>\n<p>  1. In the `twitch` section, replace `YOUR_TWITCH_CLIENT_ID` and `YOUR_TWITCH_CLIENT_SECRET` with the obtained credentials: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/2b345d9a-d351-4e3a-b71e-2d42bd68347e\"><\/p>\n<p>  1. \u2705 Enter `\/auth reload` and enjoy!<\/p>\n<\/details>\n<details>\n<summary><img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/8\/82\/Telegram_logo.svg' > <b>Telegram<\/b><\/summary>\n<p>  1. Open Telegram and start a chat with **@BotFather**: <b>https:\/\/t.me\/BotFather<\/b><\/p>\n<p>  1. Open the **@BotFather** Mini App, click **&#8221;Create a New Bot&#8221;** and proceed with the form: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/bc2394a7-2292-4f3f-973f-0245c8cd872f\"><\/p>\n<p>  1. Once the bot is created, go to the **&#8221;Login Widget&#8221;** tab: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/9976218b-c560-4a31-890a-81fea47c5a33\"><\/p>\n<p>  1. Click on the **&#8221;Switch to OpenID Connect Login&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/13b36725-1e5b-4f6b-91f0-57f2462338fb\"><\/p>\n<p>  1. Copy the **&#8221;Client ID&#8221;** and the **&#8221;Client Secret&#8221;**: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/28a6a4e6-e26a-4086-8276-3aaf2a90bef5\"><\/p>\n<p>  1. Enter `\/auth reload` and copy the base domain\/IP for the Telegram callback _(before that, make sure to populate `webIp` in the configuration with your server public IP or domain)_: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/185de05b-6e7c-4d7c-abfe-8da5f9e3bb65\"><\/p>\n<p>  1. Under the **&#8221;Redirect URIs&#8221;** section, click **&#8221;Add a Redirect URI&#8221;**, paste the redirect URL from the plugin console: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/225d7087-77c5-4c93-b97c-594eca7b5b53\"><\/p>\n<p>  1. In the `telegram` section, replace `YOUR_TELEGRAM_BOT_CLIENT_ID` and `YOUR_TELEGRAM_BOT_CLIENT_SECRET` with the obtained credentials: <br \/><img decoding=\"async\" width=\"600\" src=\"https:\/\/github.com\/user-attachments\/assets\/8ea3c5de-60ed-4dba-b055-e921b9637223\"><\/p>\n<p>  1. \u2705 Enter `\/auth reload` and enjoy!<\/p>\n<\/details>\n<p>### \ud83d\udd01 SSL certificates and HTTPS<\/p>\n<p>**[NOTE]** If you don&#8217;t own a domain, tunneling software like ngrok or playit.gg can also provide an HTTPS URL &#8211; use the `overriddenRedirectUrlBase` field in `config.yml` for that.<\/p>\n<p>Some OAuth2 providers require you to own a domain, and in some cases, an SSL certificate (i.e., to use &#8216;https&#8217;).<\/p>\n<p>You can purchase a domain at websites such as Cloudflare, Spaceship.<br \/>\nDomain price comparison tool and aggregator &#8211; https:\/\/tld-list.com\/.<\/p>\n<p>Table of OAuth2 providers and their agility:<br \/>\n| Provider | Can use without a private domain | Can use without SSL (HTTPS) |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| <img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/c\/c1\/Google_\"G\"_logo.svg'> Google | \u274c | \u2705 |<br \/>\n| <img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/2\/24\/Github_logo_svg.svg'> GitHub | \u2705 | \u2705 |<br \/>\n| <img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/35\/GitLab_icon.svg'> GitLab | \u2705 | \u2705 |<br \/>\n| <img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/fr\/4\/4f\/Discord_Logo_sans_texte.svg'> Discord | \u2705 | \u2705 |<br \/>\n| <img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/d\/d3\/Twitch_Glitch_Logo_Purple.svg'> Twitch | \u274c | \u274c |<br \/>\n| <img draggable='false' width=14 src='https:\/\/upload.wikimedia.org\/wikipedia\/commons\/8\/82\/Telegram_logo.svg'> Telegram | \u2705 | \u2705 |<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Minecraft Paper plugin (1.21.7+) that brings OAuth authentication and allows players to login\/register using multiple providers [Google, GitHub, GitLab, Discord, Twitch, Telegram].<\/p>\n","protected":false},"featured_media":113739,"template":"","meta":{"_minecraft_slug":"not-enough-auth","_minecraft_project_id":"CbZqG1CH","_minecraft_author":"MrQuackDuck","_minecraft_license":"MIT","_minecraft_downloads":6,"_minecraft_follows":2,"_minecraft_client_side":"unsupported","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"not-enough-auth.zip","_minecraft_size_bytes":557385,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-16T12:16:30.746340Z","_minecraft_date_created":"2026-05-08T04:03:38.270955Z","_minecraft_date_modified":"2026-05-05T18:47:11.794861Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/not-enough-auth","_minecraft_icon_attachment_id":113739,"_minecraft_imported_at":"2026-06-06T16:48:26+00:00","_minecraft_import_hash":"dc065a2d7a4f180e445a9baa1db6d56a","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[126,127,128,867,92],"mod_loader":[132,133],"minecraft_version":[40,41,80,81,82,83,167,163],"class_list":["post-113738","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-management","mod_category-paper","mod_category-purpur","mod_category-social","mod_category-utility","mod_loader-paper","mod_loader-purpur","minecraft_version-1-21-10","minecraft_version-1-21-11","minecraft_version-1-21-7","minecraft_version-1-21-8","minecraft_version-1-21-9","minecraft_version-26-1","minecraft_version-26-1-1","minecraft_version-26-1-2"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>NotEnoughAuth [OAuth: Google, Discord, Telegram and more] - 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\/not-enough-auth\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"NotEnoughAuth [OAuth: Google, Discord, Telegram and more] - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Minecraft Paper plugin (1.21.7+) that brings OAuth authentication and allows players to login\/register using multiple providers [Google, GitHub, GitLab, Discord, Twitch, Telegram].\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/github.com\/user-attachments\/assets\/6de4ccad-41e9-4e68-aadd-f5eac1f3d88c\" \/>\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=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/\",\"name\":\"NotEnoughAuth [OAuth: Google, Discord, Telegram and more] - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/not-enough-auth-icon-df6e3d559fb54ade9fb0eca52bf63d9dc4c815ec_96.webp\",\"datePublished\":\"2026-06-06T16:48:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/not-enough-auth-icon-df6e3d559fb54ade9fb0eca52bf63d9dc4c815ec_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/not-enough-auth-icon-df6e3d559fb54ade9fb0eca52bf63d9dc4c815ec_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/not-enough-auth\\\/#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\":\"NotEnoughAuth [OAuth: Google, Discord, Telegram and more]\"}]},{\"@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":"NotEnoughAuth [OAuth: Google, Discord, Telegram and more] - 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\/not-enough-auth\/","og_locale":"en_US","og_type":"article","og_title":"NotEnoughAuth [OAuth: Google, Discord, Telegram and more] - Minecraft","og_description":"Minecraft Paper plugin (1.21.7+) that brings OAuth authentication and allows players to login\/register using multiple providers [Google, GitHub, GitLab, Discord, Twitch, Telegram].","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/github.com\/user-attachments\/assets\/6de4ccad-41e9-4e68-aadd-f5eac1f3d88c","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/","name":"NotEnoughAuth [OAuth: Google, Discord, Telegram and more] - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/not-enough-auth-icon-df6e3d559fb54ade9fb0eca52bf63d9dc4c815ec_96.webp","datePublished":"2026-06-06T16:48:25+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/not-enough-auth-icon-df6e3d559fb54ade9fb0eca52bf63d9dc4c815ec_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/not-enough-auth-icon-df6e3d559fb54ade9fb0eca52bf63d9dc4c815ec_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/not-enough-auth\/#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":"NotEnoughAuth [OAuth: Google, Discord, Telegram and more]"}]},{"@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\/113738","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:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/113739"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=113738"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=113738"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=113738"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=113738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}