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

Commit 177e6c0

Browse files
committed
Adjusting to changes in oidcservice. Made to work with oidcservice 0.6.0.
1 parent d74afd7 commit 177e6c0

9 files changed

Lines changed: 37 additions & 28 deletions

File tree

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def run_tests(self):
6565
"Topic :: Software Development :: Libraries :: Python Modules"],
6666
install_requires=[
6767
'cryptojwt>=0.3.1',
68-
'oidcservice>=0.5.12',
68+
'oidcservice>=0.6.0',
6969
'oidcmsg>=0.5.0'
7070
],
7171
tests_require=[

src/oidcrp/__init__.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from oidcmsg.time_util import time_sans_frac
1515
from oidcservice import rndstr
1616
from oidcservice.exception import OidcServiceError
17+
from oidcservice.service_factory import service_factory
1718
from oidcservice.state_interface import InMemoryStateDataBase
1819
from oidcservice.state_interface import StateInterface
1920

@@ -22,7 +23,7 @@
2223
from oidcrp import provider
2324

2425
__author__ = 'Roland Hedberg'
25-
__version__ = '0.5.0'
26+
__version__ = '0.6.0'
2627

2728
logger = logging.getLogger(__name__)
2829

@@ -110,7 +111,7 @@ class RPHandler(object):
110111
def __init__(self, base_url='', hash_seed="", keyjar=None, verify_ssl=True,
111112
services=None, service_factory=None, client_configs=None,
112113
client_authn_factory=None, client_cls=None,
113-
state_db=None, http_lib=None, **kwargs):
114+
state_db=None, http_lib=None, module_dirs=None, **kwargs):
114115
self.base_url = base_url
115116
self.hash_seed = as_bytes(hash_seed)
116117
self.verify_ssl = verify_ssl
@@ -135,6 +136,7 @@ def __init__(self, base_url='', hash_seed="", keyjar=None, verify_ssl=True,
135136
self.service_factory = service_factory or factory
136137
self.client_authn_factory = client_authn_factory
137138
self.client_configs = client_configs
139+
self.module_dirs = module_dirs or ['oidc', 'oauth2']
138140

139141
# keep track on which RP instance that serves with OP
140142
self.issuer2rp = {}
@@ -207,7 +209,7 @@ def init_client(self, issuer):
207209
client_authn_factory=self.client_authn_factory,
208210
verify_ssl=self.verify_ssl, services=_services,
209211
service_factory=self.service_factory, config=_cnf,
210-
httplib=self.httplib
212+
httplib=self.httplib, module_dirs=self.module_dirs
211213
)
212214
except Exception as err:
213215
logger.error('Failed initiating client: {}'.format(err))
@@ -872,7 +874,7 @@ def get_provider_specific_service(service_provider, service, **kwargs):
872874
return None
873875

874876

875-
def factory(service_name, **kwargs):
877+
def factory(service_name, ignore, **kwargs):
876878
"""
877879
A factory the given a service name will return a
878880
:py:class:`oidcservice.service.Service` instance if a service matching the
@@ -887,10 +889,10 @@ def factory(service_name, **kwargs):
887889
if '.' in service_name:
888890
group, name = service_name.split('.')
889891
if group == 'oauth2':
890-
oauth2.service.factory(service_name[1], **kwargs)
892+
service_factory(service_name[1], ['oauth2'], **kwargs)
891893
elif group == 'oidc':
892-
oidc.service.factory(service_name[1], **kwargs)
894+
service_factory(service_name[1], ['oidc'], **kwargs)
893895
else:
894896
return get_provider_specific_service(group, name, **kwargs)
895897
else:
896-
return oidc.service.factory(service_name, **kwargs)
898+
return service_factory(service_name, ['oidc', 'oauth2'], **kwargs)

src/oidcrp/oauth2/__init__.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from oidcservice.client_auth import factory as ca_factory
99
from oidcservice.exception import OidcServiceError
1010
from oidcservice.exception import ParseError
11-
from oidcservice.oauth2 import service
11+
from oidcservice.service_factory import service_factory as default_service_factory
1212
from oidcservice.service import REQUEST_INFO
1313
from oidcservice.service import SUCCESSFUL
1414
from oidcservice.service import build_services
@@ -43,7 +43,7 @@ class Client(object):
4343
def __init__(self, state_db, ca_certs=None, client_authn_factory=None,
4444
keyjar=None, verify_ssl=True, config=None, client_cert=None,
4545
httplib=None, services=None, service_factory=None,
46-
jwks_uri=''):
46+
jwks_uri='', module_dirs=None):
4747
"""
4848
4949
:param ca_certs: Certificates used to verify HTTPS certificates
@@ -80,10 +80,14 @@ def __init__(self, state_db, ca_certs=None, client_authn_factory=None,
8080
self.client_id = self.service_context.client_id
8181

8282
_cam = client_authn_factory or ca_factory
83-
self.service_factory = service_factory or service.factory
83+
self.service_factory = service_factory or default_service_factory
8484
_srvs = services or DEFAULT_SERVICES
8585

86+
if not module_dirs:
87+
module_dirs = ['oauth2']
88+
8689
self.service = build_services(_srvs, self.service_factory,
90+
module_dirs,
8791
self.service_context, state_db, _cam)
8892

8993
self.service_context.service = self.service

src/oidcrp/oidc/__init__.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33

44
from oidcservice.client_auth import BearerHeader
5+
from oidcservice.service_factory import service_factory as default_service_factory
56

67
try:
78
from json import JSONDecodeError
@@ -10,7 +11,6 @@
1011
else:
1112
_decode_err = JSONDecodeError
1213

13-
from oidcservice.oidc import service
1414
from oidcrp import oauth2
1515

1616
__author__ = 'Roland Hedberg'
@@ -72,16 +72,20 @@ class FetchException(Exception):
7272
class RP(oauth2.Client):
7373
def __init__(self, state_db, ca_certs=None, client_authn_factory=None,
7474
keyjar=None, verify_ssl=True, config=None, client_cert=None,
75-
httplib=None, services=None, service_factory=None):
75+
httplib=None, services=None, service_factory=None,
76+
module_dirs=None):
7677

7778
_srvs = services or DEFAULT_SERVICES
78-
service_factory = service_factory or service.factory
79+
service_factory = service_factory or default_service_factory
80+
module_dirs = module_dirs or ['oidc']
81+
7982
oauth2.Client.__init__(self, state_db, ca_certs,
8083
client_authn_factory=client_authn_factory,
8184
keyjar=keyjar, verify_ssl=verify_ssl,
8285
config=config, client_cert=client_cert,
8386
httplib=httplib, services=_srvs,
84-
service_factory=service_factory)
87+
service_factory=service_factory,
88+
module_dirs=module_dirs)
8589

8690
def fetch_distributed_claims(self, userinfo, callback=None):
8791
"""

src/oidcrp/provider/github.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
from oidcmsg.message import SINGLE_OPTIONAL_STRING
44
from oidcmsg.message import SINGLE_REQUIRED_STRING
55
from oidcmsg.oauth2 import ResponseMessage
6-
7-
from oidcservice.oidc import service as oidc_service
8-
from oidcservice.oauth2 import service
6+
from oidcservice.oauth2 import access_token
7+
from oidcservice.oidc import userinfo
98

109

1110
class AccessTokenResponse(Message):
@@ -19,14 +18,14 @@ class AccessTokenResponse(Message):
1918
}
2019

2120

22-
class AccessToken(service.AccessToken):
21+
class AccessToken(access_token.AccessToken):
2322
msg_type = oauth2.AccessTokenRequest
2423
response_cls = AccessTokenResponse
2524
error_msg = oauth2.TokenErrorResponse
2625
response_body_type = 'urlencoded'
2726

2827

29-
class UserInfo(oidc_service.UserInfo):
28+
class UserInfo(userinfo.UserInfo):
3029
response_cls = Message
3130
error_msg = ResponseMessage
3231
default_authn_method = ''

src/oidcrp/provider/linkedin.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
from oidcservice.oidc import service as oidc_service
2-
from oidcservice.oauth2 import service
3-
41
from oidcmsg import oauth2
52
from oidcmsg.message import Message
63
from oidcmsg.message import SINGLE_OPTIONAL_JSON
74
from oidcmsg.message import SINGLE_OPTIONAL_STRING
85
from oidcmsg.message import SINGLE_REQUIRED_INT
96
from oidcmsg.message import SINGLE_REQUIRED_STRING
107

8+
from oidcservice.oauth2 import access_token
9+
from oidcservice.oidc import userinfo
10+
1111

1212
class AccessTokenResponse(Message):
1313
"""
@@ -29,11 +29,11 @@ class UserSchema(Message):
2929
}
3030

3131

32-
class AccessToken(service.AccessToken):
32+
class AccessToken(access_token.AccessToken):
3333
msg_type = oauth2.AccessTokenRequest
3434
response_cls = AccessTokenResponse
3535
error_msg = oauth2.TokenErrorResponse
3636

3737

38-
class UserInfo(oidc_service.UserInfo):
38+
class UserInfo(userinfo.UserInfo):
3939
response_cls = UserSchema

tests/test_11_oauth2.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def test_construct_accesstoken_request(self):
8585

8686
auth_request = AuthorizationRequest(
8787
redirect_uri='https://example.com/cli/authz_cb',
88-
state='state'
88+
state='ABCDE'
8989
)
9090

9191
self.client.session_interface.store_item(auth_request, 'auth_request',

tests/test_14_oidc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def test_construct_authorization_request(self):
8080
def test_construct_accesstoken_request(self):
8181
auth_request = AuthorizationRequest(
8282
redirect_uri='https://example.com/cli/authz_cb',
83-
state='state'
83+
state='ABCDE'
8484
)
8585

8686
self.client.session_interface.store_item(auth_request,

tests/test_20_rp_handler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class TestRPHandler(object):
160160
@pytest.fixture(autouse=True)
161161
def rphandler_setup(self):
162162
self.rph = RPHandler(base_url=BASE_URL, client_configs=CLIENT_CONFIG,
163-
keyjar=CLI_KEY)
163+
keyjar=CLI_KEY, module_dirs=['oidc'])
164164

165165
def test_support_webfinger(self):
166166
assert self.rph.supports_webfinger()

0 commit comments

Comments
 (0)