Django Clave Unica
Aplicación Djando que permite la autenticación de los ciudadanos de Chile.
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
- Descarga e instala el paquete utilizando
pipenvopipde la siguiente manera:
pip install django-clave-unica
- Agrega la aplicación
clave_unica_authen el parámetro INSTALLED_APPS de tu archivosettings.py, de la siguiente manera:
INSTALLED_APPS = [
...
'clave_unica_auth',
]
- 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.pylo 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.
- Incluye la ruta de autenticación Clave Única en el archivo
urls.pyde tu proyecto, de la siguiente manera:
urlpatterns = [
...
path('claveunica/', include('clave_unica_auth.urls')),
...
]
-
Ejecutar
python manage.py migratepara migrar el modelo de personas de Clave Unica a la base de datos. -
Ejecutar el servidor de desarrollo y acceder a http://127.0.0.1:8000/claveunica/login para realizar el proceso de autenticación.
Funcionamiento
- 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
stateen formato UUIDv4, en el cual dura 30 minutos y se guarda en el cache por defecto de Django. - 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).
- 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
usernamede 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_loginposee 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.
Release files for django-clave-unica 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django-clave-unica-1.0.1.tar.gz | 13.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_clave_unica-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.5 kB
Release files / django-clave-unica-1.0.1.tar.gz
| Download URL | django-clave-unica-1.0.1.tar.gz |
|---|---|
| Size | 13.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
69022cd437f525e95c3e500806795dab3bbe12cbc0575dee559063f0ad040d92
|
|
BLAKE2b-256 checksum How to use checksums |
76fe550717d32f5fe2decd5e45213d40927171eee2d62ebb2509fd608e487b70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Release files / django_clave_unica-1.0.1-py3-none-any.whl
| Download URL | django_clave_unica-1.0.1-py3-none-any.whl |
|---|---|
| Size | 17.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1c540f144892e2b9f241188af20ae6526fd6345e33c7cab6453d83d5ab5c41c3
|
|
BLAKE2b-256 checksum How to use checksums |
c2c1e89fe0fc3e63977adf90c2e9a8b3f87d1d18e0f686df3b78917d5bf3c6b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|