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

Commit 51df9e2

Browse files
committed
Put more into service context.
Use set/get on dynamic attributes.
1 parent eb6e92e commit 51df9e2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+894
-455
lines changed

exampel/conversation.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,7 @@
9696
}
9797
)
9898

99-
service = build_services(service_spec, factory,
100-
state_db=InMemoryStateDataBase(),
101-
service_context=service_context)
99+
service = build_services(service_spec, factory, service_context=service_context)
102100

103101
service_context.service = service
104102

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def run_tests(self):
6868
"Topic :: Software Development :: Libraries :: Python Modules"],
6969
install_requires=[
7070
"pyyaml>=5.1.0",
71-
'oidcmsg>=0.6.10',
71+
'oidcmsg>=1.0.0',
7272
],
7373
tests_require=[
7474
"responses",

src/oidcservice/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
__author__ = 'Roland Hedberg'
12-
__version__ = '0.6.10'
12+
__version__ = '1.0.0'
1313

1414

1515
OIDCONF_PATTERN = "{}/.well-known/openid-configuration"

src/oidcservice/client_auth.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,15 @@ def _get_passwd(request, service, **kwargs):
9090
try:
9191
passwd = request["client_secret"]
9292
except KeyError:
93-
passwd = service.service_context.client_secret
93+
passwd = service.service_context.get('client_secret')
9494
return passwd
9595

9696
@staticmethod
9797
def _get_user(service, **kwargs):
9898
try:
9999
user = kwargs["user"]
100100
except KeyError:
101-
user = service.service_context.client_id
101+
user = service.service_context.get('client_id')
102102
return user
103103

104104
def _get_authentication_token(self, request, service, **kwargs):
@@ -131,7 +131,7 @@ def _with_or_without_client_id(request, service):
131131
'grant_type'] == 'authorization_code':
132132
if 'client_id' not in request:
133133
try:
134-
request['client_id'] = service.service_context.client_id
134+
request['client_id'] = service.service_context.get('client_id')
135135
except AttributeError:
136136
pass
137137
else:
@@ -213,13 +213,13 @@ def modify_request(self, request, service, **kwargs):
213213
try:
214214
request["client_secret"] = kwargs["client_secret"]
215215
except (KeyError, TypeError):
216-
if _context.client_secret:
217-
request["client_secret"] = _context.client_secret
216+
if _context.get('client_secret'):
217+
request["client_secret"] = _context.get('client_secret')
218218
else:
219219
raise AuthnFailure("Missing client secret")
220220

221221
# Add the client_id to the request
222-
request["client_id"] = _context.client_id
222+
request["client_id"] = _context.get('client_id')
223223

224224
def construct(self, request, service=None, http_args=None, **kwargs):
225225
"""
@@ -455,9 +455,9 @@ def _get_audience_and_algorithm(self, context, **kwargs):
455455
'token_endpoint_auth_signing_alg']
456456
except (KeyError, AttributeError):
457457
pass
458-
audience = context.provider_info['token_endpoint']
458+
audience = context.get('provider_info')['token_endpoint']
459459
else:
460-
audience = context.provider_info['issuer']
460+
audience = context.get('provider_info')['issuer']
461461

462462
if not algorithm:
463463
algorithm = self.choose_algorithm(**kwargs)
@@ -480,7 +480,7 @@ def _construct_client_assertion(self, service, **kwargs):
480480

481481
# construct the signed JWT with the assertions and add
482482
# it as value to the 'client_assertion' claim of the request
483-
return assertion_jwt(_context.client_id, signing_key, audience, algorithm, **_args)
483+
return assertion_jwt(_context.get('client_id'), signing_key, audience, algorithm, **_args)
484484

485485
def modify_request(self, request, service, **kwargs):
486486
"""
@@ -582,7 +582,7 @@ def valid_service_context(service_context, when=0):
582582
:param when: A time stamp against which the expiration time is to be checked
583583
:return: True if the client_secret is still valid
584584
"""
585-
eta = getattr(service_context, 'client_secret_expires_at', 0)
585+
eta = service_context.get('client_secret_expires_at', 0)
586586
now = when or utc_time_sans_frac()
587587
if eta != 0 and eta < now:
588588
return False

src/oidcservice/oauth2/access_token.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from oidcservice.oauth2.utils import get_state_parameter
99
from oidcservice.service import Service
1010

11-
1211
LOGGER = logging.getLogger(__name__)
1312

1413

@@ -25,10 +24,9 @@ class AccessToken(Service):
2524
request_body_type = 'urlencoded'
2625
response_body_type = 'json'
2726

28-
def __init__(self, service_context, state_db, client_authn_factory=None,
29-
conf=None):
30-
Service.__init__(self, service_context, state_db,
31-
client_authn_factory=client_authn_factory, conf=conf)
27+
def __init__(self, service_context, client_authn_factory=None, conf=None):
28+
Service.__init__(self, service_context, client_authn_factory=client_authn_factory,
29+
conf=conf)
3230
self.pre_construct.append(self.oauth_pre_construct)
3331

3432
def update_service_context(self, resp, key='', **kwargs):

src/oidcservice/oauth2/authorization.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ class Authorization(Service):
2525
service_name = 'authorization'
2626
response_body_type = 'urlencoded'
2727

28-
def __init__(self, service_context, state_db,
29-
client_authn_factory=None, conf=None):
30-
Service.__init__(self, service_context, state_db=state_db,
31-
client_authn_factory=client_authn_factory, conf=conf)
28+
def __init__(self, service_context, client_authn_factory=None, conf=None):
29+
Service.__init__(self, service_context, client_authn_factory=client_authn_factory,
30+
conf=conf)
3231
self.pre_construct.extend([pick_redirect_uris, set_state_parameter])
3332
self.post_construct.append(self.store_auth_request)
3433

@@ -48,7 +47,7 @@ def gather_request_args(self, **kwargs):
4847

4948
if 'redirect_uri' not in ar_args:
5049
try:
51-
ar_args['redirect_uri'] = self.service_context.redirect_uris[0]
50+
ar_args['redirect_uri'] = self.service_context.get('redirect_uris')[0]
5251
except (KeyError, AttributeError):
5352
raise MissingParameter('redirect_uri')
5453

src/oidcservice/oauth2/client_credentials/cc_access_token.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ class CCAccessToken(Service):
1717
request_body_type = 'urlencoded'
1818
response_body_type = 'json'
1919

20-
def __init__(self, service_context, state_db, client_authn_factory=None,
21-
conf=None):
22-
Service.__init__(self, service_context, state_db,
20+
def __init__(self, service_context, client_authn_factory=None, conf=None):
21+
Service.__init__(self, service_context,
2322
client_authn_factory=client_authn_factory, conf=conf)
2423

2524
def update_service_context(self, resp, key='cc', **kwargs):

src/oidcservice/oauth2/client_credentials/cc_refresh_access_token.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ class CCRefreshAccessToken(Service):
1515
default_authn_method = 'bearer_header'
1616
http_method = 'POST'
1717

18-
def __init__(self, service_context, state_db, client_authn_factory=None,
19-
conf=None):
20-
Service.__init__(self, service_context, state_db,
18+
def __init__(self, service_context, client_authn_factory=None, conf=None):
19+
Service.__init__(self, service_context,
2120
client_authn_factory=client_authn_factory, conf=conf)
2221
self.pre_construct.append(self.cc_pre_construct)
2322
self.post_construct.append(self.cc_post_construct)

src/oidcservice/oauth2/provider_info_discovery.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@ class ProviderInfoDiscovery(Service):
2222
service_name = 'provider_info'
2323
http_method = 'GET'
2424

25-
def __init__(self, service_context, state_db, client_authn_factory=None,
26-
conf=None):
27-
Service.__init__(self, service_context, state_db,
28-
client_authn_factory=client_authn_factory, conf=conf)
25+
def __init__(self, service_context, client_authn_factory=None, conf=None):
26+
Service.__init__(self, service_context, client_authn_factory=client_authn_factory,
27+
conf=conf)
2928

3029
def get_endpoint(self):
3130
"""
@@ -34,7 +33,7 @@ def get_endpoint(self):
3433
:return: Service endpoint
3534
"""
3635
try:
37-
_iss = self.service_context.issuer
36+
_iss = self.service_context.get('issuer')
3837
except AttributeError:
3938
_iss = self.endpoint
4039

@@ -116,12 +115,13 @@ def _update_service_context(self, resp):
116115
# Verify that the issuer value received is the same as the
117116
# url that was used as service endpoint (without the .well-known part)
118117
if "issuer" in resp:
119-
_pcr_issuer = self._verify_issuer(resp, self.service_context.issuer)
118+
_pcr_issuer = self._verify_issuer(resp,
119+
self.service_context.get('issuer'))
120120
else: # No prior knowledge
121-
_pcr_issuer = self.service_context.issuer
121+
_pcr_issuer = self.service_context.get('issuer')
122122

123-
self.service_context.issuer = _pcr_issuer
124-
self.service_context.provider_info = resp
123+
self.service_context.set('issuer', _pcr_issuer)
124+
self.service_context.set('provider_info', resp)
125125

126126
self._set_endpoints(resp)
127127

src/oidcservice/oauth2/refresh_access_token.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,9 @@ class RefreshAccessToken(Service):
2323
default_authn_method = 'bearer_header'
2424
http_method = 'POST'
2525

26-
def __init__(self, service_context, state_db, client_authn_factory=None,
27-
conf=None):
28-
Service.__init__(self, service_context, state_db,
29-
client_authn_factory=client_authn_factory, conf=conf)
26+
def __init__(self, service_context, client_authn_factory=None, conf=None):
27+
Service.__init__(self, service_context, client_authn_factory=client_authn_factory,
28+
conf=conf)
3029
self.pre_construct.append(self.oauth_pre_construct)
3130

3231
def update_service_context(self, resp, key='', **kwargs):

0 commit comments

Comments
 (0)