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

Commit bccb108

Browse files
committed
Created a httpc_params attribute to keep some of the HTTP client parameters, like verify and cert, in one place.
1 parent c79f94b commit bccb108

6 files changed

Lines changed: 27 additions & 12 deletions

File tree

src/oidcendpoint/endpoint_context.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ def __init__(
111111
self.endpoint = {}
112112
self.issuer = ""
113113
self.httpc = httpc or requests
114-
self.verify_ssl = True
115114
self.jwks_uri = None
116115
self.sso_ttl = 14400 # 4h
117116
self.symkey = rndstr(24)
@@ -161,7 +160,6 @@ def __init__(
161160
}
162161

163162
for param in [
164-
"verify_ssl",
165163
"issuer",
166164
"sso_ttl",
167165
"symkey",
@@ -233,6 +231,17 @@ def __init__(
233231
# client registration access tokens
234232
self.registration_access_token = {}
235233

234+
# The HTTP clients request arguments
235+
_verify = conf.get('verify_ssl', True)
236+
self.httpc_params= {'verify': _verify}
237+
238+
_cli_cert = conf.get("client_cert")
239+
_cli_key = conf.get("client_key")
240+
if _cli_cert and _cli_key:
241+
self.httpc_params["cert"] = (_cli_cert, _cli_key)
242+
elif _cli_cert: # The file contains both the certificate and the key
243+
self.httpc_params["cert"] = _cli_cert
244+
236245
def set_session_db(self, sso_db=None, db=None):
237246
sso_db = sso_db or SSODb()
238247
self.do_session_db(sso_db, db)

src/oidcendpoint/oauth2/authorization.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,8 @@ def _do_request_uri(self, request, client_id, endpoint_context, **kwargs):
188188
if _p[0] not in _registered:
189189
raise ValueError("A request_uri outside the registered")
190190
# Fetch the request
191-
_resp = endpoint_context.httpc.get(_request_uri)
191+
_resp = endpoint_context.httpc.get(_request_uri,
192+
**endpoint_context.httpc_params)
192193
if _resp.status_code == 200:
193194
args = {"keyjar": endpoint_context.keyjar}
194195
request = AuthorizationRequest().from_jwt(_resp.text, **args)

src/oidcendpoint/oidc/authorization.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,13 @@ def proposed_user(request):
136136

137137

138138
def acr_claims(request):
139-
if request["claims"].get("id_token"):
140-
acrdef = request["claims"]["id_token"].get("acr")
141-
else:
142-
acrdef = None
139+
acrdef = None
140+
141+
_claims = request.get('claims')
142+
if _claims:
143+
_id_token_claim = _claims.get("id_token")
144+
if _id_token_claim:
145+
acrdef = _id_token_claim.get("acr")
143146

144147
if isinstance(acrdef, dict):
145148
if acrdef.get("value"):
@@ -251,7 +254,8 @@ def _do_request_uri(self, request, client_id, endpoint_context, **kwargs):
251254
if _p[0] not in _registered:
252255
raise ValueError("A request_uri outside the registered")
253256
# Fetch the request
254-
_resp = endpoint_context.httpc.get(_request_uri)
257+
_resp = endpoint_context.httpc.get(_request_uri,
258+
**endpoint_context.httpc_params)
255259
if _resp.status_code == 200:
256260
args = {"keyjar": endpoint_context.keyjar}
257261
request = AuthorizationRequest().from_jwt(_resp.text, **args)

src/oidcendpoint/oidc/registration.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,8 @@ def _verify_sector_identifier(self, request):
303303
"""
304304
si_url = request["sector_identifier_uri"]
305305
try:
306-
res = self.endpoint_context.httpc.get(si_url)
306+
res = self.endpoint_context.httpc.get(si_url,
307+
**self.endpoint_context.httpc_params)
307308
logger.debug("sector_identifier_uri => %s", sanitize(res.text))
308309
except Exception as err:
309310
logger.error(err)

src/oidcendpoint/oidc/session.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ def do_verified_logout(self, sid, client_id, alla=False, **kwargs):
391391
res = self.endpoint_context.httpc.post(
392392
_url,
393393
data="logout_token={}".format(sjwt),
394-
verify=self.endpoint_context.verify_ssl,
394+
**self.endpoint_context.httpc_params
395395
)
396396

397397
if res.status_code < 300:

tests/test_40_oauth2_pushed_authorization.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ def create_endpoint(self):
119119
"kwargs": {},
120120
},
121121
"authorization": {
122-
"path": "{}/pushed_authorization",
122+
"path": "{}/authorization",
123123
"class": Authorization,
124124
"kwargs": {
125125
"response_types_supported": [
@@ -132,7 +132,7 @@ def create_endpoint(self):
132132
},
133133
},
134134
"pushed_authorization": {
135-
"path": "{}/pushed_authorization",
135+
"path": "pushed_authorization",
136136
"class": PushedAuthorization,
137137
"kwargs": {
138138
"client_authn_method": [

0 commit comments

Comments
 (0)