authentic/src/authentic2_auth_saml/backends.py

25 lines
850 B
Python

from mellon.backends import SAMLBackend
from authentic2.middleware import StoreRequestMiddleware
from . import app_settings
class SAMLBackend(SAMLBackend):
def authenticate(self, saml_attributes, request=None):
if not app_settings.enable:
return None
return super(SAMLBackend, self).authenticate(saml_attributes=saml_attributes, request=request)
def get_saml2_authn_context(self):
# Pass AuthnContextClassRef from the previous IdP
request = StoreRequestMiddleware.get_request()
if request:
authn_context_class_ref = request.session.get(
'mellon_session', {}).get('authn_context_class_ref')
if authn_context_class_ref:
return authn_context_class_ref
import lasso
return lasso.SAML2_AUTHN_CONTEXT_PREVIOUS_SESSION