sources/saml: add POST_AUTO binding which auto redirects to IdP

This commit is contained in:
Jens Langhammer
2020-07-08 14:18:08 +02:00
parent 1524880eec
commit 1e57926603
4 changed files with 46 additions and 3 deletions

View File

@ -42,12 +42,14 @@ class InitiateView(View):
"ISSUER": get_issuer(request, source),
}
authn_req = get_authnrequest_xml(parameters, signed=False)
# If the source is configured for Redirect bindings, we can just redirect there
if source.binding_type == SAMLBindingTypes.Redirect:
_request = deflate_and_base64_encode(authn_req.encode())
url_args = urlencode({"SAMLRequest": _request, "RelayState": relay_state})
return redirect(f"{source.sso_url}?{url_args}")
# As POST Binding we show a form
_request = nice64(authn_req.encode())
if source.binding_type == SAMLBindingTypes.POST:
_request = nice64(authn_req.encode())
return render(
request,
"saml/sp/login.html",
@ -58,6 +60,20 @@ class InitiateView(View):
"source": source,
},
)
# Or an auto-submit form
if source.binding_type == SAMLBindingTypes.POST_AUTO:
return render(
request,
"providers/saml/autosubmit_form.html",
{
"application": source,
"attrs": {
"SAMLRequest": _request,
"RelayState": relay_state,
},
"url": source.sso_url,
},
)
raise Http404