Exemple #1
0
    def connect(self):
        headers = dict(self.scope["headers"])
        if b"authorization" not in headers:
            LOGGER.warning("WS Request without authorization header")
            raise DenyConnection()

        raw_header = headers[b"authorization"]

        token = token_from_header(raw_header)
        if not token:
            LOGGER.warning("Failed to authenticate")
            raise DenyConnection()

        self.user = token.user
Exemple #2
0
    def connect(self):
        headers = dict(self.scope["headers"])
        if b"authorization" not in headers:
            LOGGER.warning("WS Request without authorization header")
            raise DenyConnection()

        raw_header = headers[b"authorization"]

        try:
            token = token_from_header(raw_header)
            # token is only None when no header was given, in which case we deny too
            if not token:
                raise DenyConnection()
        except AuthenticationFailed as exc:
            LOGGER.warning("Failed to authenticate", exc=exc)
            raise DenyConnection()

        self.user = token.user
Exemple #3
0
 def test_invalid_no_token(self):
     """Test invalid with no token"""
     auth = b64encode(":abc".encode()).decode()
     self.assertIsNone(token_from_header(f"Basic :{auth}".encode()))
Exemple #4
0
 def test_invalid_decode(self):
     """Test invalid bas64"""
     self.assertIsNone(token_from_header("Basic bar".encode()))
Exemple #5
0
 def test_invalid_empty_password(self):
     """Test invalid with empty password"""
     self.assertIsNone(token_from_header("Basic :".encode()))
Exemple #6
0
 def test_valid_bearer(self):
     """Test valid token"""
     token = Token.objects.create(intent=TokenIntents.INTENT_API,
                                  user=get_anonymous_user())
     self.assertEqual(token_from_header(f"Bearer {token.key}".encode()),
                      token)
Exemple #7
0
 def test_invalid_type(self):
     """Test invalid type"""
     self.assertIsNone(token_from_header("foo bar".encode()))
Exemple #8
0
 def test_valid_basic(self):
     """Test valid token"""
     token = Token.objects.create(intent=TokenIntents.INTENT_API,
                                  user=get_anonymous_user())
     auth = b64encode(f":{token.key}".encode()).decode()
     self.assertEqual(token_from_header(f"Basic {auth}".encode()), token)
Exemple #9
0
 def test_invalid_no_token(self):
     """Test invalid with no token"""
     with self.assertRaises(AuthenticationFailed):
         auth = b64encode(":abc".encode()).decode()
         self.assertIsNone(token_from_header(f"Basic :{auth}".encode()))
Exemple #10
0
 def test_invalid_empty_password(self):
     """Test invalid with empty password"""
     with self.assertRaises(AuthenticationFailed):
         token_from_header("Basic :".encode())
Exemple #11
0
 def test_invalid_decode(self):
     """Test invalid bas64"""
     with self.assertRaises(AuthenticationFailed):
         token_from_header("Basic bar".encode())
Exemple #12
0
 def test_invalid_type(self):
     """Test invalid type"""
     with self.assertRaises(AuthenticationFailed):
         token_from_header("foo bar".encode())