diff --git a/docs/howto/auth/nativeauth.rst b/docs/howto/auth/nativeauth.rst
new file mode 100644
index 0000000..318eb86
--- /dev/null
+++ b/docs/howto/auth/nativeauth.rst
@@ -0,0 +1,38 @@
+.. _howto/auth/nativeauth:
+
+==================================================
+Users can signup and create username and password
+==================================================
+
+The **Native Authenticator** lets users signup for creating a new username
+and password.
+When they signup, they won't be able to login until they are authorized by an
+admin. Users that are characterized as admin have to signup as well, but they
+will be authorized automatically.
+
+
+Enabling the authenticator
+==========================
+
+#. Enable the authenticator and reload config to apply the configuration:
+
+ sudo tljh-config set auth.type nativeauthenticator.NativeAuthenticator
+ sudo tljh-config reload
+
+
+Allowing all users to be authorized after signup
+================================================
+
+By default, all users created on signup don't have authorization to login.
+If you wish to allow **any** user to access
+the JupyterHub just after the signup, run the following command:
+
+.. code-block:: bash
+
+ tljh-config set auth.NativeAuthenticator.open_signup true
+ tljh-config reload
+
+Optional features
+=================
+
+More optional features are available on the `authenticator documentation `
diff --git a/docs/index.rst b/docs/index.rst
index ea6e6b9..0dd4fdc 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -76,6 +76,7 @@ with your JupyterHub. For more information on Authentication, see
howto/auth/dummy
howto/auth/github
howto/auth/firstuse
+ howto/auth/nativeauth
Administration and security
---------------------------
@@ -147,4 +148,4 @@ to people contributing in various ways.
contributing/dev-setup
contributing/tests
contributing/plugins
- contributing/packages
\ No newline at end of file
+ contributing/packages
diff --git a/docs/topic/authenticator-configuration.rst b/docs/topic/authenticator-configuration.rst
index 32721c6..5e40a9a 100644
--- a/docs/topic/authenticator-configuration.rst
+++ b/docs/topic/authenticator-configuration.rst
@@ -16,6 +16,7 @@ can be used with TLJH. A number of them ship by default with TLJH:
available.
#. `FirstUseAuthenticator `_ - Users set
their password when they log in for the first time. Default authenticator used in TLJH.
+#. `NativeAuthenticator `_ - Allow users to signup, add password security verification and block users after failed attempts oflogin.
We try to have specific how-to guides & tutorials for common authenticators. Since we can not cover
everything, this guide shows you how to use any authenticator you want with JupyterHub by following
diff --git a/tests/test_configurer.py b/tests/test_configurer.py
index 59dd6ec..a471098 100644
--- a/tests/test_configurer.py
+++ b/tests/test_configurer.py
@@ -159,3 +159,19 @@ def test_auth_github():
assert c.JupyterHub.authenticator_class == 'oauthenticator.github.GitHubOAuthenticator'
assert c.GitHubOAuthenticator.client_id == 'something'
assert c.GitHubOAuthenticator.client_secret == 'something-else'
+
+
+def test_auth_native():
+ """
+ Test setting Native Authenticator
+ """
+ c = apply_mock_config({
+ 'auth': {
+ 'type': 'nativeauthenticator.NativeAuthenticator',
+ 'NativeAuthenticator': {
+ 'open_signup': True,
+ }
+ }
+ })
+ assert c.JupyterHub.authenticator_class == 'nativeauthenticator.NativeAuthenticator'
+ assert c.NativeAuthenticator.open_signup == True
diff --git a/tljh/installer.py b/tljh/installer.py
index 10c5796..af6adb8 100644
--- a/tljh/installer.py
+++ b/tljh/installer.py
@@ -188,6 +188,7 @@ def ensure_jupyterhub_package(prefix):
'jupyterhub-dummyauthenticator==0.3.1',
'jupyterhub-systemdspawner==0.11',
'jupyterhub-firstuseauthenticator==0.12',
+ 'jupyterhub-nativeauthenticator==0.0.4',
'jupyterhub-ldapauthenticator==1.2.2',
'oauthenticator==0.8.0',
])