auth: use logger.debug instead of print
This commit is contained in:
parent
1918183c59
commit
d128c5f138
4 changed files with 26 additions and 24 deletions
|
@ -1,11 +1,19 @@
|
|||
# py-scopes/demo/config.py
|
||||
|
||||
from dotenv import load_dotenv
|
||||
import logging
|
||||
from os import getenv
|
||||
from scopes.server.app import zope_app_factory
|
||||
|
||||
load_dotenv()
|
||||
|
||||
log_file = 'log/scopes.log'
|
||||
log_level = logging.DEBUG
|
||||
log_format = '%(asctime)s %(levelname)s %(name)s %(message)s'
|
||||
log_dateformat = '%Y-%m-%dT%H:%M:%S'
|
||||
logging.basicConfig(filename=log_file, level=log_level,
|
||||
format=log_format, datefmt=log_dateformat)
|
||||
|
||||
server_port = getenv('SERVER_PORT', '8099')
|
||||
base_url = getenv('BASE_URL', 'https://demo.cy7.de')
|
||||
|
||||
|
|
|
@ -3,22 +3,16 @@
|
|||
from scopes.server import auth
|
||||
from scopes.storage import topic
|
||||
|
||||
import logging
|
||||
import waitress
|
||||
from wsgiref.simple_server import make_server
|
||||
|
||||
|
||||
def run(app, config):
|
||||
port = int(config.server_port)
|
||||
print(f'Serving on port {port}.')
|
||||
waitress.serve(app, port=port)
|
||||
|
||||
def run_wsgiref(app, config): # obsolete
|
||||
with make_server('', port, app) as httpd:
|
||||
print(f'Serving on port {port}.')
|
||||
try:
|
||||
httpd.serve_forever()
|
||||
except KeyboardInterrupt:
|
||||
print('Shutting down.')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import config
|
||||
|
|
|
@ -13,9 +13,6 @@ from scopes.server.browser import getView
|
|||
import scopes.storage.concept # register container classes
|
||||
from scopes.storage.folder import Root
|
||||
|
||||
logging.basicConfig(filename='log/scopes.log')
|
||||
logger = logging.getLogger()
|
||||
|
||||
|
||||
@implementer(IUserPreferredCharsets)
|
||||
class Request(BrowserRequest):
|
||||
|
@ -28,7 +25,6 @@ def zope_app_factory(config):
|
|||
def zope_app(environ, start_response):
|
||||
storage = storageFactory(config.dbschema)
|
||||
appRoot = Root(storage)
|
||||
#request = BrowserRequest(environ['wsgi.input'], environ)
|
||||
request = Request(environ['wsgi.input'], environ)
|
||||
request.setPublication(Publication(appRoot))
|
||||
request = publish(request, True)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
from cryptography.fernet import Fernet
|
||||
from email.utils import formatdate
|
||||
import json
|
||||
import logging
|
||||
import requests
|
||||
from time import time
|
||||
from urllib.parse import urlencode
|
||||
|
@ -17,6 +18,8 @@ from scopes import util
|
|||
|
||||
import config
|
||||
|
||||
logger = logging.getLogger('server.auth')
|
||||
|
||||
|
||||
@implementer(IAuthentication)
|
||||
class OidcAuthentication:
|
||||
|
@ -97,7 +100,7 @@ class Authenticator(DummyFolder):
|
|||
def authenticate(self):
|
||||
''' return principal or None'''
|
||||
data = self.loadSession()
|
||||
print('*** authenticate', data)
|
||||
logger.debug('authenticate: %s', data)
|
||||
if data and 'userid' in data:
|
||||
id = self.params.get('principal_prefix', '') + data.pop('userid')
|
||||
return Principal(id, data)
|
||||
|
@ -105,7 +108,7 @@ class Authenticator(DummyFolder):
|
|||
|
||||
def login(self):
|
||||
req = self.request
|
||||
print('*** login', self, req.getTraversalStack(), req['PATH_INFO'])
|
||||
logger.debug('login: %s %s %s', self, req.getTraversalStack(), req['PATH_INFO'])
|
||||
#print('***', dir(req))
|
||||
state = util.rndstr()
|
||||
nonce = util.rndstr()
|
||||
|
@ -127,10 +130,9 @@ class Authenticator(DummyFolder):
|
|||
|
||||
def callback(self):
|
||||
req = self.request
|
||||
print('*** callback', self, req.form)
|
||||
logger.debug('callback: %s %s', self, req.form)
|
||||
sdata = self.loadSession()
|
||||
code = req.form['code']
|
||||
print('*** session data', sdata, code)
|
||||
# !check state: req.form['state'] == sdata['state']
|
||||
args = dict(
|
||||
grant_type='authorization_code',
|
||||
|
@ -142,13 +144,13 @@ class Authenticator(DummyFolder):
|
|||
# !set header: 'Content-Type: application/x-www-form-urlencoded'
|
||||
tokenResponse = requests.post(self.params['token_url'], data=args)
|
||||
tdata = tokenResponse.json()
|
||||
print('*** token response', tdata)
|
||||
#print('*** token response', tdata)
|
||||
headers = dict(Authorization='Bearer ' + tdata['access_token'])
|
||||
userInfo = requests.get(self.params['userinfo_url'], headers=headers)
|
||||
userData = userInfo.json()
|
||||
print('*** user data', userData)
|
||||
#print('*** user data', userData)
|
||||
groupInfo = userData.get('urn:zitadel:iam:org:project:roles', {})
|
||||
print('*** group info', groupInfo)
|
||||
#print('*** group info', groupInfo)
|
||||
groupInfo = userData.get('urn:zitadel:iam:org:project:roles')
|
||||
ndata = dict(
|
||||
userid=userData['preferred_username'],
|
||||
|
@ -164,17 +166,19 @@ class Authenticator(DummyFolder):
|
|||
pass
|
||||
|
||||
def storeSession(self, data):
|
||||
options = dict(path='/')
|
||||
lifetime = int(self.params['cookie_lifetime'])
|
||||
options['expires'] = formatdate(time() + lifetime, localtime=False, usegmt=True)
|
||||
options = dict(
|
||||
path='/',
|
||||
expires=formatdate(time() + lifetime, localtime=False, usegmt=True),
|
||||
httponly=True,
|
||||
)
|
||||
options['max-age'] = lifetime
|
||||
domain = self.params['cookie_domain']
|
||||
if domain:
|
||||
options['domain'] = domain
|
||||
#options['httponly'] = True
|
||||
name = self.params['cookie_name']
|
||||
value = json.dumps(data)
|
||||
print('*** storeSession', name, value, options)
|
||||
#print('*** storeSession', name, value, options)
|
||||
if self.cookieCrypt:
|
||||
value = self.cookieCrypt.encrypt(value.encode('UTF-8')).decode('ASCII')
|
||||
self.request.response.setCookie(name, value, **options)
|
||||
|
@ -186,7 +190,7 @@ class Authenticator(DummyFolder):
|
|||
#raise ValueError('Missing authentication cookie')
|
||||
if self.cookieCrypt:
|
||||
cookie = self.cookieCrypt.decrypt(cookie)
|
||||
print('*** loadSession', self.params['cookie_name'], cookie)
|
||||
#print('*** loadSession', self.params['cookie_name'], cookie)
|
||||
# !error check: return None - or raise error?
|
||||
data = json.loads(cookie)
|
||||
return data
|
||||
|
|
Loading…
Add table
Reference in a new issue