Skip to main content

Aplicacion Django para integración con autenticación Clave Única

Project description

Django Clave Unica

Aplicación Djando que permite la autenticación de los ciudadanos de Chile.

GitHub release GitHub tag GitHub license Github all releases

Codigo Fuente

El código fuente de la aplicación lo puedes obtener de la siguiente url en Github: https://github.com/GatoSnake/django-clave-unica

Si esta aplicación te fue de ayuda, no dudes en compartirlo y hacermelo saber. :blush: :beers:

Además, esta abierto para que hagan sus pull requests en casos de realizar mejoras al código. :sunglasses:

Instalación

  1. Descarga e instala el paquete utilizando pipenv o pip de la siguiente manera:
pip install django-clave-unica
  1. Agrega la aplicación clave_unica_auth en el parámetro INSTALLED_APPS de tu archivo settings.py, de la siguiente manera:
INSTALLED_APPS = [
	...
	'clave_unica_auth',
]
  1. Incluir las credenciales de la aplicación para la autenticación de los usuarios. Como parámetros mínimos, debe ingresar en el archivo settings.py lo siguiente:
CLAVE_UNICA = {
    'CLIENT_ID': 'client_id',
    'CLIENT_SECRET': 'client_secret',
    'REDIRECT_URI': 'redirect_uri',
}

Para obtener tus credenciales de integración con Clave Única, accede a https://claveunica.gob.cl/institucional.

  1. Incluye la ruta de autenticación Clave Única en el archivo urls.py de tu proyecto, de la siguiente manera:
urlpatterns = [
		...
	path('claveunica/', include('clave_unica_auth.urls')),
	...
]
  1. Ejecutar python manage.py migrate para migrar el modelo de personas de Clave Unica a la base de datos.

  2. Ejecutar el servidor de desarrollo y acceder a http://127.0.0.1:8000/claveunica/login para realizar el proceso de autenticación.

Funcionamiento

  1. Cuando un usuario iniciar sesión contra Clave Única, el sistema lo redirige al portal de autenticación creando para esa sesion de autenticación un parámetro llamado state en formato UUIDv4, en el cual dura 30 minutos y se guarda en el cache por defecto de Django.
  2. Si las credenciales del usuario son correctas, Clave Única redirige nuevamente al usuario a la aplicación a través de una URL callback que es registrada por el dueño de la aplicación en en registro de instituciones de clave Única (https://claveunica.gob.cl/institucional).
  3. El sistema verifica el parametro state, si no ha expirado entonces verifica si el usuario existe en base de datos. En caso de no existir lo crea automaticamente y lo dirige a la vista ya autenticada.

A nivel de base de datos, la estructura de los datos esta compuesta de la siguiente manera:

  • La columna username de la tabla de usuario de Django posee la información del RUN de la persona.
  • La información de la persona, como el RUN y el DV esta guardada en la tabla clave_unica_auth_person, en el cual esta asociada a la tabla de usuarios de Django.
  • La tabla clave_unica_auth_login posee el registro de todos los intentos de inicios de sesión. En ella se guarda la fecha, dirección IP remoto, el parámetro state, el resultado de la autenticación y el usuario asociado si este existe en BD.

Otras configuraciones

CLAVEUNICA_URL_LOGIN

Url de login en Clave Única.

Type: string
Default: https://accounts.claveunica.gob.cl/openid/authorize

CLAVEUNICA_URL_LOGOUT

Url de logout Clave Única.

Type: string
Default: https://api.claveunica.gob.cl/api/v1/accounts/app/logout

CLAVEUNICA_REMEMBER_LOGIN

Recuerda la autenticación del usuario de Clave Única.

Type: boolean
Default: False

NOTA: Para no recordar la autenticación del usuario, se realiza el truco de abrir un iframe escondido en el html con la url del parámetro CLAVEUNICA_URL_LOGOUT.

CLAVEUNICA_TOKEN_URI

Url intercambio autorization_code a access_token en Clave Única.

Type: string
Default:  https://accounts.claveunica.gob.cl/openid/token

CLAVEUNICA_USERINFO_URI

Url para obtención de información del usuario en Clave Única.

Type: string
Default:  https://accounts.claveunica.gob.cl/openid/userinfo

CLAVEUNICA_STATE_TIMEOUT

Tiempo en segundos que dura el parámetro state antes de realizar la autenticación en Clave Única.

Type: int
Default:  1800

CLAVEUNICA_AUTO_CREATE_USER

Crea automaticamente al usuario si no existe en BD.

Type: boolean
Default:  True

CLAVEUNICA_PATH_LOGIN

Url path para login Clave Única.

Type: string
Default:  login/

CLAVEUNICA_PATH_REDIRECT

Url path redirect desde Clave Única.

Type: string
Default:  callback/

CLAVEUNICA_PATH_SUCCESS_LOGIN

Url path a vista que se redirige despues de hacer login correctamente.

Type: string
Default:  /home/

CLAVEUNICA_HTML_ERROR

Path archivo error html.

Type: string
Default:  clave_unica_auth/error.html

Changelog

  • 1.0.1 [14/07/19]
    • Se cambia la configuracion Clave Única a tipo diccionario en settings.py.
  • 1.0.0 [07/07/19]
    • Permite la autenticación de los usuarios via Clave Única.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-clave-unica-1.0.1.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_clave_unica-1.0.1-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file django-clave-unica-1.0.1.tar.gz.

File metadata

  • Download URL: django-clave-unica-1.0.1.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for django-clave-unica-1.0.1.tar.gz
Algorithm Hash digest
SHA256 69022cd437f525e95c3e500806795dab3bbe12cbc0575dee559063f0ad040d92
MD5 0f4f77cb27f745635df1778300e1905b
BLAKE2b-256 76fe550717d32f5fe2decd5e45213d40927171eee2d62ebb2509fd608e487b70

See more details on using hashes here.

File details

Details for the file django_clave_unica-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: django_clave_unica-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3

File hashes

Hashes for django_clave_unica-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1c540f144892e2b9f241188af20ae6526fd6345e33c7cab6453d83d5ab5c41c3
MD5 ccdfa816b989100eb96809cd5565b1e0
BLAKE2b-256 c2c1e89fe0fc3e63977adf90c2e9a8b3f87d1d18e0f686df3b78917d5bf3c6b3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page