{ "info": { "author": "Terry Cain", "author_email": "terry@terrys-home.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3.6" ], "description": "Sanic OpenID Connect Provider\n=============================\n\n.. image:: https://img.shields.io/pypi/v/sanic_openid_connect_provider.svg\n :target: https://pypi.python.org/pypi/sanic_openid_connect_provider\n\n.. image:: https://img.shields.io/travis/terrycain/sanic-openid-provider.svg\n :target: https://travis-ci.org/terrycain/sanic-openid-provider\n\n.. image:: https://pyup.io/repos/github/terrycain/sanic-openid-provider/shield.svg\n :target: https://pyup.io/repos/github/terrycain/sanic-openid-provider/\n :alt: Updates\n\nIt's a work-in-progress, Alpha stage I would say. If anyone finds this useful / wants to use it, drop an issue I'd be\nmore than happy to fix it up so its actually helpful to someone other than myself.\n\nLast time I checked it passed around 82 / 93 of the OpenID Connect \nProvider Certification tests that appear when you tick ``webfinger``, ``dynamic info discovery``,\n``dynamic client registration`` and select ``code`` response type.\n\nIt's pretty usable for the authorization code flow. Still needs a fair amount of re-architecting and cleaning up but I'm\ntrying to make it so you can plug it into various backends like DynamoDB/Redis for token/client storage.\n\nDocs and examples will be coming soon.\n\nPreconditions\n-------------\n\nThe package expects ``sanic_jinja2`` and ``sanic_session`` to be in use and configured.\n\nTesting\n-------\n\nAs said above it passes most of the OpenID tests I've ran against it. Below are the ones I haven't passed yet\n\nSignature + Encryption\n~~~~~~~~~~~~~~~~~~~~~~\n\nHaven't figured out why the userinfo enc/sig doesnt work yet.\n\n* ``OP-IDToken-SigEnc``\n* ``OP-UserInfo-SigEnc``\n* ``OP-request_uri-SigEnc``\n\nClaims\n~~~~~~\n\nHaven't got around to this bit yet\n\n* ``OP-claims-acr-essential``\n* ``OP-claims-acr-voluntary``\n* ``OP-claims-acr=1``\n\nPopup\n~~~~~\n\nDoesnt display in a popup box\n\n* ``OP-display-popup``\n\nMisc Request Parameters\n~~~~~~~~~~~~~~~~~~~~~~~\n\nHaven't dealt with this yet.\n\n* ``OP-Req-acr_values``\n\nKey Rotation\n~~~~~~~~~~~~\n\nNeed some methods to rotate keys\n\n* ``OP-Rotation-OP-Enc``\n* ``OP-Rotation-OP-Sig``\n* ``OP-Rotation-RP-Enc``\n* ``OP-Rotation-RP-Sig``\n\n\nKey creation\n------------\n\nRSA Key\n~~~~~~~\n\n.. code:: bash\n\n openssl genrsa -nodes -out rsa.pem 4096\n\n\nECDSA Key\n~~~~~~~~~\n\n.. code:: bash\n\n openssl ecparam -name prime256v1 -genkey -noout -out ec.pem\n openssl ec -in ec.pem -pubout -out ec.pub\n\n\nOpenID Connect Node Example\n---------------------------\n\napp.js\n~~~~~~\n\n.. code:: javascript\n\n /*\n *\n * Note: This example is a \"full\" example that registers a new client with the OIDC server each time. This returns a client ID and secret. \n * In reality, you should only register once per service and then save the client information for future use. \n * I would advise using this script to register your client and test it - It will console.log the ID and secret which you can then hardcode:\n * https://github.com/panva/node-openid-client#manually-recommended\n *\n * In production, I import a modified version of this script with promise support. Make sure it's finished discovery before defining your \n * error handlers!\n */\n\n //******* Config\n const config = {\n /* jshint ignore:start */\n //Server we're going to auth with\n authServer: \"https://authserver\",\n //Access token provided by admin for initial registration\n initialAccessToken: \"dcb89d4c-fec4-11e8-8eb2-f2801f1b9fd1\",\n //Listen port\n port: 3000,\n //All the settings required to register our client\n registration: {\n //IDP prefers ES256 encryption\n id_token_signed_response_alg: 'ES256',\n //Array of all potential redirect URI's\n redirect_uris: [\"http://127.0.0.1:3000/callback\", \"http://127.0.0.1/callback\"],\n //String space-delimited list of all potentially required scopes\n scope: \"openid email profile\",\n grant_types: ['authorization_code'],\n application_type: 'web',\n //Name of client - For reference only\n client_name: 'Some client',\n subject_type: 'public',\n response_types: [\"code\"]\n },\n auth: {\n //uri the IDP redirects to after authentication - Must be in the array above\n redirect_uri: \"http://127.0.0.1:3000/callback\",\n //Scopes we want for authentication\n scope: \"openid email profile\",\n id_token_signed_response_alg: 'ES256'\n }\n /* jshint ignore:end */\n }\n\n //******* End Config\n\n\n const { Issuer } = require('openid-client');\n const { Strategy } = require('openid-client');\n const session = require('express-session');\n const express = require('express');\n const app = express();\n const passport = require('passport');\n\n // Set up Express sessions in memory - Please don't do this in production, use something to store your sessions\n // so we can load balance. \n app.use(session({\n secret: 'asupersecretpassword',\n resave: true,\n saveUninitialized: true\n }));\n //Make sure to initialise before we start discovery\n app.use(passport.initialize());\n app.use(passport.session());\n\n //Discover settings from OID server\n Issuer.discover(config.authServer)\n .then(customIssuer => {\n\n const opts = { initialAccessToken: config.initialAccessToken };\n const metadata = config.registration;\n\n // You only need to do client registration once (ever) - You should do it during development and then hardcode the client id and secret\n // Below is an example of a hardcoded client, rather than a client that registers each time\n // See more in the docs: https://github.com/panva/node-openid-client#manually-recommended\n\n // const client = new customIssuer.Client({\n // client_id: '83fc3323d3c045a4',\n // client_secret: '7f9b5e1721a244c989d011839595b766',\n // id_token_signed_response_alg: 'ES256'\n // });\n\n customIssuer.Client.register(metadata, opts)\n .then(client => {\n console.log(\"!!!!! Save this information for re-use later! !!!!!\")\n console.log(\"Client ID: \" + client.client_id)\n console.log(\"Client Secret: \" + client.client_secret)\n console.log(\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\")\n console.log(\"Metadata: \" + JSON.stringify(client.metadata, null, 2))\n\n const params = config.auth;\n // Setting up our strategy + validation function\n passport.use('oidc', new Strategy({client, params, passReqToCallback: null, sessionKey: null, usePKCE: false}, (tokenset, userinfo, done) => {\n return done(null, userinfo)\n }));\n\n passport.serializeUser((user, done) => {\n // This is where you'd get any extra locally-stored data from the database or something for accessing in req.user\n done(null, user);\n });\n\n passport.deserializeUser((user, done) => {\n done(null, user);\n });\n\n // GET /login will start authentication\n app.get('/login', passport.authenticate('oidc'));\n\n // GET /callback redirected from IDP with code\n app.get('/callback', passport.authenticate('oidc', {\n successRedirect: '/',\n failureRedirect: '/login'\n }));\n\n // Force every other request to check if user is authed, if not then redirect to /login and start auth\n app.use((req, res, next) => {\n if (!req.user) {\n res.redirect('/login');\n } else {\n next();\n }\n })\n\n // Example authenticated endpoint\n app.get('/',(req, res) => {\n console.log(`User ${req.user.name} has logged in.`);\n res.send(req.user);\n })\n\n\n app.listen(config.port, () => console.log(`Example app listening on port ${config.port}!`))\n\n });\n })\n\n\npackage.json\n~~~~~~~~~~~~\n\n.. code:: json\n\n {\n \"name\": \"openidtest\",\n \"version\": \"1.0.0\",\n \"description\": \"\",\n \"main\": \"app.js\",\n \"scripts\": {\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n },\n \"author\": \"\",\n \"license\": \"ISC\",\n \"dependencies\": {\n \"express\": \"^4.16.4\",\n \"express-session\": \"^1.15.6\",\n \"passport\": \"^0.4.0\",\n \"passport-openid-connect\": \"^0.1.0\"\n }\n }\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://pypi.python.org/pypi/sanic-openid-provider", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/terrycain/sanic-openid-provider", "keywords": "sanic openid provider", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "sanic-openid-connect-provider", "package_url": "https://pypi.org/project/sanic-openid-connect-provider/", "platform": "", "project_url": "https://pypi.org/project/sanic-openid-connect-provider/", "project_urls": { "Download": "https://pypi.python.org/pypi/sanic-openid-provider", "Homepage": "https://github.com/terrycain/sanic-openid-provider" }, "release_url": "https://pypi.org/project/sanic-openid-connect-provider/0.6.1/", "requires_dist": [ "sanic (>=0.8.3)", "PyJWT (>=1.6.4)", "jwcrypto (>=0.6.0)", "aiohttp (>=3.4.4)", "aioboto3 (>=6.1.0) ; extra == 'aws'", "aioredis (>=1.2.0) ; extra == 'redis'" ], "requires_python": "", "summary": "OpenID Provider framework for sanic", "version": "0.6.1" }, "last_serial": 5756347, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "f86a15f8a86c7e51306bd07dc2d921d7", "sha256": "7c173a88ec09f8d72617ad6ea8418a8e287416455bab4e89cfad2f88ba908d32" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f86a15f8a86c7e51306bd07dc2d921d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32539, "upload_time": "2018-11-15T08:43:51", "url": "https://files.pythonhosted.org/packages/92/c1/6ffd43413f8f50b667dae00a376e86b8180b7ae71f9d9c9ab13847327e3f/sanic_openid_connect_provider-0.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "86487cf73b920192a636edac94c325cc", "sha256": "ccd9f6407080100cb978b0cbc67c2c230f30ca168f6832220da2e5b73e22d316" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.0.0.tar.gz", "has_sig": false, "md5_digest": "86487cf73b920192a636edac94c325cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26093, "upload_time": "2018-11-15T08:43:53", "url": "https://files.pythonhosted.org/packages/31/db/9f70eabc58f2ef59c4261b86242f3c15fff74cfd25431dc3a7db568fa0db/sanic_openid_connect_provider-0.0.0.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "4b4b230348a894d5a33ff72a8357d1c4", "sha256": "af037dbb33bf182122a5082f20363650865c0faaff6b2399c5723502d0df0c8c" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4b4b230348a894d5a33ff72a8357d1c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32532, "upload_time": "2018-11-15T09:44:00", "url": "https://files.pythonhosted.org/packages/bb/d9/6ef53bd9e4af2359aa92fb9e74091274c0a4bac49fce0a6ea122b46f0e57/sanic_openid_connect_provider-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c6ea3aaca84107d0f55eb11bb2b2663", "sha256": "9e198e302fa3bf50033e6b4632893a1efd77bf044b8d6d070f603ff992568987" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.1.3.tar.gz", "has_sig": false, "md5_digest": "6c6ea3aaca84107d0f55eb11bb2b2663", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32979, "upload_time": "2018-11-15T09:44:01", "url": "https://files.pythonhosted.org/packages/83/a3/2cdef130eb59293ce4d08919faad77ccae59da7b57b7c79f6677171b1d38/sanic_openid_connect_provider-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "a9928c66187aa2e871bcdc646ed5b2af", "sha256": "4a144121dec2d81a252c634b1d76af596df6e6429dada1dbd9053c68d469eed1" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "a9928c66187aa2e871bcdc646ed5b2af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 32933, "upload_time": "2018-11-15T11:55:05", "url": "https://files.pythonhosted.org/packages/28/01/688476f006e96e0e765bd1ee102207c261b7f336ed67823e850ea939d2a0/sanic_openid_connect_provider-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fccb5cca1669aba9ddcdb46a105f90eb", "sha256": "52740f2a7612034166b53bf350e83d8536d542b2f850eb7e167a6fe1ab657f37" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.1.4.tar.gz", "has_sig": false, "md5_digest": "fccb5cca1669aba9ddcdb46a105f90eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33318, "upload_time": "2018-11-15T11:55:07", "url": "https://files.pythonhosted.org/packages/f9/31/c1666e063b0da555bf9240a049f2d64f7b7a9c547e422181e45b4d09680b/sanic_openid_connect_provider-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "ed0c108c272611671f034316aecf7871", "sha256": "bc0cbc399b991ed10095b5181346cf7790c0ecb34001637f098980b6f79f1594" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ed0c108c272611671f034316aecf7871", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33268, "upload_time": "2018-11-16T10:45:31", "url": "https://files.pythonhosted.org/packages/93/d3/2e954ccc5b6ba2d568a9b66442f833e44144b0dd47ab2c446de2b1be81e8/sanic_openid_connect_provider-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e582b638f2e8c2e5cc2b2c2267a9870a", "sha256": "c702bf503b50a543c8e7cc8f4ee5e186e49c1a33783ac2fa30b7366d6484f72b" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e582b638f2e8c2e5cc2b2c2267a9870a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33483, "upload_time": "2018-11-16T10:45:32", "url": "https://files.pythonhosted.org/packages/cd/97/b069adc833744b070046fe1d8c360e7764023db530eb27bf2eadbfb036d1/sanic_openid_connect_provider-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "fcd4ce9c02762bbba2a4ba03ff5df437", "sha256": "4ace8665f56be7e546ff4a8248adc91abdee90dd1390f50ee8e979db92948348" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fcd4ce9c02762bbba2a4ba03ff5df437", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33836, "upload_time": "2018-11-16T15:39:45", "url": "https://files.pythonhosted.org/packages/c3/8d/1835283290b01e231e49a74052ba66e927e2059be31d129bc1684a61b468/sanic_openid_connect_provider-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd066f51643b78c8ddaf32702f7a6dd3", "sha256": "bc982b69bce15b2c6e3b382e0850c7e52098920d40c5f556d1fc6ad591b57e0e" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.1.tar.gz", "has_sig": false, "md5_digest": "dd066f51643b78c8ddaf32702f7a6dd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33952, "upload_time": "2018-11-16T15:39:47", "url": "https://files.pythonhosted.org/packages/26/fb/fefe73bec40687f3b9850a7658f147de138fb562de53fd5e41291a62ff1d/sanic_openid_connect_provider-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3a0141cd56a1deaaa1e0af8f3b901b5a", "sha256": "fa423bb3ebb644948505fe6c21235232d24aec3656e4c269575391be2d0a860f" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "3a0141cd56a1deaaa1e0af8f3b901b5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33868, "upload_time": "2018-11-19T13:25:18", "url": "https://files.pythonhosted.org/packages/2d/bf/9620c8ff13ac3122ed5f6b04484683642af0ee71d48dd4919c3feecf3c98/sanic_openid_connect_provider-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "46495aed191a8c81a2cec8a77743925b", "sha256": "9d21a24fdd8215ea339a359d0ea808a17f8df2f0b770a24dcda177c792d430bb" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.2.tar.gz", "has_sig": false, "md5_digest": "46495aed191a8c81a2cec8a77743925b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33965, "upload_time": "2018-11-19T13:25:20", "url": "https://files.pythonhosted.org/packages/3c/20/fe5f8d27d3fbe12c26f19d0ccb4839c2f14468ecac73c63ac446123b12e9/sanic_openid_connect_provider-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ca39da34032728d4cbae2a408e68610d", "sha256": "f8fba5b08f942567fbbe945c8ce513426f2d33d6daf7f68b2e323c770c139c9a" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ca39da34032728d4cbae2a408e68610d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33937, "upload_time": "2018-11-19T13:26:59", "url": "https://files.pythonhosted.org/packages/14/93/d6015cab8ffa1cd66931f8ae5f1fdd27736a8f9c73ba383d8eb464e34366/sanic_openid_connect_provider-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b69b3e14cb0fd9cb2c89afe130f7638d", "sha256": "3e94f936f6ce3a8d86dca07040b4e5c06252c3199e2d3193b18f3cb7eed2c326" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b69b3e14cb0fd9cb2c89afe130f7638d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34056, "upload_time": "2018-11-19T13:27:01", "url": "https://files.pythonhosted.org/packages/eb/27/ec484e99e9f139d2a1036880f10acdd5a5de091a8a7c54ad17a3486844e9/sanic_openid_connect_provider-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "baa2678259e6617395aa449bf449ba5c", "sha256": "338312f2fa9aea3ddef67abcee018827bcaf5c161ed80d564797778550ab7e60" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "baa2678259e6617395aa449bf449ba5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33931, "upload_time": "2018-11-19T16:18:46", "url": "https://files.pythonhosted.org/packages/e6/df/78bb59e1388f20785fb53b3fba70410eac2c950b302ca6fd82976b98c54b/sanic_openid_connect_provider-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50bf8eafd237f4dd0cd4db9c8e714a9e", "sha256": "9949af50f15be0706e31aac1a9b6d708de65852db12615cd7c9f3416c1d7c079" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.2.4.tar.gz", "has_sig": false, "md5_digest": "50bf8eafd237f4dd0cd4db9c8e714a9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34040, "upload_time": "2018-11-19T16:18:47", "url": "https://files.pythonhosted.org/packages/f3/9e/c85484608ba217b6e1ca80f2fe84170f85f131ccef2bd563133d5037146f/sanic_openid_connect_provider-0.2.4.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e61fdf9d342e325ed232aa50d79f0c66", "sha256": "0df5eef5de04df5bc978ebec4b7d76a7340fad0cdbf84841e0f0cfcf98ce2192" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e61fdf9d342e325ed232aa50d79f0c66", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39052, "upload_time": "2018-12-04T14:24:30", "url": "https://files.pythonhosted.org/packages/e4/2a/12e2cfabb375924bf6e4a58dbb5c93d95240678ec3198dc7b1a8d2126bb1/sanic_openid_connect_provider-0.3.0-py3-none-any.whl" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "640714f1a1478d06255c029ff31103f9", "sha256": "28ddabb9d6e232e14b5b11ae5da4abf8a6717daac6e05438387b50e7fdcba433" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "640714f1a1478d06255c029ff31103f9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39055, "upload_time": "2018-12-04T14:39:00", "url": "https://files.pythonhosted.org/packages/24/72/792e4b30c2ca09be93e7175f8796574d6d5cff1fee020b5c3a065fc54c3c/sanic_openid_connect_provider-0.3.1-py3-none-any.whl" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "69e9283ee30788308d0cf280a9ee5b46", "sha256": "dd05e15d2d8148c233e8dd914d1b187e9b626f98664192a31f2d4c7fc87fd96d" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "69e9283ee30788308d0cf280a9ee5b46", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39055, "upload_time": "2018-12-04T14:41:58", "url": "https://files.pythonhosted.org/packages/08/5a/ebed1598d6c52cfcb5beb131a3e529370f0148fc26a2581a4791f58feb55/sanic_openid_connect_provider-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c424151a0c39b515f21f0b484270c55d", "sha256": "337a0879b0e2722d2dbc94f1158d5603070f1c9135c8af39822210816a4afe0e" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c424151a0c39b515f21f0b484270c55d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38086, "upload_time": "2018-12-04T14:41:59", "url": "https://files.pythonhosted.org/packages/5f/a5/b5ae476b1c8b671f73ba18cc63bb12d0c15eafa661e9a291e0f5b7768f85/sanic_openid_connect_provider-0.3.2.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "3e6791a634300008b31459591f825afa", "sha256": "b0f2ea6eff91e00501cf5e779325f07f99258ddbde1f05458c2021e0bea56e68" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3e6791a634300008b31459591f825afa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 39082, "upload_time": "2018-12-07T10:43:02", "url": "https://files.pythonhosted.org/packages/8d/ef/d4ed968246c97124b80ca18f67c452bf9b3b096d4923f191ee82a56765d4/sanic_openid_connect_provider-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "46fd29b46d0684bf0b777eba950f8f48", "sha256": "316d26b3df616c76f07033018ad8fdab8a6bb9cb12841de11354c671c44d8354" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.0.tar.gz", "has_sig": false, "md5_digest": "46fd29b46d0684bf0b777eba950f8f48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38108, "upload_time": "2018-12-07T10:43:03", "url": "https://files.pythonhosted.org/packages/2a/d1/a6db8e752c6127bd85e165b033ed99c2634cc5c8363d5bf8e0add738d387/sanic_openid_connect_provider-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "88f23eaf713db4a080c5c8176211ab74", "sha256": "05e42f69d3948b2a8c0b884d1f1cbdcca774c4cbec067501787efd1e513a994e" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "88f23eaf713db4a080c5c8176211ab74", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40529, "upload_time": "2019-02-18T19:35:21", "url": "https://files.pythonhosted.org/packages/17/d5/5f2b5a427539718649f54db4054127612fc48c021b4b4a20fbdd781b0497/sanic_openid_connect_provider-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f6f2f08700f3861d9d808c1ee33ac855", "sha256": "0d5bd752f5678acb71dade4838a377a586c944eb46a928a19b2f2b384b088aa9" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.1.tar.gz", "has_sig": false, "md5_digest": "f6f2f08700f3861d9d808c1ee33ac855", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42067, "upload_time": "2019-02-18T19:35:23", "url": "https://files.pythonhosted.org/packages/73/94/171fb71900b1f2e0940addfafed83b3661e90a4840a294234d78ac13ec5d/sanic_openid_connect_provider-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "e325657385b6f6809a530acb7e90381a", "sha256": "213bcba5811b751a6e66c02735afe365862e36e09ce644df9e9aa4736bd618ab" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e325657385b6f6809a530acb7e90381a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40529, "upload_time": "2019-02-18T19:48:37", "url": "https://files.pythonhosted.org/packages/d3/4e/989141a87eb904a53d74fb1d9289c83cbb6c1be2f5bfb3f118005cc0ecf8/sanic_openid_connect_provider-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76a6fd97d168809a6f951ae75524a9bc", "sha256": "17e2a809dbc558a786cd3a6cd5ceec0c08f34b24ca9ec06dfb0f8e7832859838" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.2.tar.gz", "has_sig": false, "md5_digest": "76a6fd97d168809a6f951ae75524a9bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42080, "upload_time": "2019-02-18T19:48:39", "url": "https://files.pythonhosted.org/packages/33/45/39478d2a2d9d32eaefac2a345e04dae3f75e7cd935216650f0ac7530fc79/sanic_openid_connect_provider-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "3c88c0491c319ab8ec28de5c081aa84d", "sha256": "b96e50fef85f3cb5a3d79cd62c02318f02765228601e41781a4abc7898d110b5" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.3-py3-none-any.whl", "has_sig": false, "md5_digest": "3c88c0491c319ab8ec28de5c081aa84d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40526, "upload_time": "2019-02-18T19:52:46", "url": "https://files.pythonhosted.org/packages/71/1d/423f7083df027047b58e8e55629f8be1e7c5f85f0eb3d313d68a03c1e836/sanic_openid_connect_provider-0.4.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c012c3d752a4d29f9a9951ac478add4", "sha256": "5aaa0bf243b0722f35f33b0e274b71e9554d769e165d3367c5db720c5b7320b1" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.3.tar.gz", "has_sig": false, "md5_digest": "3c012c3d752a4d29f9a9951ac478add4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42073, "upload_time": "2019-02-18T19:52:55", "url": "https://files.pythonhosted.org/packages/66/eb/b06ab69f6fdd40e83793c8ae8c37b351ef66dd1b653d87074688a87075d6/sanic_openid_connect_provider-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "fd55984de95e18c0e98c7d106a4aa470", "sha256": "c3516a9083ffe5d3f3b435f44542b2ba1aee95f8ebc4ef092851e51d23343e09" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.4-py3-none-any.whl", "has_sig": false, "md5_digest": "fd55984de95e18c0e98c7d106a4aa470", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40527, "upload_time": "2019-02-18T19:55:51", "url": "https://files.pythonhosted.org/packages/d1/53/194f05c99005da60783cc1978e39f3226b2a24c3394a5d57614a7c1598e8/sanic_openid_connect_provider-0.4.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4096fdf1610e5ddbe50eea297d9b2b9", "sha256": "905efe57d54f209ecc83f51517da8ddb25a9b650ae246807f0b5cf88cfab25a1" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.4.tar.gz", "has_sig": false, "md5_digest": "c4096fdf1610e5ddbe50eea297d9b2b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42070, "upload_time": "2019-02-18T19:56:03", "url": "https://files.pythonhosted.org/packages/1e/0c/ad33a5a26f7f6e77971fd9d1153c53426c3f5ac7993663324301ba1bd51e/sanic_openid_connect_provider-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "eb3b5ebeec912dd939ce15a8db92bfcf", "sha256": "e2cde58775f654a46e7b26a5f061e7a7862b16a8fb244538aee3a3b85c382ded" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "eb3b5ebeec912dd939ce15a8db92bfcf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40525, "upload_time": "2019-02-18T20:00:58", "url": "https://files.pythonhosted.org/packages/2b/58/ac8032c31d09e23664e542ceaccce6f5acbfb040f6f7ae387d464dfbdb67/sanic_openid_connect_provider-0.4.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1556f4d7afc727c7a2b1891e9ee0c9b5", "sha256": "780125bdff3ab82b2bf368797ad932b235de5830115140313b2d02fc176110bd" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.5.tar.gz", "has_sig": false, "md5_digest": "1556f4d7afc727c7a2b1891e9ee0c9b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42067, "upload_time": "2019-02-18T20:00:59", "url": "https://files.pythonhosted.org/packages/d1/50/5bc87ed7a9d6ed26331978037d7c8e823bbf2ee2d05e17e1dfd7978c2b58/sanic_openid_connect_provider-0.4.5.tar.gz" } ], "0.4.6": [ { "comment_text": "", "digests": { "md5": "34279be5e6f6f7f0cd13cee3bc27af5a", "sha256": "f3ea8070762ce78b4b6305e18f424c383a429c11d29a966a4e4dae80f9e5bfaa" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.6-py3-none-any.whl", "has_sig": false, "md5_digest": "34279be5e6f6f7f0cd13cee3bc27af5a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40525, "upload_time": "2019-02-18T20:05:10", "url": "https://files.pythonhosted.org/packages/39/58/45e3825eaed7b7032721bc2e9a7409619591afb73918f1ce485003822f7b/sanic_openid_connect_provider-0.4.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c2c1abff9372140d68162e774ed4ca47", "sha256": "e148ea08e6c93aad3fa8e950866c4d70ffdab559542831e74d7b57d7a3eee4db" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.6.tar.gz", "has_sig": false, "md5_digest": "c2c1abff9372140d68162e774ed4ca47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42066, "upload_time": "2019-02-18T20:05:11", "url": "https://files.pythonhosted.org/packages/b7/d7/84ebb568cccbb06c4412209d60101a7995df0e58a2a7101e84de5a4b9e58/sanic_openid_connect_provider-0.4.6.tar.gz" } ], "0.4.7": [ { "comment_text": "", "digests": { "md5": "c9b95b8b6e3e857d666d7f7358e086f7", "sha256": "252191d39dc67dcceef95280cb06c61522374635005ac8ea65a95ee571a8b38d" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.7-py3-none-any.whl", "has_sig": false, "md5_digest": "c9b95b8b6e3e857d666d7f7358e086f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40526, "upload_time": "2019-02-18T20:14:34", "url": "https://files.pythonhosted.org/packages/f9/63/092f026d1db08201b9d8877999ea02f1cf482c97735e45bde70582ae94d5/sanic_openid_connect_provider-0.4.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3b176edafb18f83738bc2ca176447c3", "sha256": "0296697831440879cbd1762c19d5172a56129d24855095b49e3f7901bc794f30" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.7.tar.gz", "has_sig": false, "md5_digest": "a3b176edafb18f83738bc2ca176447c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42071, "upload_time": "2019-02-18T20:14:35", "url": "https://files.pythonhosted.org/packages/ca/a9/24517f161d724f12d8a222786aeb017e1b1885afa915a7316d20bcfb60dd/sanic_openid_connect_provider-0.4.7.tar.gz" } ], "0.4.8": [ { "comment_text": "", "digests": { "md5": "5dd4639bd3db91f9a1910d76f4ac8e6a", "sha256": "8967c32b3dd535401c0bf776ed0b04213949c6fbb711ab802eb0d4d831e59f2b" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.8-py3-none-any.whl", "has_sig": false, "md5_digest": "5dd4639bd3db91f9a1910d76f4ac8e6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40526, "upload_time": "2019-02-18T20:18:39", "url": "https://files.pythonhosted.org/packages/ae/b8/c4afd9be993d725f4d2b3f2b6e1711fc3c9b12e46b0ddf820597d8239ec2/sanic_openid_connect_provider-0.4.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9482fcfbe7ecdf02fb00f3de2d238e4b", "sha256": "0753a13856ca43af6e50f6fc75f0f7c9bf764b79117d9877033ccbf1d4a1cb14" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.4.8.tar.gz", "has_sig": false, "md5_digest": "9482fcfbe7ecdf02fb00f3de2d238e4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42072, "upload_time": "2019-02-18T20:18:41", "url": "https://files.pythonhosted.org/packages/a3/28/e1a72792f649563e270aa2694841cd38a033b03e632ec707742f56d60ab3/sanic_openid_connect_provider-0.4.8.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d45f36ee05c7c4f99c6f7045a7dedfbd", "sha256": "65c5152b058669784200b50911a0d7535327ec0c54a02178cde0a45154be31c9" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d45f36ee05c7c4f99c6f7045a7dedfbd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44191, "upload_time": "2019-02-25T18:40:17", "url": "https://files.pythonhosted.org/packages/52/02/885960a1d6e97510032189ad311b0f28efb7ad4c50e20890449f5e48ecc2/sanic_openid_connect_provider-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8293b81ce0b0eeac2750413848ea54e", "sha256": "568e9517141923f1c1f2ce0b670ac06449a78838a5ae9d2bb2ffc346ee763a1c" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.0.tar.gz", "has_sig": false, "md5_digest": "f8293b81ce0b0eeac2750413848ea54e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42816, "upload_time": "2019-02-25T18:40:19", "url": "https://files.pythonhosted.org/packages/87/70/dbedda03374cfa42c70c4516434a2cdfbb21fc1b97f4d09d364c69a6120c/sanic_openid_connect_provider-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "6e5484f8bc6726aab41f4eb359a42465", "sha256": "3683be695e87777c5796600c2b1fe25187cfb754f37b1ea5bf79626eff2decd6" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6e5484f8bc6726aab41f4eb359a42465", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44336, "upload_time": "2019-06-10T18:59:28", "url": "https://files.pythonhosted.org/packages/5e/30/2c2dc47a9930bebbd76ea14af11f54dc08aaa5e8f9f81d4693147d72d8a5/sanic_openid_connect_provider-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da599ebe9f278ddbfd8eefe1cf2b16b9", "sha256": "b3916fa8d2526c5b0d280dd2cd8762dac6a407c25a8d46f9100d23402ac2217b" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.1.tar.gz", "has_sig": false, "md5_digest": "da599ebe9f278ddbfd8eefe1cf2b16b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43256, "upload_time": "2019-06-10T18:59:29", "url": "https://files.pythonhosted.org/packages/c9/b6/7ef9e6c3bb8d79ac9eba051155814953f275bf05371e3504940298c5b710/sanic_openid_connect_provider-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "ad0030f44b796f87cde56b6ebcbb0f6c", "sha256": "7db3b904cac5a492a6c6e453925daf60bae90b04fb512a8076a26c0c2f06065c" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ad0030f44b796f87cde56b6ebcbb0f6c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44366, "upload_time": "2019-06-25T18:09:13", "url": "https://files.pythonhosted.org/packages/da/dc/9ddf70f97f45177764a2c41dd2e3d6d4f2667044474161fde7b8d1a34bb0/sanic_openid_connect_provider-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e45101ff72952c90a8accc8b090b468a", "sha256": "2d7ce14991c21c365a2a2bcd17e614a53998c74208d10c6be1e51b70339fd14f" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.2.tar.gz", "has_sig": false, "md5_digest": "e45101ff72952c90a8accc8b090b468a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43277, "upload_time": "2019-06-25T18:09:15", "url": "https://files.pythonhosted.org/packages/29/79/a04337ef12259a6d2272476321801ffa0d4dd80dd56b083c0b6fec278ef5/sanic_openid_connect_provider-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "4552803870f6dba877280ac667aea44b", "sha256": "38a2d4414d30e7e45ef70f51139c6197effdf369318988701f17108715f8deef" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4552803870f6dba877280ac667aea44b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44365, "upload_time": "2019-06-25T19:28:05", "url": "https://files.pythonhosted.org/packages/6d/76/79e5346956a6505f1c2dd11ee0bd2203747252b9640094c10c59ca58cab9/sanic_openid_connect_provider-0.5.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b2958a41501ca05264a11e61beadc0b", "sha256": "aca2c4d1845442dbb81764e613f6e55334db525f39ff705503962dbe09afd149" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.3.tar.gz", "has_sig": false, "md5_digest": "9b2958a41501ca05264a11e61beadc0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43281, "upload_time": "2019-06-25T19:28:07", "url": "https://files.pythonhosted.org/packages/18/fb/4652e1a7d074a771146b8fc35e6a4a21f866ca903a6730e90123a6af227f/sanic_openid_connect_provider-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "bbc7c3eb43af88b5131d6d24b1a19590", "sha256": "a1f658efa4b7c705d1b453521565f5ad63d10b860496df13011f4ca3df39b148" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.4-py3-none-any.whl", "has_sig": false, "md5_digest": "bbc7c3eb43af88b5131d6d24b1a19590", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44520, "upload_time": "2019-07-11T10:06:01", "url": "https://files.pythonhosted.org/packages/6d/cb/eff2f893b30fd16367702680fcb218dfcea24026809b99017b87d58a3b2a/sanic_openid_connect_provider-0.5.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ddd3bd8adcd2b6821a8558c7af5f0eff", "sha256": "db057dfaeef670f760e0d2621f033ebdf7f7eef838549ec478f85ace69d64bf2" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.5.4.tar.gz", "has_sig": false, "md5_digest": "ddd3bd8adcd2b6821a8558c7af5f0eff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43617, "upload_time": "2019-07-11T10:06:03", "url": "https://files.pythonhosted.org/packages/46/9b/e1d8ee2374fe167dc3e363bf9453c2b45fa4f62a22bc90a43fe48ba4a42c/sanic_openid_connect_provider-0.5.4.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "733ee79a58fb39336ad8e13150e81cd4", "sha256": "72523a3c6081c0d088eb2b78d5beab2344fdcd6a880289b36517f0f77535f6c4" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "733ee79a58fb39336ad8e13150e81cd4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44535, "upload_time": "2019-08-29T19:17:50", "url": "https://files.pythonhosted.org/packages/5b/c0/0d7f01a9315a7d71fab2073bda984e9938ac9456394ba232d0a04d3c585d/sanic_openid_connect_provider-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4346e9ac08191d9e9216f9786d5189b6", "sha256": "e0d85b024e6a6edf0ef14518f548d1458cc7f6f6929be7648548a2381cae7d84" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.6.0.tar.gz", "has_sig": false, "md5_digest": "4346e9ac08191d9e9216f9786d5189b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43974, "upload_time": "2019-08-29T19:17:53", "url": "https://files.pythonhosted.org/packages/3d/51/ebad112a21b6e56f5a9f6b36022c7fb849f31ebc3bcb3edf23baa3bd61c6/sanic_openid_connect_provider-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "77fcde0cca047ee33aa308cea4df0b64", "sha256": "c83688eb7b6305b444d876801824d063fde465409849a7c6e6b4f1bddff9a046" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "77fcde0cca047ee33aa308cea4df0b64", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44549, "upload_time": "2019-08-29T19:19:27", "url": "https://files.pythonhosted.org/packages/6d/d7/54e1a8c5ef9cc62a05d7fb66561850091be253b3741cdff34f1c757dacbe/sanic_openid_connect_provider-0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13a3c2101c8c7f36f7fd08c9c204a740", "sha256": "62a68cd06570f60b056dad89bd8ec492772c65e970a7e7e4e0f2885235ead316" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.6.1.tar.gz", "has_sig": false, "md5_digest": "13a3c2101c8c7f36f7fd08c9c204a740", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43974, "upload_time": "2019-08-29T19:19:29", "url": "https://files.pythonhosted.org/packages/d9/b6/dd15e11298d770583dbb436b65a2f792064c214a9238d1d13cca61e41f82/sanic_openid_connect_provider-0.6.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "77fcde0cca047ee33aa308cea4df0b64", "sha256": "c83688eb7b6305b444d876801824d063fde465409849a7c6e6b4f1bddff9a046" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "77fcde0cca047ee33aa308cea4df0b64", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44549, "upload_time": "2019-08-29T19:19:27", "url": "https://files.pythonhosted.org/packages/6d/d7/54e1a8c5ef9cc62a05d7fb66561850091be253b3741cdff34f1c757dacbe/sanic_openid_connect_provider-0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "13a3c2101c8c7f36f7fd08c9c204a740", "sha256": "62a68cd06570f60b056dad89bd8ec492772c65e970a7e7e4e0f2885235ead316" }, "downloads": -1, "filename": "sanic_openid_connect_provider-0.6.1.tar.gz", "has_sig": false, "md5_digest": "13a3c2101c8c7f36f7fd08c9c204a740", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43974, "upload_time": "2019-08-29T19:19:29", "url": "https://files.pythonhosted.org/packages/d9/b6/dd15e11298d770583dbb436b65a2f792064c214a9238d1d13cca61e41f82/sanic_openid_connect_provider-0.6.1.tar.gz" } ] }