Я пытаюсь реализовать свой собственный метод аутентификации для AuthKit и пытаюсь выяснить, как работают некоторые из встроенных методов. В частности, я пытаюсь выяснить, как правильно обновить REMOTE_USER
для environ
.
Вот как это обрабатывается внутри authkit.authenticate.basic
, но это довольно запутанно. Я не могу найти место, где определены REMOTE_USER
и AUTH_TYPE
. Здесь происходит что-то странное, и если да, то что это?
def __call__(self, environ, start_response):
environ['authkit.users'] = self.users
result = self.authenticate(environ)
if isinstance(result, str):
AUTH_TYPE.update(environ, 'basic')
REMOTE_USER.update(environ, result)
return self.application(environ, start_response)
На самом деле существует множество таких заглавных букв, для которых я не могу найти определение. Например, откуда берется AUTHORIZATION
:
def authenticate(self, environ):
authorization = AUTHORIZATION(environ)
if not authorization:
return self.build_authentication()
(authmeth, auth) = authorization.split(' ',1)
if 'basic' != authmeth.lower():
return self.build_authentication()
auth = auth.strip().decode('base64')
username, password = auth.split(':',1)
if self.authfunc(environ, username, password):
return username
return self.build_authentication()
Я чувствую, что, может быть, мне не хватает какой-то особой синтаксической обработки для environ
диктата, но возможно, что здесь происходит что-то действительно странное, что не сразу очевидно для кого-то столь нового для Python, как я.