Skip to content

Commit ec21c28

Browse files
committed
Support authnrequest_id logoutrequest_id on demos
1 parent ae90bac commit ec21c28

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

demo-django/demo/views.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ def index(request):
4141

4242
if 'sso' in req['get_data']:
4343
return HttpResponseRedirect(auth.login())
44+
# If AuthNRequest ID need to be stored in order to later validate it, do instead
45+
# sso_built_url = auth.login()
46+
# request.session['AuthNRequestID'] = auth.get_last_request_id()
47+
# return HttpResponseRedirect(sso_built_url)
4448
elif 'sso2' in req['get_data']:
4549
return_to = OneLogin_Saml2_Utils.get_self_url(req) + reverse('attrs')
4650
return HttpResponseRedirect(auth.login(return_to))
@@ -58,12 +62,22 @@ def index(request):
5862
name_id_spnq = request.session['samlNameIdSPNameQualifier']
5963

6064
return HttpResponseRedirect(auth.logout(name_id=name_id, session_index=session_index, nq=name_id_nq, name_id_format=name_id_format, spnq=name_id_spnq))
65+
# If LogoutRequest ID need to be stored in order to later validate it, do instead
66+
# slo_built_url = auth.logout(name_id=name_id, session_index=session_index)
67+
# request.session['LogoutRequestID'] = auth.get_last_request_id()
68+
#return HttpResponseRedirect(slo_built_url)
6169
elif 'acs' in req['get_data']:
62-
auth.process_response()
70+
request_id = None
71+
if 'AuthNRequestID' in request.session:
72+
request_id = request.session['AuthNRequestID']
73+
74+
auth.process_response(request_id=request_id)
6375
errors = auth.get_errors()
6476
not_auth_warn = not auth.is_authenticated()
6577

6678
if not errors:
79+
if 'AuthNRequestID' in request.session:
80+
del request.session['AuthNRequestID']
6781
request.session['samlUserdata'] = auth.get_attributes()
6882
request.session['samlNameId'] = auth.get_nameid()
6983
request.session['samlNameIdFormat'] = auth.get_nameid_format()
@@ -76,8 +90,11 @@ def index(request):
7690
if auth.get_settings().is_debug_active():
7791
error_reason = auth.get_last_error_reason()
7892
elif 'sls' in req['get_data']:
93+
request_id = None
94+
if 'LogoutRequestID' in request.session:
95+
request_id = request.session['LogoutRequestID']
7996
dscb = lambda: request.session.flush()
80-
url = auth.process_slo(delete_session_cb=dscb)
97+
url = auth.process_slo(request_id=request_id, delete_session_cb=dscb)
8198
errors = auth.get_errors()
8299
if len(errors) == 0:
83100
if url is not None:

demo-flask/index.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ def index():
4646

4747
if 'sso' in request.args:
4848
return redirect(auth.login())
49+
# If AuthNRequest ID need to be stored in order to later validate it, do instead
50+
# sso_built_url = auth.login()
51+
# request.session['AuthNRequestID'] = auth.get_last_request_id()
52+
# return redirect(sso_built_url)
4953
elif 'sso2' in request.args:
5054
return_to = '%sattrs/' % request.host_url
5155
return redirect(auth.login(return_to))
@@ -64,10 +68,16 @@ def index():
6468

6569
return redirect(auth.logout(name_id=name_id, session_index=session_index, nq=name_id_nq, name_id_format=name_id_format, spnq=name_id_spnq))
6670
elif 'acs' in request.args:
67-
auth.process_response()
71+
request_id = None
72+
if 'AuthNRequestID' in session:
73+
request_id = session['AuthNRequestID']
74+
75+
auth.process_response(request_id=request_id)
6876
errors = auth.get_errors()
6977
not_auth_warn = not auth.is_authenticated()
7078
if len(errors) == 0:
79+
if 'AuthNRequestID' in session:
80+
del session['AuthNRequestID']
7181
session['samlNameId'] = auth.get_nameid()
7282
session['samlNameIdFormat'] = auth.get_nameid_format()
7383
session['samlNameIdNameQualifier'] = auth.get_nameid_nq()
@@ -77,8 +87,11 @@ def index():
7787
if 'RelayState' in request.form and self_url != request.form['RelayState']:
7888
return redirect(auth.redirect_to(request.form['RelayState']))
7989
elif 'sls' in request.args:
90+
request_id = None
91+
if 'LogoutRequestID' in session:
92+
request_id = session['LogoutRequestID']
8093
dscb = lambda: session.clear()
81-
url = auth.process_slo(delete_session_cb=dscb)
94+
url = auth.process_slo(request_id=request_id, delete_session_cb=dscb)
8295
errors = auth.get_errors()
8396
if len(errors) == 0:
8497
if url is not None:

0 commit comments

Comments
 (0)