Created
July 6, 2020 08:34
-
-
Save om2c0de/c16e8d343a2824d44ad5767fdb4030b3 to your computer and use it in GitHub Desktop.
KerberosAuthHandler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import logging | |
import sys | |
from abc import abstractmethod | |
from typing import Optional, Awaitable | |
import tornado.escape | |
import tornado.ioloop | |
import tornado.web | |
from .mixins import KerberosAuthMixin | |
# Initialize logger | |
logger = logging.getLogger(__name__) | |
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG) | |
class KerberosAuthHandler(KerberosAuthMixin): | |
def get(self): | |
auth_header = self.request.headers.get("Authorization") | |
if auth_header: | |
self.get_authenticated_user(self._on_auth) | |
return | |
self.authenticate_redirect() | |
def _on_auth(self, user): | |
if not user: | |
raise tornado.web.HTTPError(500, "Kerberos auth failed") | |
self.set_secure_cookie("user", tornado.escape.json_encode(user)) | |
logging.debug(f"KerberosAuthHandler user: {user}") # To see what you get | |
next_url = self.get_argument("next", None) # To redirect properly | |
if next_url: | |
self.redirect(next_url) | |
else: | |
self.redirect("/") | |
@abstractmethod | |
def data_received(self, chunk: bytes) -> Optional[Awaitable[None]]: | |
... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment