Skip to main content

AX3 OTP Auth

AX3 OTP Auth is a very simple Django library for generating and verifying one-time passwords using HTOP guidelines.

Installation

Axes is easy to install from the PyPI package:

$ pip install django-axes

After installing the package, the project settings need to be configured.

1. Add ax3_OTP to your INSTALLED_APPS::

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # Axes app can be in any position in the INSTALLED_APPS list.
    'ax3_OTP_Auth',
]

2. Add ax3_OTP_Auth.backends.OTPAuthBackend to the top of AUTHENTICATION_BACKENDS:

AUTHENTICATION_BACKENDS = [
    'ax3_OTP_Auth.backends.OTPAuthBackend',

    # Django ModelBackend is the default authentication backend.
    'django.contrib.auth.backends.ModelBackend',
]

3. Add the following to your urls.py:

urlpatterns = [
    path('OTP-Auth/', include('ax3_OTP_Auth.urls', namespace='otp_auth')),
]

4. Create html button to your template:

<button class="js-otp-auth" type="button" otp-login="{% url 'otp_auth:start' %}" otp-redirect="{% url 'login' %}">
    Login
</button>

5. Create Javascript for open OTP window:

$(() => {
    $('.js-otp-auth').on('click', function () {
        let redirect = $(this).attr('otp-redirect');
        let OTPLoginUrl = $(this).attr('otp-login');

        let width = 420;
        let height = 470;
        let top = (screen.height / 2) - (height / 2);
        let left = (screen.width / 2) - (width / 2);

        window.open(`${window.origin}${OTPLoginUrl}?redirect=${redirect}`, '_blank', `location=yes, scrollbars=yes, status=yes, width=${width}, height=${height}, top=${top}, left=${left}`);
    });
});

Configuration

If your need pass any param for whole pipeline you can use OTP_AUTH_PARAMS:

`OTP_AUTH_PARAMS = ['param']`

If your need change life time cache value you can use OTP_AUTH_TTL:

`OTP_AUTH_TTL = 60 * 60 * 5  # 5 minutes`

If your need change sms message:

`OTP_AUTH_MESSAGE = 'Utiliza {} como código de inicio de sesión.`

Configure countries allowed list: COLOMBIA = 57 ARGENTINA = 54 BOLIVIA = 591 CHILE = 56 COSTA_RICA = 506 CUBA = 53 DOMINICAN_REPUBLIC = 809 ECUADOR = 593 GUATEMALA = 502 MEXICO = 52 PERU = 51

OTP_AUTH_COUNTRIES_CODES = [57, 54]

Change color, brand name and logo using this variables:

OTP_PRIMARY_COLOR = '#eb6806'
OTP_BACKGROUND_BTN = '#eb6806'
OTP_BACKGROUND_BTN_HOVER = '#000'
OTP_COLOR_TEXT_BTN = '#fff'
OTP_COLOR_TEXT_BTN_HOVER = '#fff'
OTP_BRAND_NAME = 'Axiacore'
OTP_BRAND_IMG = 'user-relative-path'

NSN Configuration

AX3 OTP use NSN AWS service for sending messages, please create a group and AIM user with the following policy:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish",
                "sns:SetSMSAttributes",
                "sns:GetSMSAttributes"
            ],
            "Resource": "*"
        }
    ]
}

Set AIM user credentials to your settings:

OTP_AUTH_AWS_ACCESS_KEY_ID = ''
OTP_AUTH_AWS_SECRET_ACCESS_KEY = ''
OTP_AUTH_AWS_DEFAULT_REGION = 'us-west-2'

Authentication and Authorization

Authenticated user requires an OTP, this OTP was sent by AWS SNS service, once the code is valid, the system returns a token that must then be used to obtain the phone number which was requested. for this purpose you can use 'get_phone_number':

hotp = HOTP(session_key=request.session.session_key)
phone_number = htop.get_phone_number(code='123')

Custom SMS Gateway

Set OTP_CUSTOM_SMS_GATEWAY to your settings with the path of your function and the function must be receive country_code, phone_number and message

OTP_CUSTOM_SMS_GATEWAY = 'app.utils.send_sms'

Style SASS

For development porpuse is necessary to compile the SASS files before you commit any change.

Install node from this link:

https://nodejs.org/en/

Then install sass

$ sudo npm install -g sass

It ask you for a password, write de password of the user of the computer.

Compile SASS

To change the styles of the web page you need to do edit the Sass's files and then run this command on the root folder of the project to compile it to CSS:

$ sass --watch ax3_OTP_Auth/static/otp_auth/sass/styles.sass ax3_OTP_Auth/static/otp_auth/css/styles.css

Release files for AX3-OTP-Auth 1.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for AX3-OTP-Auth 1.0.5
File Size Uploaded
AX3 OTP Auth-1.0.5.tar.gz 113.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for AX3-OTP-Auth 1.0.5
File Interpreter ABI Platform
AX3_OTP_Auth-1.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 231.8 kB

Release files / AX3 OTP Auth-1.0.5.tar.gz

Download URL AX3 OTP Auth-1.0.5.tar.gz
Size 113.1 kB
Tags Source
SHA-256 checksum
How to use checksums
bebc23a8aabd9a911782c4113e06ae90045507845b2c4f69e1ceb1638bb665e6
BLAKE2b-256 checksum
How to use checksums
478cb132152aa0fa81dea43280ce916b2c938751232e39910c976090b9305a8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.5

Release files / AX3_OTP_Auth-1.0.5-py3-none-any.whl

Download URL AX3_OTP_Auth-1.0.5-py3-none-any.whl
Size 118.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae2c1100e788b6252089cea3a4d0986762205af70c21f61a0c7d3766e20952fa
BLAKE2b-256 checksum
How to use checksums
dbd6118fe2d734357042fef009db1247a8381ae879ce8cf4d4162d2414cca07f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.40.1 CPython/3.7.5

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page