Skip to content
This repository was archived by the owner on Jun 1, 2023. It is now read-only.

Commit a456df7

Browse files
committed
Configure and logging handling.
1 parent b761285 commit a456df7

File tree

4 files changed

+58
-23
lines changed

4 files changed

+58
-23
lines changed

flask_rp/conf.yaml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
logging:
22
version: 1
3+
disable_existing_loggers: False
34
root:
45
handlers:
56
- console
7+
- file
68
level: DEBUG
79
loggers:
810
idp:
@@ -12,6 +14,10 @@ logging:
1214
class: logging.StreamHandler
1315
stream: 'ext://sys.stdout'
1416
formatter: default
17+
file:
18+
class: logging.FileHandler
19+
filename: 'debug.log'
20+
formatter: default
1521
formatters:
1622
default:
1723
format: '%(asctime)s %(name)s %(levelname)s %(message)s'
@@ -70,9 +76,6 @@ services: &id002
7076
accesstoken:
7177
class: oidcservice.oidc.access_token.AccessToken
7278
kwargs: {}
73-
refresh_accesstoken:
74-
class: oidcservice.oidc.refresh_access_token.RefreshAccessToken
75-
kwargs: {}
7679
userinfo:
7780
class: oidcservice.oidc.userinfo.UserInfo
7881
kwargs: {}
@@ -97,6 +100,20 @@ clients:
97100
kwargs:
98101
code_challenge_length: 64
99102
code_challenge_method: S256
103+
bobcat:
104+
client_id: client3
105+
client_secret: 2222222222222222222222222222222222222222
106+
client_preferences: *id001
107+
issuer: http://127.0.0.1:8080/
108+
jwks_uri: 'static/jwks.json'
109+
redirect_uris: ['https://{domain}:{port}/authz_cb/bobcat']
110+
services: *id002
111+
request_args:
112+
claims:
113+
id_token:
114+
acr:
115+
essential:
116+
true
100117

101118

102119
webserver:

flask_rp/wsgi.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@
1111
except ImportError:
1212
import application
1313

14-
logger = logging.getLogger("")
15-
RP_LOGFILE_NAME = os.environ.get('RP_LOGFILE_NAME', 'flrp.log')
16-
17-
hdlr = logging.FileHandler(RP_LOGFILE_NAME)
18-
log_format = ("%(asctime)s %(name)s:%(levelname)s "
19-
"%(message)s [%(name)s.%(funcName)s:%(lineno)s]")
20-
base_formatter = logging.Formatter(log_format)
21-
22-
hdlr.setFormatter(base_formatter)
23-
logger.addHandler(hdlr)
24-
logger.setLevel(logging.DEBUG)
25-
26-
stdout = logging.StreamHandler()
27-
stdout.setFormatter(base_formatter)
28-
logger.addHandler(stdout)
14+
# logger = logging.getLogger("")
15+
# RP_LOGFILE_NAME = os.environ.get('RP_LOGFILE_NAME', 'flrp.log')
16+
#
17+
# hdlr = logging.FileHandler(RP_LOGFILE_NAME)
18+
# log_format = ("%(asctime)s %(name)s:%(levelname)s "
19+
# "%(message)s [%(name)s.%(funcName)s:%(lineno)s]")
20+
# base_formatter = logging.Formatter(log_format)
21+
#
22+
# hdlr.setFormatter(base_formatter)
23+
# logger.addHandler(hdlr)
24+
# logger.setLevel(logging.DEBUG)
25+
#
26+
# stdout = logging.StreamHandler()
27+
# stdout.setFormatter(base_formatter)
28+
# logger.addHandler(stdout)
2929

3030
dir_path = os.path.dirname(os.path.realpath(__file__))
3131

src/oidcrp/__init__.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
from oidcmsg.oidc import AccessTokenResponse
1414
from oidcmsg.oidc import AuthorizationRequest
1515
from oidcmsg.oidc import AuthorizationResponse
16+
from oidcmsg.oidc import Claims
1617
from oidcmsg.oidc import OpenIDSchema
1718
from oidcmsg.oidc import verified_claim_name
1819
from oidcmsg.oidc.session import BackChannelLogoutRequest
@@ -329,6 +330,7 @@ def client_setup(self, iss_id='', user=''):
329330
if not user:
330331
raise ValueError('Need issuer or user')
331332

333+
logger.debug("Connecting to previously unknown OP")
332334
temporary_client = self.init_client('')
333335
temporary_client.do_request('webfinger', resource=user)
334336
else:
@@ -340,10 +342,12 @@ def client_setup(self, iss_id='', user=''):
340342
if temporary_client:
341343
client = temporary_client
342344
else:
345+
logger.debug("Creating new client: %s", iss_id)
343346
client = self.init_client(iss_id)
344347
else:
345348
return client
346349

350+
logger.debug("Get provider info")
347351
issuer = self.do_provider_info(client)
348352
_sc = client.service_context
349353
try:
@@ -356,8 +360,16 @@ def client_setup(self, iss_id='', user=''):
356360

357361
if registration_type == 'automatic':
358362
_sc.client_id = client.client_id = _fe.entity_id
359-
_sc.redirect_uris = _sc.behaviour['redirect_uris']
363+
_redirect_uris = _sc.behaviour.get("redirect_uris")
364+
if _redirect_uris:
365+
_sc.redirect_uris = _redirect_uris
366+
else:
367+
_callbacks = self.create_callbacks(_sc.provider_info['issuer'])
368+
_sc.redirect_uris = [
369+
v for k, v in _callbacks.items() if not k.startswith('__')]
370+
_sc.callbacks = _callbacks
360371
else: # explicit
372+
logger.debug("Do client registration")
361373
self.do_client_registration(client, iss_id)
362374

363375
self.issuer2rp[issuer] = client
@@ -411,6 +423,12 @@ def init_authorization(self, client=None, state='', req_args=None):
411423
'nonce': _nonce
412424
}
413425

426+
_req_args = service_context.config.get("request_args")
427+
if _req_args:
428+
if 'claims' in _req_args:
429+
_req_args["claims"] = Claims(**_req_args["claims"])
430+
request_args.update(_req_args)
431+
414432
if req_args is not None:
415433
request_args.update(req_args)
416434

src/oidcrp/oauth2/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,10 @@ def service_request(self, service, url, method="GET", body=None,
158158

159159
logger.debug(REQUEST_INFO.format(url, method, body, headers))
160160

161-
if has_method(service, "get_response"):
162-
response = service.get_response(url, method, body, response_body_type, headers,
163-
**kwargs)
164-
else:
161+
try:
162+
response = service.get_response_ext(url, method, body, response_body_type, headers,
163+
**kwargs)
164+
except AttributeError:
165165
response = self.get_response(service, url, method, body, response_body_type, headers,
166166
**kwargs)
167167

0 commit comments

Comments
 (0)