{ "info": { "author": "Cristhian Won", "author_email": "cristhian.won@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 2.2", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "# Django Clave Unica\n\nAplicaci\u00c3\u00b3n Djando que permite la autenticaci\u00c3\u00b3n de los ciudadanos de Chile.\n\n[![GitHub release](https://img.shields.io/github/release/gatosnake/django-clave-unica.svg)](https://github.com/GatoSnake/django-clave-unica/releases/)\n[![GitHub tag](https://img.shields.io/github/tag/gatosnake/django-clave-unica.svg)](https://github.com/GatoSnake/django-clave-unica/tags/)\n[![GitHub license](https://img.shields.io/github/license/gatosnake/django-clave-unica.svg)](https://github.com/GatoSnake/django-clave-unica/blob/master/LICENSE)\n[![Github all releases](https://img.shields.io/github/downloads/gatosnake/django-clave-unica/total.svg)](https://github.com/GatoSnake/django-clave-unica/releases/)\n\n## Codigo Fuente\n\nEl c\u00c3\u00b3digo fuente de la aplicaci\u00c3\u00b3n lo puedes obtener de la siguiente url en Github:\nhttps://github.com/GatoSnake/django-clave-unica\n\nSi esta aplicaci\u00c3\u00b3n te fue de ayuda, no dudes en compartirlo y hacermelo saber. :blush: :beers:\n\nAdem\u00c3\u00a1s, esta abierto para que hagan sus pull requests en casos de realizar mejoras al c\u00c3\u00b3digo. :sunglasses:\n\n## Instalaci\u00c3\u00b3n\n\n1. Descarga e instala el paquete utilizando `pipenv` o `pip` de la siguiente manera:\n```\npip install django-clave-unica\n```\n\n2. Agrega la aplicaci\u00c3\u00b3n `clave_unica_auth` en el par\u00c3\u00a1metro INSTALLED_APPS de tu archivo `settings.py`, \nde la siguiente manera:\n```python\nINSTALLED_APPS = [\n\t...\n\t'clave_unica_auth',\n]\n```\n\n3. Incluir las credenciales de la aplicaci\u00c3\u00b3n para la autenticaci\u00c3\u00b3n de los usuarios. Como par\u00c3\u00a1metros m\u00c3\u00adnimos, debe ingresar en el archivo `settings.py` lo siguiente:\n```python\nCLAVE_UNICA = {\n 'CLIENT_ID': 'client_id',\n 'CLIENT_SECRET': 'client_secret',\n 'REDIRECT_URI': 'redirect_uri',\n}\n```\n**Para obtener tus credenciales de integraci\u00c3\u00b3n con Clave \u00c3\u0161nica, accede a https://claveunica.gob.cl/institucional.**\n\n4. Incluye la ruta de autenticaci\u00c3\u00b3n Clave \u00c3\u0161nica en el archivo `urls.py` de tu proyecto, \nde la siguiente manera:\n```python\nurlpatterns = [\n\t\t...\n\tpath('claveunica/', include('clave_unica_auth.urls')),\n\t...\n]\n```\n\n5. Ejecutar `python manage.py migrate` para migrar el modelo de personas de Clave Unica a la base de datos.\n\n6. Ejecutar el servidor de desarrollo y acceder a http://127.0.0.1:8000/claveunica/login para realizar el proceso de autenticaci\u00c3\u00b3n.\n\n## Funcionamiento\n\n1. Cuando un usuario iniciar sesi\u00c3\u00b3n contra Clave \u00c3\u0161nica, el sistema lo redirige al portal de autenticaci\u00c3\u00b3n creando para esa sesion de autenticaci\u00c3\u00b3n un par\u00c3\u00a1metro llamado `state` en formato UUIDv4, en el cual dura 30 minutos y se guarda en el cache por defecto de Django. \n2. Si las credenciales del usuario son correctas, Clave \u00c3\u0161nica redirige nuevamente al usuario a la aplicaci\u00c3\u00b3n a trav\u00c3\u00a9s de una URL callback que es registrada por el due\u00c3\u00b1o de la aplicaci\u00c3\u00b3n en en registro de instituciones de clave \u00c3\u0161nica (https://claveunica.gob.cl/institucional).\n3. 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.\n\nA nivel de base de datos, la estructura de los datos esta compuesta de la siguiente manera:\n* La columna `username` de la tabla de usuario de Django posee la informaci\u00c3\u00b3n del RUN de la persona.\n* La informaci\u00c3\u00b3n 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.\n* La tabla `clave_unica_auth_login` posee el registro de todos los intentos de inicios de sesi\u00c3\u00b3n. En ella se guarda la fecha, direcci\u00c3\u00b3n IP remoto, el par\u00c3\u00a1metro state, el resultado de la autenticaci\u00c3\u00b3n y el usuario asociado si este existe en BD.\n\n## Otras configuraciones\n\n### CLAVEUNICA_URL_LOGIN\nUrl de login en Clave \u00c3\u0161nica.\n```\nType: string\nDefault: https://accounts.claveunica.gob.cl/openid/authorize\n```\n### CLAVEUNICA_URL_LOGOUT\nUrl de logout Clave \u00c3\u0161nica.\n```\nType: string\nDefault: https://api.claveunica.gob.cl/api/v1/accounts/app/logout\n```\n### CLAVEUNICA_REMEMBER_LOGIN\nRecuerda la autenticaci\u00c3\u00b3n del usuario de Clave \u00c3\u0161nica.\n```\nType: boolean\nDefault: False\n```\nNOTA: Para no recordar la autenticaci\u00c3\u00b3n del usuario, se realiza el truco de abrir un iframe escondido en el html con la url del par\u00c3\u00a1metro `CLAVEUNICA_URL_LOGOUT`.\n### CLAVEUNICA_TOKEN_URI\nUrl intercambio autorization_code a access_token en Clave \u00c3\u0161nica.\n```\nType: string\nDefault: https://accounts.claveunica.gob.cl/openid/token\n```\n### CLAVEUNICA_USERINFO_URI\nUrl para obtenci\u00c3\u00b3n de informaci\u00c3\u00b3n del usuario en Clave \u00c3\u0161nica.\n```\nType: string\nDefault: https://accounts.claveunica.gob.cl/openid/userinfo\n```\n### CLAVEUNICA_STATE_TIMEOUT\nTiempo en segundos que dura el par\u00c3\u00a1metro `state` antes de realizar la autenticaci\u00c3\u00b3n en Clave \u00c3\u0161nica.\n```\nType: int\nDefault: 1800\n```\n### CLAVEUNICA_AUTO_CREATE_USER\nCrea automaticamente al usuario si no existe en BD.\n```\nType: boolean\nDefault: True\n```\n### CLAVEUNICA_PATH_LOGIN\nUrl path para login Clave \u00c3\u0161nica.\n```\nType: string\nDefault: login/\n```\n### CLAVEUNICA_PATH_REDIRECT\nUrl path redirect desde Clave \u00c3\u0161nica.\n```\nType: string\nDefault: callback/\n```\n### CLAVEUNICA_PATH_SUCCESS_LOGIN\nUrl path a vista que se redirige despues de hacer login correctamente.\n```\nType: string\nDefault: /home/\n```\n### CLAVEUNICA_HTML_ERROR\nPath archivo error html.\n```\nType: string\nDefault: clave_unica_auth/error.html\n```\n\n## Changelog\n\n* **1.0.1** [14/07/19]\n\t* Se cambia la configuracion Clave \u00c3\u0161nica a tipo diccionario en settings.py.\n* **1.0.0** [07/07/19]\n\t* Permite la autenticaci\u00c3\u00b3n de los usuarios via Clave \u00c3\u0161nica.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/GatoSnake", "keywords": "", "license": "BSD License", "maintainer": "", "maintainer_email": "", "name": "django-clave-unica", "package_url": "https://pypi.org/project/django-clave-unica/", "platform": "", "project_url": "https://pypi.org/project/django-clave-unica/", "project_urls": { "Homepage": "https://github.com/GatoSnake" }, "release_url": "https://pypi.org/project/django-clave-unica/1.0.1/", "requires_dist": [ "requests (>=2.22.0)", "urllib3 (>=1.25.3)" ], "requires_python": "", "summary": "Aplicacion Django para integraci\u00f3n con autenticaci\u00f3n Clave \u00danica", "version": "1.0.1" }, "last_serial": 5532396, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "ccdfa816b989100eb96809cd5565b1e0", "sha256": "1c540f144892e2b9f241188af20ae6526fd6345e33c7cab6453d83d5ab5c41c3" }, "downloads": -1, "filename": "django_clave_unica-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ccdfa816b989100eb96809cd5565b1e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17235, "upload_time": "2019-07-14T22:56:32", "url": "https://files.pythonhosted.org/packages/c2/c1/e89fe0fc3e63977adf90c2e9a8b3f87d1d18e0f686df3b78917d5bf3c6b3/django_clave_unica-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f4f77cb27f745635df1778300e1905b", "sha256": "69022cd437f525e95c3e500806795dab3bbe12cbc0575dee559063f0ad040d92" }, "downloads": -1, "filename": "django-clave-unica-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0f4f77cb27f745635df1778300e1905b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13228, "upload_time": "2019-07-14T22:56:34", "url": "https://files.pythonhosted.org/packages/76/fe/550717d32f5fe2decd5e45213d40927171eee2d62ebb2509fd608e487b70/django-clave-unica-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ccdfa816b989100eb96809cd5565b1e0", "sha256": "1c540f144892e2b9f241188af20ae6526fd6345e33c7cab6453d83d5ab5c41c3" }, "downloads": -1, "filename": "django_clave_unica-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ccdfa816b989100eb96809cd5565b1e0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17235, "upload_time": "2019-07-14T22:56:32", "url": "https://files.pythonhosted.org/packages/c2/c1/e89fe0fc3e63977adf90c2e9a8b3f87d1d18e0f686df3b78917d5bf3c6b3/django_clave_unica-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f4f77cb27f745635df1778300e1905b", "sha256": "69022cd437f525e95c3e500806795dab3bbe12cbc0575dee559063f0ad040d92" }, "downloads": -1, "filename": "django-clave-unica-1.0.1.tar.gz", "has_sig": false, "md5_digest": "0f4f77cb27f745635df1778300e1905b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13228, "upload_time": "2019-07-14T22:56:34", "url": "https://files.pythonhosted.org/packages/76/fe/550717d32f5fe2decd5e45213d40927171eee2d62ebb2509fd608e487b70/django-clave-unica-1.0.1.tar.gz" } ] }