Exemple #1
0
 def test_decode_encode_payload(self):
   # Example from https://tools.ietf.org/html/rfc7519#section-3.1
   encoded_payload = (b'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0'
                      b'dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ')
   json_payload = _jwt_format.decode_payload(encoded_payload)
   payload = _jwt_format.json_loads(json_payload)
   self.assertEqual(payload['iss'], 'joe')
   self.assertEqual(payload['exp'], 1300819380)
   self.assertEqual(payload['http://example.com/is_root'], True)
   self.assertEqual(
       _jwt_format.decode_payload(_jwt_format.encode_payload(json_payload)),
       json_payload)
    def verify_mac_and_decode(
            self, compact: Text, validator: _jwt_validator.JwtValidator
    ) -> _verified_jwt.VerifiedJwt:
        """Verifies, validates and decodes a MACed compact JWT token."""
        encoded = compact.encode('utf8')
        try:
            unsigned_compact, encoded_signature = encoded.rsplit(b'.', 1)
        except ValueError:
            raise _jwt_error.JwtInvalidError('invalid token')
        signature = _jwt_format.decode_signature(encoded_signature)
        self._verify_mac(signature, unsigned_compact)

        try:
            encoded_header, encoded_payload = unsigned_compact.split(b'.')
        except ValueError:
            raise _jwt_error.JwtInvalidError('invalid token')
        _jwt_format.validate_header(encoded_header, self._algorithm)

        json_payload = _jwt_format.decode_payload(encoded_payload)
        raw_jwt = _raw_jwt.RawJwt.from_json_payload(json_payload)
        _jwt_validator.validate(validator, raw_jwt)
        return _verified_jwt.VerifiedJwt._create(raw_jwt)  # pylint: disable=protected-access