1 # -*- coding: utf-8 -*-
5 from django
.contrib
.auth
.models
import User
6 from django
.contrib
.auth
.backends
import RemoteUserBackend
, ModelBackend
7 from auf
.django
.saml
import settings
10 logger
= logging
.getLogger('SAML')
15 def clean_username(self
, username
):
16 logger
.info(u
"\nClean username")
17 logger
.info(u
"==============")
18 logger
.info(u
"username original : %s" % username
)
19 clean_username
= username
.replace('@auf.org', '')
20 logger
.info(u
"username clean : %s" % clean_username
)
23 class FakeSPBackend(ModelBackend
, _BackendMixin
):
25 On autentifie uniquement sur le username
28 def authenticate(self
, username
=None, password
=None):
30 return User
.objects
.get(username
=username
)
31 except User
.DoesNotExist
:
35 class RealSPBackend(RemoteUserBackend
, _BackendMixin
):
37 Backend reposant sur le id.auf.org
39 create_unknown_user
= getattr(settings
, 'SAML_AUTO_CREATION', True)
42 if settings
.SAML_AUTH
:
43 _SPBackend
= RealSPBackend
45 _SPBackend
= FakeSPBackend
48 class SPBackend(_SPBackend
):
53 def authenticate(self
, **kwargs
):
54 logger
.info(u
"\nauth challenge")
55 logger
.info(u
"==============")
56 for k
, v
in kwargs
.items():
59 logger
.info("* %s : %s" % (k
, v
))
61 user
= super(SPBackend
, self
).authenticate(**kwargs
)
62 logger
.info(u
"Django user authentifié : %s" % user
)