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

Commit 813b9d9

Browse files
committed
post_logout_redirect_uri in logout request. post_logout_redirect_uris in registration request.
1 parent 59f8170 commit 813b9d9

File tree

8 files changed

+19
-16
lines changed

8 files changed

+19
-16
lines changed

example/flask_rp/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ def get_op_identifier_by_cb_uri(url: str):
160160
for k, v in current_app.rph.issuer2rp.items():
161161
_cntx = v.get_service_context()
162162
for endpoint in ("redirect_uris",
163-
"post_logout_redirect_uri",
163+
"post_logout_redirect_uris",
164164
"frontchannel_logout_uri",
165165
"backchannel_logout_uri"):
166166
if uri in _cntx.get(endpoint, []):

src/oidcrp/configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def extend(self, entity_conf, conf, base_path, file_attributes, domain, port):
100100

101101

102102
URIS = [
103-
"redirect_uris", 'post_logout_redirect_uri', 'frontchannel_logout_uri',
103+
"redirect_uris", 'post_logout_redirect_uris', 'frontchannel_logout_uri',
104104
'backchannel_logout_uri', 'issuer', 'base_url']
105105

106106

src/oidcrp/oidc/end_session.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,16 @@ def get_id_token_hint(self, request_args=None, **kwargs):
5555
def add_post_logout_redirect_uri(self, request_args=None, **kwargs):
5656
if 'post_logout_redirect_uri' not in request_args:
5757
_context = self.client_get("service_context")
58-
_uri = _context.register_args.get('post_logout_redirect_uri')
58+
_uri = _context.register_args.get('post_logout_redirect_uris')
5959
if _uri:
60-
request_args['post_logout_redirect_uri'] = _uri
60+
if isinstance(_uri, str):
61+
request_args['post_logout_redirect_uri'] = _uri
62+
else: # assume list
63+
request_args['post_logout_redirect_uri'] = _uri[0]
6164
else:
62-
_uri = _context.callback.get("post_logout_redirect_uri")
65+
_uri = _context.callback.get("post_logout_redirect_uris")
6366
if _uri:
64-
request_args['post_logout_redirect_uri'] = _uri
67+
request_args['post_logout_redirect_uri'] = _uri[0]
6568

6669
return request_args, {}
6770

src/oidcrp/oidc/registration.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def create_callbacks(issuer: str,
8080
res["request_uris"] = f"{base_url}/req_uri/{_hex}"
8181

8282
if backchannel_logout_uri or frontchannel_logout_uri:
83-
res["post_logout_redirect_uri"] = f"{base_url}/session_logout/{_hex}"
83+
res["post_logout_redirect_uris"] = [f"{base_url}/session_logout/{_hex}"]
8484

8585
if backchannel_logout_uri:
8686
res["backchannel_logout_uri"] = f"{base_url}/bc_logout/{_hex}"
@@ -162,7 +162,7 @@ def add_callbacks(context, ignore: Optional[List[str]] = None):
162162
context.set('callback', callbacks)
163163

164164

165-
CALLBACK_URIS = ["post_logout_redirect_uri", "backchannel_logout_uri", "frontchannel_logout_uri",
165+
CALLBACK_URIS = ["post_logout_redirect_uris", "backchannel_logout_uri", "frontchannel_logout_uri",
166166
"request_uris", 'redirect_uris']
167167

168168

src/oidcrp/service_context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ class ServiceContext(OidcContext):
103103
"httpc_params": None,
104104
'issuer': None,
105105
"kid": None,
106-
"post_logout_redirect_uri": '',
106+
"post_logout_redirect_uris": None,
107107
'provider_info': None,
108108
'redirect_uris': None,
109109
"requests_dir": None,
@@ -137,7 +137,7 @@ def __init__(self, base_url="", keyjar=None, config=None, state=None, **kwargs):
137137
self.client_secret_expires_at = 0
138138
self.behaviour = {}
139139
self.provider_info = {}
140-
self.post_logout_redirect_uri = ''
140+
self.post_logout_redirect_uris = []
141141
self.redirect_uris = []
142142
self.register_args = {}
143143
self.registration_response = {}

tests/test_13_oidc_service.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -608,11 +608,11 @@ def test_construct(self):
608608

609609
def test_config_with_post_logout(self):
610610
self.service.client_get("service_context").register_args[
611-
'post_logout_redirect_uri'] = 'https://example.com/post_logout'
611+
'post_logout_redirect_uris'] = ['https://example.com/post_logout']
612612
_req = self.service.construct()
613613
assert isinstance(_req, RegistrationRequest)
614614
assert len(_req) == 5
615-
assert 'post_logout_redirect_uri' in _req
615+
assert 'post_logout_redirect_uris' in _req
616616

617617

618618
def test_config_with_required_request_uri():
@@ -666,7 +666,7 @@ def test_config_logout_uri():
666666
assert len(_req) == 7
667667
assert 'request_uris' in _req
668668
assert 'frontchannel_logout_uri' in _req
669-
assert 'post_logout_redirect_uri' in _req
669+
assert 'post_logout_redirect_uris' in _req
670670

671671

672672
class TestUserInfo(object):
@@ -874,7 +874,7 @@ def create_request(self):
874874
'redirect_uris': ['https://example.com/cli/authz_cb'],
875875
'issuer': self._iss, 'requests_dir': 'requests',
876876
'base_url': 'https://example.com/cli/',
877-
'post_logout_redirect_uri': 'https://example.com/post_logout'
877+
'post_logout_redirect_uris': ['https://example.com/post_logout']
878878
}
879879
services = {
880880
"checksession": {

tests/test_20_rp_handler_oidc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ def test_do_client_registration(self):
312312
# only 2 things should have happened
313313

314314
assert self.rph.hash2issuer['github'] == issuer
315-
assert client.client_get("service_context").callback.get("post_logout_redirect_uri") is None
315+
assert client.client_get("service_context").callback.get("post_logout_redirect_uris") is None
316316

317317
def test_do_client_setup(self):
318318
client = self.rph.client_setup('github')

tests/test_40_rp_handler_persistent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ def test_do_client_registration(self):
247247
# only 2 things should have happened
248248

249249
assert rph_1.hash2issuer['github'] == issuer
250-
assert not client.client_get("service_context").callback.get('post_logout_redirect_uri')
250+
assert not client.client_get("service_context").callback.get('post_logout_redirect_uris')
251251

252252
def test_do_client_setup(self):
253253
rph_1 = RPHandler(BASE_URL, client_configs=CLIENT_CONFIG,

0 commit comments

Comments
 (0)