JSON Web Token authentication for Django GraphQL
Install last stable version from Pypi:
pip install django-graphql-jwt
Add AuthenticationMiddleware
middleware to your MIDDLEWARE settings:
MIDDLEWARE = [
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
]
Add JSONWebTokenMiddleware
middleware to your GRAPHENE settings:
GRAPHENE = {
'SCHEMA': 'mysite.myschema.schema',
'MIDDLEWARE': [
'graphql_jwt.middleware.JSONWebTokenMiddleware',
],
}
Add JSONWebTokenBackend
backend to your AUTHENTICATION_BACKENDS:
AUTHENTICATION_BACKENDS = [
'graphql_jwt.backends.JSONWebTokenBackend',
'django.contrib.auth.backends.ModelBackend',
]
Add django-graphql-jwt mutations to the root schema:
import graphene
import graphql_jwt
class Mutation(graphene.ObjectType):
token_auth = graphql_jwt.ObtainJSONWebToken.Field()
verify_token = graphql_jwt.Verify.Field()
refresh_token = graphql_jwt.Refresh.Field()
schema = graphene.Schema(mutation=Mutation)
Fantastic documentation is available at https://django-graphql-jwt.domake.io.