summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Padilla <jpadilla@webapplicate.com>2017-06-21 16:04:35 -0400
committerJosé Padilla <jpadilla@webapplicate.com>2017-06-22 09:58:04 -0400
commit11f30c4050a11b6398d38f505578c9dabeba6c78 (patch)
tree1c27aaa4f23ed5d108cbaa2936446ffd0073e7e2
parent37926ea0dd207db070b45473438853447e4c1392 (diff)
downloadpyjwt-11f30c4050a11b6398d38f505578c9dabeba6c78.tar.gz
Add warning when decoding with no algorithms specified
-rw-r--r--jwt/api_jws.py9
-rw-r--r--jwt/api_jwt.py9
-rw-r--r--tests/test_api_jws.py10
-rw-r--r--tests/test_api_jwt.py10
4 files changed, 38 insertions, 0 deletions
diff --git a/jwt/api_jws.py b/jwt/api_jws.py
index ace5a62..2842258 100644
--- a/jwt/api_jws.py
+++ b/jwt/api_jws.py
@@ -117,6 +117,15 @@ class PyJWS(object):
def decode(self, jws, key='', verify=True, algorithms=None, options=None,
**kwargs):
+
+ if not algorithms:
+ warnings.warn(
+ 'It is strongly recommended that you pass in a ' +
+ 'value for the "algorithms" argument when calling decode(). ' +
+ 'This argument will be mandatory in a future version.',
+ DeprecationWarning
+ )
+
payload, signing_input, header, signature = self._load(jws)
if verify:
diff --git a/jwt/api_jwt.py b/jwt/api_jwt.py
index 72ad58c..4d3c927 100644
--- a/jwt/api_jwt.py
+++ b/jwt/api_jwt.py
@@ -58,6 +58,15 @@ class PyJWT(PyJWS):
def decode(self, jwt, key='', verify=True, algorithms=None, options=None,
**kwargs):
+
+ if not algorithms:
+ warnings.warn(
+ 'It is strongly recommended that you pass in a ' +
+ 'value for the "algorithms" argument when calling decode(). ' +
+ 'This argument will be mandatory in a future version.',
+ DeprecationWarning
+ )
+
payload, signing_input, header, signature = self._load(jwt)
if options is None:
diff --git a/tests/test_api_jws.py b/tests/test_api_jws.py
index 053dd11..c90fda2 100644
--- a/tests/test_api_jws.py
+++ b/tests/test_api_jws.py
@@ -265,6 +265,16 @@ class TestJWS:
pytest.deprecated_call(jws.decode, example_jws, verify=False)
+ def test_decode_with_optional_algorithms(self, jws):
+ example_secret = 'secret'
+ example_jws = (
+ b'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.'
+ b'aGVsbG8gd29ybGQ.'
+ b'SIr03zM64awWRdPrAM_61QWsZchAtgDV3pphfHPPWkI'
+ )
+
+ pytest.deprecated_call(jws.decode, example_jws, key=example_secret)
+
def test_load_no_verification(self, jws, payload):
right_secret = 'foo'
jws_message = jws.encode(payload, right_secret)
diff --git a/tests/test_api_jwt.py b/tests/test_api_jwt.py
index 61de6e0..798e4b7 100644
--- a/tests/test_api_jwt.py
+++ b/tests/test_api_jwt.py
@@ -472,3 +472,13 @@ class TestJWT:
secret,
verify_expiration=True
)
+
+ def test_decode_with_optional_algorithms(self, jwt, payload):
+ secret = 'secret'
+ jwt_message = jwt.encode(payload, secret)
+
+ pytest.deprecated_call(
+ jwt.decode,
+ jwt_message,
+ secret
+ )