Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
f420a67c
Commit
f420a67c
authored
Apr 14, 2016
by
Clinton Blackburn
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #71 from edx/clintonb/edx-drf-extensions-update
Using jwt_decode_handler from edx-drf-extensions
parents
907c3b4e
d0d76df9
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
2 additions
and
67 deletions
+2
-67
course_discovery/apps/api/jwt_decode_handler.py
+0
-44
course_discovery/apps/api/tests/test_jwt_decode_handler.py
+0
-21
course_discovery/settings/base.py
+1
-1
requirements/base.txt
+1
-1
No files found.
course_discovery/apps/api/jwt_decode_handler.py
deleted
100644 → 0
View file @
907c3b4e
"""
Custom JWT decoding function for django_rest_framework jwt package.
Adds logging to facilitate debugging of InvalidTokenErrors. Also
requires "exp" and "iat" claims to be present - the base package
doesn't expose settings to enforce this.
"""
import
logging
import
jwt
from
rest_framework_jwt.settings
import
api_settings
logger
=
logging
.
getLogger
(
__name__
)
def
decode
(
token
):
"""
Ensure InvalidTokenErrors are logged for diagnostic purposes, before
failing authentication.
Args:
token (str): JSON web token (JWT) to be decoded.
"""
options
=
{
'verify_exp'
:
api_settings
.
JWT_VERIFY_EXPIRATION
,
'require_exp'
:
True
,
'require_iat'
:
True
,
}
try
:
return
jwt
.
decode
(
token
,
api_settings
.
JWT_SECRET_KEY
,
api_settings
.
JWT_VERIFY
,
options
=
options
,
leeway
=
api_settings
.
JWT_LEEWAY
,
audience
=
api_settings
.
JWT_AUDIENCE
,
issuer
=
api_settings
.
JWT_ISSUER
,
algorithms
=
[
api_settings
.
JWT_ALGORITHM
]
)
except
jwt
.
InvalidTokenError
:
logger
.
exception
(
'JWT decode failed!'
)
raise
course_discovery/apps/api/tests/test_jwt_decode_handler.py
deleted
100644 → 0
View file @
907c3b4e
import
jwt
from
django.test
import
TestCase
from
course_discovery.apps.api.jwt_decode_handler
import
decode
from
course_discovery.apps.api.tests.jwt_utils
import
generate_jwt_payload
,
generate_jwt_token
from
course_discovery.apps.core.tests.factories
import
UserFactory
class
JWTDecodeHandlerTests
(
TestCase
):
def
setUp
(
self
):
super
(
JWTDecodeHandlerTests
,
self
)
.
setUp
()
self
.
user
=
UserFactory
(
is_staff
=
True
,
is_superuser
=
True
)
self
.
payload
=
generate_jwt_payload
(
self
.
user
)
self
.
jwt
=
generate_jwt_token
(
self
.
payload
)
def
test_decode_success
(
self
):
self
.
assertDictEqual
(
decode
(
self
.
jwt
),
self
.
payload
)
def
test_decode_error
(
self
):
with
self
.
assertRaises
(
jwt
.
InvalidTokenError
):
decode
(
"not.a.valid.jwt"
)
course_discovery/settings/base.py
View file @
f420a67c
...
...
@@ -288,7 +288,7 @@ JWT_AUTH = {
'JWT_ALGORITHM'
:
'HS256'
,
'JWT_AUDIENCE'
:
'course-discovery'
,
'JWT_ISSUER'
:
'course-discovery'
,
'JWT_DECODE_HANDLER'
:
'
course_discovery.apps.api.jwt_decode_handler.decode
'
,
'JWT_DECODE_HANDLER'
:
'
edx_rest_framework_extensions.utils.jwt_decode_handler
'
,
}
SWAGGER_SETTINGS
=
{
...
...
requirements/base.txt
View file @
f420a67c
...
...
@@ -11,7 +11,7 @@ django-rest-swagger[reST]==0.3.5
dry-rest-permissions==0.1.6
edx-auth-backends==0.1.3
edx-ccx-keys==0.2.0
edx-drf-extensions==0.
3.0
edx-drf-extensions==0.
4.1
edx-opaque-keys==0.3.0
edx-rest-api-client==1.5.0
elasticsearch>=1.0.0,<2.0.0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment