Simplifying Social Login For Your Web Applications

The Python Podcast.__init__

Episode | Podcast

Date: Sun, 26 Jan 2020 22:00:00 -0500

<div class="wp-block-jetpack-markdown"><h3>Summary</h3> <p>A standard feature in most modern web applications is the ability to log in or register using accounts that you already own on other sites such as Google, Facebook, or Twitter. Building your own integrations for each service can be complex and time consuming, distracting you from the features that you and your users actually care about. Fortunately the Python social auth library makes it easy to support third party authentication with a large and growing number of services with minimal effort. In this episode Matías Aguirre discusses his motivation for creating the library, how he has designed it to allow for flexibility and ease of use, and the benefits of delegating identity and authentication to third parties rather than managing passwords yourself.</p> <h3>Announcements</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you&#8217;re ready to launch your next app or want to try a project you hear about on the show, you&#8217;ll need somewhere to deploy it, so take a look at our friends over at Linode. With 200 Gbit/s private networking, scalable shared block storage, node balancers, and a 40 Gbit/s public network, all controlled by a brand new API you&#8217;ve got everything you need to scale up. And for your tasks that need fast computation, such as training machine learning models, they just launched dedicated CPU instances. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/linode</a> to get a $20 credit and launch a new server in under a minute. And don&#8217;t forget to thank them for their continued support of this show!</li> <li>You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For even more opportunities to meet, listen, and learn from your peers you don&#8217;t want to miss out on this year&#8217;s conference season. We have partnered with organizations such as O&#8217;Reilly Media, Corinium Global Intelligence, ODSC, and Data Council. Upcoming events include the Software Architecture Conference in NYC, Strata Data in San Jose, and PyCon US in Pittsburgh. Go to <a href="https://www.pythonpodcast.com/conferences?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/conferences</a> to learn more about these and other events, and take advantage of our partner discounts to save money when you register today.</li> <li>Your host as usual is Tobias Macey and today I&#8217;m interviewing Matías Aguirre about Python social auth and the complexities of third-party authentication</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you start by describing what the Python social auth project is and your motivation for starting it?</li> <li>Why might someone want to integrate with or rely on a third-party identity provider in their projects? <ul> <li>What are some of the tradeoffs or drawbacks of implementing</li> </ul> </li> <li>Can you describe the current architecture of the library and how it has evolved since you first began working on it?</li> <li>There are a number of pre-built integrations with different web frameworks in the social auth github organization, but Django is the only one that has seen any commits recently. What are the contributing factors for that state of affairs?</li> <li>There are a number of authentication protocols that you support. What are the common capabilities that they each support and what are some of the more challenging differences between them? <ul> <li>How have you implemented the interface for plugging different authentication mechanisms to allow for the variation between them while keeping the library code maintainable?</li> <li>What is involved in adding support for a new authentication provider or protocol?</li> </ul> </li> <li>Many times authorization and authentication are conflated or used interchangeably. How does Python social auth address those concerns and what are the limitations of different mechanisms for defining permissions?</li> <li>For someone who is using Python social auth, what is the workflow for integrating it with their application as a consumer?</li> <li>What are some of the most interesting/unexpected/innovative ways that you have seen Python social auth used?</li> <li>What are some of the most interesting/useful/unexpected lessons that you have learned in the process of building and maintaining Python social auth?</li> <li>When is Python social auth more effort than it&#8217;s worth?</li> <li>What do you have planned for the future of the project?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://github.com/omab?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">omab</a> on GitHub</li> <li><a href="https://matiasaguirre.net/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Website</a></li> <li><a href="https://twitter.com/linuxaddict?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">@linuxaddict</a> on Twitter</li> <li><a href="https://www.linkedin.com/in/matiasaguirre/?originalSubdomain=uy&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">LinkedIn</a></li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://en.wikipedia.org/wiki/Joker_(2019_film)?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Joker</a> movie</li> </ul> </li> <li>Matías <ul> <li><a href="https://sanic.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Sanic</a> asynchronous web framework</li> <li><a href="https://en.wikipedia.org/wiki/Star_Trek:_Picard?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Star Trek Picard</a> TV series</li> </ul> </li> </ul> <h3>Closing Announcements</h3> <ul> <li>Thank you for listening! Don&#8217;t forget to check out our other show, the <a href="https://feeds.fireside.fm/pythonpodcast/rss">Data Engineering Podcast</a> for the latest on modern data management.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to subscribe to the show, sign up for the mailing list, and read the show notes.</li> <li>If you&#8217;ve learned something or tried out a project from the show then tell us about it! Email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>) with your story.</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com/chat</a></li> </ul> <h3>Links</h3> <ul> <li><a href="https://python-social-auth.readthedocs.io/en/latest/index.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Python Social Auth</a></li> <li><a href="https://en.wikipedia.org/wiki/Uruguay?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Uruguay</a></li> <li><a href="https://www.djangoproject.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Django</a></li> <li><a href="https://rubyonrails.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Ruby on Rails</a></li> <li><a href="https://monkeylearn.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">MonkeyLearn</a></li> <li><a href="https://en.wikipedia.org/wiki/Social_login?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Social Authentication</a></li> <li><a href="https://github.com/omab/django-social-auth?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Django Social Auth</a></li> <li><a href="https://auth0.com/blog/adding-salt-to-hashing-a-better-way-to-store-passwords/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Salted and hashed passwords</a></li> <li><a href="https://dzone.com/articles/how-passwordless-authentication-works?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Magic Link Authentication</a></li> <li><a href="https://en.wikipedia.org/wiki/OAuth?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">OAuth</a></li> <li><a href="https://en.wikipedia.org/wiki/OpenID?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">OpenID</a></li> <li><a href="https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">SAML</a></li> <li><a href="https://fastapi.tiangolo.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">FastAPI</a></li> <li><a href="https://sanic.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Sanic</a></li> <li><a href="https://asgi.readthedocs.io/en/latest/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">ASGI</a></li> <li><a href="https://wsgi.readthedocs.io/en/latest/what.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">WSGI</a></li> <li><a href="https://docs.python.org/3/library/asyncio.html?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">AsyncIO</a></li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fpython-social-auth-social-login-episode-247%2F&amp;action_name=Simplifying+Social+Login+For+Your+Web+Applications+-+Episode+247&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />