Validates incoming username and password.
| 677 | |
| 678 | |
| 679 | class HeaderAuthServerMiddlewareFactory(ServerMiddlewareFactory): |
| 680 | """Validates incoming username and password.""" |
| 681 | |
| 682 | def start_call(self, info, headers): |
| 683 | auth_header = case_insensitive_header_lookup( |
| 684 | headers, |
| 685 | 'Authorization' |
| 686 | ) |
| 687 | values = auth_header[0].split(' ') |
| 688 | token = '' |
| 689 | error_message = 'Invalid credentials' |
| 690 | |
| 691 | if values[0] == 'Basic': |
| 692 | decoded = base64.b64decode(values[1]) |
| 693 | pair = decoded.decode("utf-8").split(':') |
| 694 | if not (pair[0] == 'test' and pair[1] == 'password'): |
| 695 | raise flight.FlightUnauthenticatedError(error_message) |
| 696 | token = 'token1234' |
| 697 | elif values[0] == 'Bearer': |
| 698 | token = values[1] |
| 699 | if not token == 'token1234': |
| 700 | raise flight.FlightUnauthenticatedError(error_message) |
| 701 | else: |
| 702 | raise flight.FlightUnauthenticatedError(error_message) |
| 703 | |
| 704 | return HeaderAuthServerMiddleware(token) |
| 705 | |
| 706 | |
| 707 | class HeaderAuthServerMiddleware(ServerMiddleware): |
no outgoing calls