Fixed penguins of death due to infinite loop of SSO login redirects

This commit is contained in:
David Taylor
2016-11-02 23:50:49 +00:00
parent 01f754ad53
commit 0ad3aa7d3f
3 changed files with 9 additions and 3 deletions

View File

@@ -73,8 +73,11 @@ class DiscourseAuth(BaseAuth):
def auth_complete(self, *args, **kwargs):
"""Completes login process, must return user instance."""
if not self.sso.validate(self.data['sso'], self.data['sig']):
raise Exception("Someone wants to hack us!")
try:
if not self.sso.validate(self.data['sso'], self.data['sig']):
raise Exception("Someone wants to hack us!")
except KeyError:
raise Exception("SSO Error, please try again")
nonce = self.sso.get_nonce(self.data['sso'])
nonce_obj = self.get_nonce(nonce)

View File

@@ -15,7 +15,7 @@ class DiscourseSSO:
payload.encode(),
sha256
).hexdigest()
print(type(computed_sig), type(sig))
return hmac.compare_digest(unicode(computed_sig), sig)
def get_nonce(self, payload):

View File

@@ -10,6 +10,8 @@
<div class="panel-group">
{% url "social:complete" "discourse" as completeUrl %}
{% if not request.GET.next == completeUrl %}
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
@@ -28,6 +30,7 @@
</div>
</div>
</div>
{% endif %}
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">