{ "info": { "author": "Gary Burgmann", "author_email": "garyburgmann@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# Authicola\nA Python package offering convenient methods for OAuth2.0 authentication\n\nCurrently, Google and GitHub have been implemented\n\nExpects a config object passed into the class on instantiation of the Authicola class. \n\nScopes are accepted as arguments by the config, but they can also be passed in as a kwarg on the Authicola class method for the driver or a method on the driver itself.\n\nE.g.\n\n```\nDRIVERS = {\n 'google': {\n 'client_id': os.environ.get('GOOGLE_CLIENT'),\n 'client_secret': os.environ.get('GOOGLE_SECRET'),\n 'redirect_uri': os.environ.get('GOOGLE_REDIRECT'),\n 'scopes': ['profile', 'email']\n },\n 'github': {\n 'client_id': os.environ.get('GITHUB_CLIENT'),\n 'client_secret': os.environ.get('GITHUB_SECRET'),\n 'redirect_uri': os.environ.get('GITHUB_REDIRECT'),\n 'scopes': ['read:user', 'public_repo']\n }\n}\n\nfrom authicola import Authicola\n\na = Authicola(DRIVERS)\n\n# default scope from config used\nauthorization_url = a.driver('google').redirect_uri()\n# https://accounts.google.com/o/oauth2/v2/auth?scope=email+profile&access_type=offline&redirect_uri=&response_type=code&client_id=\n\n# only email scope requested as kwarg, overrides config for driver\nauthorization_url = a.driver('google', scopes=['email']).redirect_uri()\n# https://accounts.google.com/o/oauth2/v2/auth?scope=email&access_type=offline&redirect_uri=&response_type=code&client_id=\n\n# only profile and email scopes requested manually, this time as method on the driver class .scopes, overrides config for driver\nauthorization_url = a.driver('google').scopes('email', 'profile').redirect_uri()\n# https://accounts.google.com/o/oauth2/v2/auth?scope=email+profile&access_type=offline&redirect_uri=&response_type=code&client_id=\n\n```\n\nAn optional state parameter can be used in the same way as scope (without the default value), for prevention of CSRF attacks.\n\nE.g.\n\n```\n# not state param used\nauthorization_url = a.driver('github').redirect_uri()\n\n# state param set as kwarg\nauthorization_url = a.driver('github', state='state-string-here').redirect_uri()\n\n# state param set as class method state\nauthorization_url = a.driver('github').state('state-string-here').redirect_uri()\n\n```\n\nOn callback from the authentication provider, a params dict is expected for parsing to retrieve the user. An optional state parameter is also accepted, and if passed in it will be used to validate against the callback url params state param\n\nE.g.\n\n```\n# callack endpoint\n\na = Authicola(DRIVERS)\n\nparams = request.GET\n\nuser = a.driver('google').user(params)\n###\n{\n 'id': ,\n 'email': 'garyburgmann@gmail.com',\n 'verified_email': True,\n 'name': 'Gary Burgmann',\n 'given_name': 'Gary',\n 'family_name': 'Burgmann',\n 'picture': '',\n 'locale': 'en-GB'\n}\n###\n\n# or to validate the state between redirect and callback. the state sting can be any unguessable string you like\ndef redirect(self):\n state = uuid.uuid4().hex\n self.request.session.set('github_redirect', state)\n authorization_url = self.authicola.driver('github').state(state).redirect_uri()\n return request().redirect(authorization_url)\n\ndef callback(self):\n state = self.request.session.get('github_redirect')\n user = self.authicola.driver('github').user(request().all(), state)\n return user\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/garyburgmann/authicola", "keywords": "oauth,oauth2.0,authentication,python3,google", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "authicola", "package_url": "https://pypi.org/project/authicola/", "platform": "", "project_url": "https://pypi.org/project/authicola/", "project_urls": { "Homepage": "https://github.com/garyburgmann/authicola" }, "release_url": "https://pypi.org/project/authicola/0.0.7/", "requires_dist": null, "requires_python": ">=3.4", "summary": "A convenience libary of OAuth2.0 providers", "version": "0.0.7" }, "last_serial": 5693111, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "cdb39e3114ef21e2e80ffe05e5a99bb8", "sha256": "9035780532c94d9d103fa80fbe45aad2de179495d9832edd898ca74ddfeec41f" }, "downloads": -1, "filename": "authicola-0.0.1.tar.gz", "has_sig": false, "md5_digest": "cdb39e3114ef21e2e80ffe05e5a99bb8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 2338, "upload_time": "2019-08-16T02:06:09", "url": "https://files.pythonhosted.org/packages/ba/74/6669501927e819ffb8d404f4f243bd00c1da7e1e80592184f33fb6e8c260/authicola-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "51fe47ba2991c8fa078c9fa3dc50aa9c", "sha256": "4fdfd253af4bc5c7dba02e22a956458532ca5c9d2260a2e0b04a46f7989ec15f" }, "downloads": -1, "filename": "authicola-0.0.2.tar.gz", "has_sig": false, "md5_digest": "51fe47ba2991c8fa078c9fa3dc50aa9c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 2733, "upload_time": "2019-08-16T02:14:59", "url": "https://files.pythonhosted.org/packages/31/47/0e7cd7b14f0347608dbff6abd190a01890dee30b906063097294d61ce921/authicola-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "6c287c436831d7f8bc2ee808088812e2", "sha256": "77c3cc73017fd096ed4b66fa186da6df11512d5c9823ad2d0702c16c7a155a90" }, "downloads": -1, "filename": "authicola-0.0.3.tar.gz", "has_sig": false, "md5_digest": "6c287c436831d7f8bc2ee808088812e2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 2750, "upload_time": "2019-08-17T13:48:06", "url": "https://files.pythonhosted.org/packages/08/db/0f02d4e85c5564653550c66526f8e6b18c5be540ae4665c07922954a19ab/authicola-0.0.3.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "c284e3201b640c9157c73740aa1f9953", "sha256": "6e169b0ef93422c433e2b028b1ce3aeda2d788ee377672ffe734b5891ec97472" }, "downloads": -1, "filename": "authicola-0.0.5.tar.gz", "has_sig": false, "md5_digest": "c284e3201b640c9157c73740aa1f9953", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 3702, "upload_time": "2019-08-17T14:06:39", "url": "https://files.pythonhosted.org/packages/c6/6f/18885683c50e3788a10d780264da68faee29e731cd4d257f694530e4bc85/authicola-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "8e570be2f466eb133cf5dd41d3244765", "sha256": "5bc9129a58faa2fe9a59b107552f365d671528fded61c93727044ddf8e4ecc23" }, "downloads": -1, "filename": "authicola-0.0.6.tar.gz", "has_sig": false, "md5_digest": "8e570be2f466eb133cf5dd41d3244765", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 4481, "upload_time": "2019-08-17T23:47:23", "url": "https://files.pythonhosted.org/packages/01/77/dbbf8631945b74d3a939ce8dc4d6eba894e209fd8dff786737310dab5919/authicola-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "37980c854911e6420dfbe37c45449e70", "sha256": "cb126168839e8cfc61f9b1da08e8b67bf2fc52f16bd11e87ceffa53e3b53ffa9" }, "downloads": -1, "filename": "authicola-0.0.7.tar.gz", "has_sig": false, "md5_digest": "37980c854911e6420dfbe37c45449e70", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 4544, "upload_time": "2019-08-18T00:18:28", "url": "https://files.pythonhosted.org/packages/b9/c4/c72daa32e23e18da65766fa2960110612cb167282cb174a8d6b8e984b3f2/authicola-0.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "37980c854911e6420dfbe37c45449e70", "sha256": "cb126168839e8cfc61f9b1da08e8b67bf2fc52f16bd11e87ceffa53e3b53ffa9" }, "downloads": -1, "filename": "authicola-0.0.7.tar.gz", "has_sig": false, "md5_digest": "37980c854911e6420dfbe37c45449e70", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 4544, "upload_time": "2019-08-18T00:18:28", "url": "https://files.pythonhosted.org/packages/b9/c4/c72daa32e23e18da65766fa2960110612cb167282cb174a8d6b8e984b3f2/authicola-0.0.7.tar.gz" } ] }