{"id":3554,"date":"2008-08-17T09:46:58","date_gmt":"2008-08-17T09:46:58","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/authenticator\/"},"modified":"2026-01-21T07:23:30","modified_gmt":"2026-01-21T07:23:30","slug":"authenticator","status":"publish","type":"plugin","link":"https:\/\/mk.wordpress.org\/plugins\/authenticator\/","author":6342006,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.3.1","stable_tag":"1.3.1","tested":"6.9.4","requires":"5.0","requires_php":"5.6","requires_plugins":null,"header_name":"Authenticator","header_author":"Inpsyde GmbH","header_description":"","assets_banners_color":"","last_updated":"2026-01-21 07:23:30","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/authenticator\/","header_author_uri":"https:\/\/github.com\/bueltge\/authenticator","rating":5,"author_block_rating":0,"active_installs":1000,"downloads":97848,"num_ratings":8,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"0.2":{"tag":"0.2","author":"Bueltge","date":"2011-04-06 19:06:25"},"0.3":{"tag":"0.3","author":"Bueltge","date":"2011-04-06 19:23:17"},"0.4.0":{"tag":"0.4.0","author":"Bueltge","date":"2011-04-11 19:11:10"},"0.4.1":{"tag":"0.4.1","author":"Bueltge","date":"2011-11-08 18:43:02"},"1.0.0":{"tag":"1.0.0","author":"Bueltge","date":"2012-11-10 11:26:59"},"1.1.0":{"tag":"1.1.0","author":"Bueltge","date":"2014-04-17 09:29:05"},"1.2.3":{"tag":"1.2.3","author":"Bueltge","date":"2017-11-30 12:02:20"},"1.3.0":{"tag":"1.3.0","author":"Bueltge","date":"2022-01-18 11:34:11"},"1.3.1":{"tag":"1.3.1","author":"nullbyte","date":"2026-01-21 07:23:30"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":8},"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":1429631,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2","0.3","0.4.0","0.4.1","1.0.0","1.1.0","1.2.3","1.3.0","1.3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":717235,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":717235,"resolution":"2","location":"assets","locale":""}},"screenshots":{"1":"Authenticator's setting options at Settings \u2192 Reading.","2":"Auth token for feeds is displayed on the user's profile settings page."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1911,1985,9232,602,1919],"plugin_category":[34,38,58],"plugin_contributors":[77677,80613,77675,77678],"plugin_business_model":[],"class_list":["post-3554","plugin","type-plugin","status-publish","hentry","plugin_tags-access","plugin_tags-accessible","plugin_tags-authentification","plugin_tags-login","plugin_tags-members","plugin_category-accessibility","plugin_category-authentication","plugin_category-user-management","plugin_contributors-bueltge","plugin_contributors-dnaber-de","plugin_contributors-inpsyde","plugin_contributors-nullbyte","plugin_committers-bueltge","plugin_committers-dnaber-de","plugin_committers-inpsyde","plugin_committers-nullbyte"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/authenticator\/assets\/icon-256x256.png?rev=1429631","icon_2x":"https:\/\/ps.w.org\/authenticator\/assets\/icon-256x256.png?rev=1429631","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/authenticator\/assets\/screenshot-1.png?rev=717235","caption":"Authenticator's setting options at Settings \u2192 Reading."},{"src":"https:\/\/ps.w.org\/authenticator\/assets\/screenshot-2.png?rev=717235","caption":"Auth token for feeds is displayed on the user's profile settings page."}],"raw_content":"<!--section=description-->\n<p>This plugin allows you to make your WordPress site accessible to logged in users only. In other words, to view your site they have to create or have an account on your site and be logged in. No configuration necessary, simply activating - that's all.<\/p>\n\n<h4>Crafted by Inpsyde<\/h4>\n\n<p>The team at <a href=\"https:\/\/inpsyde.com\">Inpsyde<\/a> is engineering the web and WordPress since 2006.<\/p>\n\n<h4>Donation?<\/h4>\n\n<p>You want to donate - we prefer a positive review, not more.<\/p>\n\n<h4>Bugs, technical hints or contribute<\/h4>\n\n<p>Please give me feedback, contribute and file technical bugs on <a href=\"https:\/\/github.com\/bueltge\/Authenticator\">GitHub Repo<\/a>.<\/p>\n\n<h4>License<\/h4>\n\n<p>Good news, this plugin is free for everyone! Since it's released under the GPL, you can use it free of charge on your personal or commercial blog. But if you enjoy this plugin, you can thank me and leave a <a href=\"https:\/\/www.paypal.com\/cgi-bin\/webscr?cmd=_s-xclick&amp;hosted_button_id=6069955\">small donation<\/a> for the time I've spent writing and supporting this plugin. And I really don't want to know how many hours of my life this plugin has already eaten ;)<\/p>\n\n<h4>Translations<\/h4>\n\n<p>The plugin comes with various translations, please refer to the <a href=\"https:\/\/codex.wordpress.org\/Installing_WordPress_in_Your_Language\">WordPress Codex<\/a> for more information about activating the translation. If you want to help to translate the plugin to your language, please have a look at the translation possibility in <a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/authenticator\">this page here<\/a>.<\/p>\n\n<h4>Donation?<\/h4>\n\n<p>You want to donate - we prefer a positive review, not more.<\/p>\n\n<!--section=installation-->\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress version 1.5 and later.<\/li>\n<li>PHP 5.6 or later.<\/li>\n<li>Single or Multisite installation.<\/li>\n<\/ul>\n\n<p>On PHP-CGI setups:\n - <code>mod_setenvif<\/code> or <code>mod_rewrite<\/code> (if you want to user HTTP authentication for feeds).<\/p>\n\n<h4>Installation<\/h4>\n\n<ol>\n<li>Unzip the downloaded package.<\/li>\n<li>Upload folder include the file to the <code>\/wp-content\/plugins\/<\/code> directory.<\/li>\n<li>Activate the plugin through the <code>Plugins<\/code> menu in WordPress.<\/li>\n<\/ol>\n\n<p>or use the installer via the back end of WordPress.<\/p>\n\n<h4>On PHP-CGI setups<\/h4>\n\n<p>If you want to use HTTP authentication for feeds (available since 1.1.0 as an <em>optional<\/em> feature) you have to update your <code>.htaccess<\/code> file. If <a href=\"http:\/\/httpd.apache.org\/docs\/2.0\/mod\/mod_setenvif.html\">mod_setenvif<\/a> is available, add the following line to your <code>.htaccess<\/code>:<\/p>\n\n<pre><code>SetEnvIfNoCase ^Authorization$ \"(.+)\" HTTP_AUTHORIZATION=$1\n<\/code><\/pre>\n\n<p>Otherwise you need <a href=\"http:\/\/httpd.apache.org\/docs\/current\/mod\/mod_rewrite.html\">mod_rewrite<\/a> to be enabled. In this case you have to add the following line to your <code>.htaccess<\/code>:<\/p>\n\n<pre><code>RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n<\/code><\/pre>\n\n<p>In a typical WordPress <code>.htaccess<\/code> it all looks like:<\/p>\n\n<pre><code>&lt;IfModule mod_rewrite.c&gt;\n    RewriteEngine On\n    RewriteBase \/\n    RewriteRule ^index\\.php$ - [L]\n    RewriteCond %{REQUEST_FILENAME} !-f\n    RewriteCond %{REQUEST_FILENAME} !-d\n    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\n    RewriteRule . \/index.php [L]\n&lt;\/IfModule&gt;\n<\/code><\/pre>\n\n<p>On a multisite installation:<\/p>\n\n<pre><code># BEGIN WordPress\nRewriteEngine On\nRewriteBase \/\nRewriteRule ^index\\.php$ - [L]\n\n# uploaded files\nRewriteRule ^files\/(.+) wp-includes\/ms-files.php?file=$1 [L]\n\nRewriteCond %{REQUEST_FILENAME} -f [OR]\nRewriteCond %{REQUEST_FILENAME} -d\nRewriteRule ^ - [L]\n\nRewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]\nRewriteRule . index.php [L]\n# END WordPress\n<\/code><\/pre>\n\n<h4>Settings<\/h4>\n\n<p>You can change the settings of Authenticator in Settings \u2192 Reading. The settings refer to the behavior of your blog's feeds. They can be protected by HTTP authentication (not all feed readers support this) or by an authentication token which is added to your feed URL as a parameter. The third option is to keep everything in place. So feed URLs will be redirected to the login page if the user is not logged in (send no auth-cookie).<\/p>\n\n<p>If you using token authentication, you can show the token to the blog users on their profile settings page by setting this option.<\/p>\n\n<h4>HTTP Auth<\/h4>\n\n<p>Users can gain access to the feed with their username and password.<\/p>\n\n<h4>Token Auth<\/h4>\n\n<p>The plugin will generate a token automatically when choosing this option. Copy this token and share it with the people who should have access to your feed. If your token is <code>ef05aa961a0c10dce006284213727730<\/code> the feed URLs look like so:<\/p>\n\n<pre><code># Main feed\nhttps:\/\/example.com\/feed\/?ef05aa961a0c10dce006284213727730\n\n# Main comment feed\nhttps:\/\/example.com\/comments\/feed\/?ef05aa961a0c10dce006284213727730\n\n# Without permalinks\nhttps:\/\/example.com\/?feed=rss2&amp;ef05aa961a0c10dce006284213727730\n<\/code><\/pre>\n\n<h4>API<\/h4>\n\n<p><strong>Filters<\/strong><\/p>\n\n<ul>\n<li><p><code>authenticator_get_options<\/code> gives you access to the current authentication token:<\/p>\n\n<p>&lt;?php\n$authenticator_options = apply_filters( 'authenticator_get_options', array() );<\/p><\/li>\n<li><p><code>authenticator_bypass<\/code> gives you the possibility to completely bypass the authentication. No authentication will be required then.<\/p>\n\n<p>&lt;?php\nadd_filter( 'authenticator_bypass', '__return_true' );<\/p><\/li>\n<li><p><code>authenticator_bypass_feed_auth<\/code> gives you the possibility to open the feeds for everyone. No authentication will be required then.<\/p>\n\n<p>&lt;?php\nadd_filter( 'authenticator_bypass_feed_auth', '__return_true' );<\/p><\/li>\n<li><p><code>authenticator_exclude_pagenows<\/code> Pass an array of <code>$GLOBALS[ 'pagenow' ]<\/code> values to it, to exclude several WordPress pages from redirecting to the login page.<\/p><\/li>\n<li><p><code>authenticator_exclude_ajax_actions<\/code> AJAX-Actions (independend of <code>_nopriv<\/code>) which should not be authenticated (remain open for everyone)<\/p><\/li>\n<li><p><code>authenticator_exclude_posts<\/code> List of post-titles which should remain public, like the follow example source to public the 'Contact'-page.<\/p>\n\n<pre><code>&lt;?php\nadd_action( 'plugins_loaded', function() {\n    add_filter( 'authenticator_exclude_posts', function( $titles ) {\n        $titles[] = 'Contact'; \/\/ here goes the post-title of the post\/page you want to exclude\n        return $titles;\n    } );\n} );\n<\/code><\/pre><\/li>\n<\/ul>\n\n<!--section=changelog-->\n<h4>1.3.1 (2022-11-22)<\/h4>\n\n<ul>\n<li>Security Fix: Generate valid nonce only for privileged user to prevent privilege elevation.<\/li>\n<\/ul>\n\n<h4>1.3.0 (2017-11-30)<\/h4>\n\n<ul>\n<li>Fixed a topic on login of users if you exclude posts from the Authenticator.<\/li>\n<li>Add new filter hook to bypass the plugin <code>authenticator_bypass<\/code>, see the readme.<\/li>\n<li>Should now be ready for translations from the WordPress translation service.<\/li>\n<\/ul>\n\n<h4>1.2.3 (08\/10\/2017)<\/h4>\n\n<ul>\n<li>Fixed loop about settings that create a fatal error.<\/li>\n<li>Added authentication also for REST API; probs steffenster.<\/li>\n<\/ul>\n\n<h4>1.2.2 (08\/10\/2017)<\/h4>\n\n<ul>\n<li>Update readme to solve support questions, it works also under newer WP versions, tested up 4.9-alpha.<\/li>\n<\/ul>\n\n<h4>1.2.1 (08\/31\/2014)<\/h4>\n\n<ul>\n<li>Add guard for the constant <code>XMLRPC_REQUEST<\/code>.<\/li>\n<li>Fix for XML-RPC bug <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/17\">#17<\/a>.<\/li>\n<li>Enhance the readme to exclude posts\/pages <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/18\">#18<\/a>.<\/li>\n<\/ul>\n\n<h4>1.2.0 (06\/26\/2014)<\/h4>\n\n<ul>\n<li>Fix the PHP notice <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/15\">#15<\/a>.<\/li>\n<li>Fix <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/14\">#14<\/a>.<\/li>\n<li>Add a removal of backlink in login footer <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/8\">#8<\/a>.<\/li>\n<li>Filter for Ajax actions <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/12\">#12<\/a>.<\/li>\n<li>Redefine <code>$reauth<\/code> for redirect <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/11\">#11<\/a>.<\/li>\n<li>Apply API Hook for exclude several URLs from redirect <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/10\">#10<\/a>.<\/li>\n<li>Add settings for XML-RPC <a href=\"https:\/\/github.com\/bueltge\/Authenticator\/issues\/9\">#9<\/a>.<\/li>\n<li>Add Composer support.<\/li>\n<li>Update readme to see all information on wordpress.org repo.<\/li>\n<\/ul>\n\n<h4>1.1.0 (04\/17\/2014)<\/h4>\n\n<ul>\n<li>Add HTTP authentification for feeds.<\/li>\n<li>Add settings for reading the feed.<\/li>\n<li>Add token auth for feeds.<\/li>\n<\/ul>\n\n<h4>1.0.0 (01\/20\/2012)<\/h4>\n\n<ul>\n<li>Fix in multisite for redirect, also if the user does not have an account.<\/li>\n<li>Small rewrite for better codex.<\/li>\n<\/ul>\n\n<h4>0.4.1 (04\/20\/2011)<\/h4>\n\n<ul>\n<li>Remove network comment for using different blogs in Multisite.<\/li>\n<\/ul>\n\n<h4>0.4.0 (04\/11\/2011)<\/h4>\n\n<ul>\n<li>Bugfix for login without multisite.<\/li>\n<li>Ask for multisite.<\/li>\n<li>Fix for using plugin with WP earlier than 3.*.<\/li>\n<li>Also usable in mu-plugins folder.<\/li>\n<\/ul>\n\n<h4>0.3.0 (04\/06\/2011)<\/h4>\n\n<ul>\n<li>Add check for rights to publish posts to use the plugin on Multisite Install; only users with this rights have access to the blog of Multisite install.<\/li>\n<li>Small changes of code.<\/li>\n<\/ul>","raw_excerpt":"This plugin allows you to make your WordPress site accessible to logged in users only.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/3554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=3554"}],"author":[{"embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/inpsyde"}],"wp:attachment":[{"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=3554"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=3554"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=3554"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=3554"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=3554"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mk.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=3554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}