Revision 830747d2
b/snf-astakos-app/astakos/im/auth_providers.py | ||
---|---|---|
587 | 587 |
class ShibbolethAuthProvider(AuthProvider): |
588 | 588 |
module = 'shibboleth' |
589 | 589 |
login_view = 'astakos.im.views.target.shibboleth.login' |
590 |
username_key = 'identifier'
|
|
590 |
username_key = 'provider_info_eppn'
|
|
591 | 591 |
|
592 | 592 |
policies = { |
593 | 593 |
'switch': False |
b/snf-astakos-app/astakos/im/tests/auth.py | ||
---|---|---|
131 | 131 |
# provider info stored |
132 | 132 |
provider = AstakosUserAuthProvider.objects.get(module="shibboleth") |
133 | 133 |
self.assertEqual(provider.affiliation, 'Test Affiliation') |
134 |
self.assertEqual(provider.info, {u'email': u'kpap@synnefo.org', |
|
135 |
u'eppn': u'kpapeppn', |
|
136 |
u'name': u'Kostas Papadimitriou'}) |
|
134 |
self.assertEqual(provider.info['email'], u'kpap@synnefo.org') |
|
135 |
self.assertEqual(provider.info['eppn'], u'kpapeppn') |
|
136 |
self.assertEqual(provider.info['name'], u'Kostas Papadimitriou') |
|
137 |
self.assertTrue('headers' in provider.info) |
|
137 | 138 |
|
138 | 139 |
# login (not activated yet) |
139 | 140 |
client.set_tokens(mail="kpap@synnefo.org", eppn="kpapeppn", |
140 |
cn="Kostas Papadimitriou", )
|
|
141 |
cn="Kostas Papadimitriou") |
|
141 | 142 |
r = client.get(ui_url("login/shibboleth?"), follow=True) |
142 | 143 |
self.assertContains(r, 'is pending moderation') |
143 | 144 |
|
b/snf-astakos-app/astakos/im/views/target/__init__.py | ||
---|---|---|
157 | 157 |
if not affiliation: |
158 | 158 |
affiliation = provider_module.title() |
159 | 159 |
|
160 |
next_redirect = request.GET.get('next', request.session.get('next_url', None)) |
|
160 |
next_redirect = request.GET.get('next', request.session.get('next_url', |
|
161 |
None)) |
|
161 | 162 |
if 'next_url' in request.session: |
162 | 163 |
del request.session['next_url'] |
163 | 164 |
|
... | ... | |
168 | 169 |
'affiliation': affiliation, |
169 | 170 |
'info': provider_info |
170 | 171 |
} |
172 |
|
|
171 | 173 |
provider = auth.get_provider(provider_module, request.user, identifier, |
172 | 174 |
**provider_data) |
173 | 175 |
|
b/snf-astakos-app/astakos/im/views/target/shibboleth.py | ||
---|---|---|
61 | 61 |
SHIB_EP_AFFILIATION = "HTTP_SHIB_EP_AFFILIATION" |
62 | 62 |
SHIB_SESSION_ID = "HTTP_SHIB_SESSION_ID" |
63 | 63 |
SHIB_MAIL = "HTTP_SHIB_MAIL" |
64 |
SHIB_REMOTE_USER = "HTTP_REMOTE_USER" |
|
64 | 65 |
|
65 | 66 |
|
66 | 67 |
@requires_auth_provider('shibboleth') |
... | ... | |
80 | 81 |
shibboleth_headers = {} |
81 | 82 |
for token in dir(Tokens): |
82 | 83 |
if token == token.upper(): |
83 |
|
|
84 | 84 |
shibboleth_headers[token] = request.META.get(getattr(Tokens, |
85 | 85 |
token), |
86 | 86 |
'NOT_SET') |
... | ... | |
91 | 91 |
|
92 | 92 |
try: |
93 | 93 |
eppn = tokens.get(Tokens.SHIB_EPPN) |
94 |
|
|
94 | 95 |
if global_settings.DEBUG and not eppn: |
95 | 96 |
eppn = getattr(global_settings, 'SHIBBOLETH_TEST_EPPN', None) |
96 | 97 |
realname = getattr(global_settings, 'SHIBBOLETH_TEST_REALNAME', |
... | ... | |
120 | 121 |
|
121 | 122 |
affiliation = tokens.get(Tokens.SHIB_EP_AFFILIATION, 'Shibboleth') |
122 | 123 |
email = tokens.get(Tokens.SHIB_MAIL, '') |
123 |
provider_info = {'eppn': eppn, 'email': email, 'name': realname} |
|
124 |
eppn_info = tokens.get(Tokens.SHIB_EPPN) |
|
125 |
provider_info = {'eppn': eppn_info, 'email': email, 'name': realname, |
|
126 |
'headers': shibboleth_headers} |
|
124 | 127 |
userid = eppn |
125 | 128 |
|
126 | 129 |
|
Also available in: Unified diff