Package: django-auth-framework
Django Auth FrameworkAn open source, one-stop authentication framework for Django and ready for production.Table of ContentsAbout The ProjectBuilt WithFeaturesGetting StartedInstallationConfigurationsAPI Endpoints and ExamplesContributingLicenseAbout The ProjectDjango Auth Framework is an open source, one-stop framework for Django applications providing the most essential APIs for
authentication and authorization. APIs also cover Oauth2 protocol, social login and user management with options allows
to easily customize and override for working on most scenarios. It supports multiple
authentication ways to make your auth server scalable from a monolithic server using Token/Session authentication to
service mesh such likeIstioon Kubernetes Cluster with JWT authentication.This framework was originally developed by me to help
Django projects in our company fast setup. Now, it has scaled our service over a million users. I am
happy to open soucre this project, hope it is helpful in your projects or startupsBuilt WithDjango OAuth ToolkitDjango REST frameworkFeaturesProduction-ready, optimized by reducing unnecessary queries write to db during authentication and authorization.ExtendsDjango OAuth Toolkit'sdefaultOauth2Validatorto allow
authorization with multiple types of credentials like email, phone number.Pure RESTFUL API endpoints implemented withDjango REST framework,
this framework doesn't use any traditional Django components(eg: forms, html).Supports the most popular social login(Google,Apple and Facebook) followed by up to date guidelines, users at frontend
can be authorized by either id_token, code or access_token.NO FULL DOCUMENTATIONatm.Getting StartedTo get a local copy up and running follow these simple steps.Installationpipinstalldjango-auth-frameworkConfigurationsEditsettings.pyfile:#in your my_auth/models.py# from auth_framework.models import AbstractUser# class MyUser(AbstractUser):#     custom_fields ...AUTH_USER_MODEL='my_auth.MyUser'or just try withAUTH_USER_MODEL='auth_framework.User'add required apps and configuration for rest_framework:# ...REQUIRED_APPS=['rest_framework','oauth2_provider','auth_framework',]LOCAL_APPS=['my_auth']INSTALLED_APPS+=REQUIRED_APPSINSTALLED_APPS+=LOCAL_APPS# ...REST_FRAMEWORK={'DEFAULT_AUTHENTICATION_CLASSES':('oauth2_provider.contrib.rest_framework.OAuth2Authentication','rest_framework.authentication.SessionAuthentication',),}if you need other unique fields:emailorphone_numbernot justusernameas credentials:AUTHENTICATION_BACKENDS=["auth_framework.backends.auth_backends.AuthenticationBackend",]OAUTH2_PROVIDER={"OIDC_ENABLED":True,"OIDC_RSA_PRIVATE_KEY":os.environ.get('OIDC_RSA_PRIVATE_KEY'),'SCOPES':{"openid":"OpenID Connect scope",'read':'Read scope','write':'Write scope',},'OAUTH2_VALIDATOR_CLASS':'auth_framework.oauth.oauth2_validators.OauthValidator','OAUTH2_BACKEND_CLASS':'auth_framework.oauth.oauth2_backends.OAuthLibCore',}Edit theurls.py:fromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path('admin/',admin.site.urls),path('account/',include('auth_framework.urls'))]Sync Database and createsuperuser:pythonmanage.pymigrate
pythonmanage.pycreatesuperuserLogin to the admin pagehttp://localhost:8000/admin/oauth2_provider/application/add/and add a defaultApplication. if it's only open to your first party apps, then just chooseResource owner password-basedas the grant type (No one likes to login with password but still having a redirect web page on a native app)[Optional] Configure of Social Adapters: in most scenarios, you only need to create one client id/secret for each social
provider. For security and performance, it will look up those environment variables during making Oauth request calls
instead of creating many key pairs to the database:GOOGLE_CLIENT_ID=*********.apps.googleusercontent.comGOOGLE_CLIENT_SECRET=**********FACEBOOK_CLIENT_ID=**********FACEBOOK_CLIENT_SECRET=**************APPLE_CLIENT_ID=com.team.projectAPPLE_CLIENT_SECRET=**************If this is not your thing, consider to useallauth-djangoAPI Endpoints and ExamplesPostmanContributingIf you have improvements to Django Auth Framework, just send a pull request:Fork the ProjectCreate your Feature Branch (git checkout -b feature/AmazingFeature)Commit your Changes (git commit -m 'Add some AmazingFeature')Push to the Branch (git push origin feature/AmazingFeature)Open a Pull RequestOr leave a comment in ourIssuesLicenseDistributed under the BSD License. SeeLICENSEfor more information.