def parse_http_basic(authorization_header): """Parse the username/credentials out of an HTTP Basic Auth header. Raises RequirementException if anything is uncool. """ auth_scheme, auth_token = require_split(authorization_header, 2) require(auth_scheme.lower() == "basic") try: auth_data = base64.b64decode(auth_token) except TypeError: raise RequirementException return require_split(auth_data, 2, ":")
def _get_client_auth(self): auth = request.headers.get("Authorization") try: auth_scheme, auth_token = require_split(auth, 2) require(auth_scheme.lower() == "basic") try: auth_data = base64.b64decode(auth_token) except TypeError: raise RequirementException client_id, client_secret = require_split(auth_data, 2, ":") client = OAuth2Client.get_token(client_id) require(client) require(client.secret == client_secret) return client except RequirementException: abort(401, headers=[("WWW-Authenticate", 'Basic realm="reddit"')])
def _get_bearer_token(self): auth = request.headers.get("Authorization") try: auth_scheme, bearer_token = require_split(auth, 2) require(auth_scheme.lower() == "bearer") return OAuth2AccessToken.get_token(bearer_token) except RequirementException: self._auth_error(400, "invalid_request")
def _get_bearer_token(self, strict=True): auth = request.headers.get("Authorization") try: auth_scheme, bearer_token = require_split(auth, 2) require(auth_scheme.lower() == "bearer") return bearer_token except RequirementException: if strict: self._auth_error(400, "invalid_request")