From b75b710317102982780c46746a501eeb5dfdbc9b Mon Sep 17 00:00:00 2001
From: Wum1ng <1210078968@qq.com>
Date: Tue, 7 May 2024 14:33:20 +0800
Subject: [PATCH 1/4] Access to sso system
---
dojo_plugin/__init__.py | 2 +
dojo_plugin/api/__init__.py | 1 +
dojo_plugin/api/v1/sso_login.py | 121 ++++++++++++++++++++
dojo_plugin/pages/sso_login.py | 35 ++++++
dojo_theme/templates/components/navbar.html | 1 +
5 files changed, 160 insertions(+)
create mode 100644 dojo_plugin/api/v1/sso_login.py
create mode 100644 dojo_plugin/pages/sso_login.py
diff --git a/dojo_plugin/__init__.py b/dojo_plugin/__init__.py
index ae1186a78..19e6713ce 100644
--- a/dojo_plugin/__init__.py
+++ b/dojo_plugin/__init__.py
@@ -24,6 +24,7 @@
from .pages.workspace import workspace
from .pages.desktop import desktop
from .pages.users import users
+from .pages.sso_login import sso
from .pages.settings import settings_override
from .pages.course import course
from .pages.writeups import writeups
@@ -126,6 +127,7 @@ def load(app):
app.register_blueprint(dojo)
app.register_blueprint(workspace)
app.register_blueprint(desktop)
+ app.register_blueprint(sso)
app.register_blueprint(users)
app.register_blueprint(course)
app.register_blueprint(writeups)
diff --git a/dojo_plugin/api/__init__.py b/dojo_plugin/api/__init__.py
index 0b7a98f41..e12a4a1d9 100644
--- a/dojo_plugin/api/__init__.py
+++ b/dojo_plugin/api/__init__.py
@@ -20,3 +20,4 @@
api_v1.add_namespace(dojo_namespace, "/dojo")
api_v1.add_namespace(belts_namespace, "/belts")
api_v1.add_namespace(score_namespace, "/score")
+api_v1.add_namespace(score_namespace, "/sso_login")
diff --git a/dojo_plugin/api/v1/sso_login.py b/dojo_plugin/api/v1/sso_login.py
new file mode 100644
index 000000000..703eb4689
--- /dev/null
+++ b/dojo_plugin/api/v1/sso_login.py
@@ -0,0 +1,121 @@
+from urllib.parse import urlencode, urljoin
+from urllib.request import urlopen, Request
+from urllib.error import URLError
+
+from CTFd.models import Users, db
+from CTFd.utils import user as current_user
+from CTFd.utils.helpers import error_for, get_errors, markup
+from CTFd.utils.logging import log
+
+
+from xml.etree import ElementTree
+
+class Settings:
+ def __init__(self):
+ self.DEBUG = True
+ self.CAS_SERVER_URL = 'https://pass.hust.edu.cn/cas/login'
+ self.CAS_ADMIN_PREFIX = None
+ self.CAS_EXTRA_LOGIN_PARAMS = None
+ self.CAS_IGNORE_REFERER = False
+ self.CAS_LOGOUT_COMPLETELY = True
+ self.CAS_REDIRECT_URL = 'http://pwn.cse.hust.edu.cn/cas-login/'
+ self.CAS_RETRY_LOGIN = False
+ self.CAS_VERSION = '2'
+
+ def __getattr__(self, item):
+ raise AttributeError(f'Setting {item} not found')
+
+settings = Settings()
+
+
+
+def _verify_cas2(ticket, service):
+ """Verifies CAS 2.0+ XML-based authentication ticket."""
+ headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
+ params = {'ticket': ticket, 'service': service}
+ url = urljoin(settings.CAS_SERVER_URL, 'proxyValidate') + '?' + urlencode(params)
+ request = Request(url, headers=headers)
+
+ try:
+ with urlopen(request,timeout=2) as page:
+ response = page.read()
+ tree = ElementTree.fromstring(response)
+ if tree[0].tag.endswith('authenticationSuccess'):
+ return tree[0][0].text
+ else:
+ return None
+ except URLError as e:
+ print(f"URL Error: {e.reason}")
+ return None
+
+
+def register_sso(studentID):
+ errors = get_errors()
+ name = studentID.strip()
+ email_address = studentID.strip().lower()+"@hust.edu.cn"
+ password = ""
+ bracket_id = None
+ oauth_id = int(studentID[1:])
+ # website = request.form.get("website")
+ # affiliation = request.form.get("affiliation")
+ # country = request.form.get("country")
+ # registration_code = str(request.form.get("registration_code", ""))
+ # bracket_id = request.form.get("bracket_id", None)
+
+ names = (
+ Users.query.add_columns(Users.name, Users.id).filter_by(name=name).first()
+ )
+ emails = (
+ Users.query.add_columns(Users.email, Users.id)
+ .filter_by(email=email_address)
+ .first()
+ )
+ if names:
+ errors.append("That user name is already taken")
+ if emails:
+ errors.append("That email has already been used")
+
+ user = Users(
+ name=name,
+ email=email_address,
+ password=password,
+ oauth_id=oauth_id,
+ verified=True,
+ )
+ db.session.add(user)
+ db.session.commit()
+
+ log(
+ "registrations",
+ format="[{date}] {ip} - {name} registered with {email}",
+ name=user.name,
+ email=user.email,
+ )
+ db.session.close()
+ return user
+
+
+
+class CASBackend(object):
+ """CAS authentication backend"""
+
+ def authenticate(self,ticket):
+ service = settings.CAS_REDIRECT_URL
+ username = _verify_cas2(ticket, service)
+ user = Users.query.filter_by(oauth_id=username[1:]).first()
+
+ if user :
+ return user
+ else:
+ # user will have an "unusable" password
+ user = register_sso(username)
+ return user
+
+ def get_user(self, user_id):
+ """Retrieve the user's entry in the User model if it exists"""
+
+ def get_login_url():
+ """Generates CAS login URL"""
+ params = {'service': settings.CAS_REDIRECT_URL}
+ #return urlopen(settings.CAS_SERVER_URL)
+ return urljoin(settings.CAS_SERVER_URL, 'login') + '?' + urlencode(params)
diff --git a/dojo_plugin/pages/sso_login.py b/dojo_plugin/pages/sso_login.py
new file mode 100644
index 000000000..6a918e34f
--- /dev/null
+++ b/dojo_plugin/pages/sso_login.py
@@ -0,0 +1,35 @@
+import datetime
+import hashlib
+import itertools
+import re
+
+from flask import Blueprint, Response, render_template, abort, url_for,request,redirect
+from sqlalchemy.sql import and_, or_
+from CTFd.utils.user import get_current_user
+from CTFd.utils.decorators import authed_only
+from CTFd.utils.security.auth import login_user, logout_user
+
+from ..api.v1.sso_login import CASBackend
+from ..models import Dojos, DojoModules, DojoChallenges
+from ..config import DATA_DIR
+from ..utils.scores import dojo_scores, module_scores
+from ..utils.awards import get_belts, get_viewable_emojis
+
+sso = Blueprint("pwncollege_sso", __name__)
+
+
+@sso.route('/cas-login/')
+def cas_login():
+ ticket = request.args.get('ticket')
+ casbackend = CASBackend()
+ if ticket:
+ user = casbackend.authenticate(ticket)
+ if user:
+ # 用户认证成功,创建本地会话等
+ login_user(user)
+ return redirect(url_for('views.settings'))
+ else:
+ return redirect(url_for("auth.login"))
+ else:
+ return redirect(CASBackend.get_login_url())
+
diff --git a/dojo_theme/templates/components/navbar.html b/dojo_theme/templates/components/navbar.html
index a3b967b6e..c5fe80432 100644
--- a/dojo_theme/templates/components/navbar.html
+++ b/dojo_theme/templates/components/navbar.html
@@ -40,6 +40,7 @@
{% endif %}
{{ navitem("登录", url_for("auth.login", next=request.full_path), "fa-sign-in-alt") }}
+ {{ navitem("统一身份认证", url_for("pwncollege_sso.cas_login", next=request.full_path), "fa-sign-in-alt") }}
{% endif %}
From b0ce264f2bb8a296f4324e0cc49c0c8ca69709ac Mon Sep 17 00:00:00 2001
From: Wum1ng <1210078968@qq.com>
Date: Wed, 8 May 2024 17:57:34 +0800
Subject: [PATCH 2/4] hide registration and login function
---
dojo_plugin/pages/sso_login.py | 2 +-
dojo_theme/templates/components/navbar.html | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/dojo_plugin/pages/sso_login.py b/dojo_plugin/pages/sso_login.py
index 6a918e34f..287cd3691 100644
--- a/dojo_plugin/pages/sso_login.py
+++ b/dojo_plugin/pages/sso_login.py
@@ -27,7 +27,7 @@ def cas_login():
if user:
# 用户认证成功,创建本地会话等
login_user(user)
- return redirect(url_for('views.settings'))
+ return redirect(url_for('pwncollege_dojos.listing'))
else:
return redirect(url_for("auth.login"))
else:
diff --git a/dojo_theme/templates/components/navbar.html b/dojo_theme/templates/components/navbar.html
index c5fe80432..f68ab0819 100644
--- a/dojo_theme/templates/components/navbar.html
+++ b/dojo_theme/templates/components/navbar.html
@@ -36,10 +36,8 @@
{% else %}
{% if registration_visible() %}
- {{ navitem("注册", url_for("auth.register"), "fa-user-plus") }}
{% endif %}
- {{ navitem("登录", url_for("auth.login", next=request.full_path), "fa-sign-in-alt") }}
{{ navitem("统一身份认证", url_for("pwncollege_sso.cas_login", next=request.full_path), "fa-sign-in-alt") }}
{% endif %}
From efd5888506b5adad26617f892f66a3bf8ed4ba7e Mon Sep 17 00:00:00 2001
From: Wum1ng <1210078968@qq.com>
Date: Thu, 9 May 2024 21:23:24 +0800
Subject: [PATCH 3/4] =?UTF-8?q?fix=20typo=20in=20=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E6=8C=87=E5=8D=97.md=20update=20login=20&=20register=20module?=
=?UTF-8?q?=20in=20instruction?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/static/ABgvbYoMvoOmwWxZKFic2AOynwf.png | Bin 0 -> 602419 bytes
docs/static/QtFmb1ZceoOYhmxdRmFczeNenme.png | Bin 0 -> 466454 bytes
docs/static/WF8tbZs8uoHHHSxYmgxcS8Esnju.png | Bin 0 -> 3949378 bytes
...77\347\224\250\346\214\207\345\215\227.md" | 14 ++++++++------
4 files changed, 8 insertions(+), 6 deletions(-)
create mode 100644 docs/static/ABgvbYoMvoOmwWxZKFic2AOynwf.png
create mode 100644 docs/static/QtFmb1ZceoOYhmxdRmFczeNenme.png
create mode 100644 docs/static/WF8tbZs8uoHHHSxYmgxcS8Esnju.png
diff --git a/docs/static/ABgvbYoMvoOmwWxZKFic2AOynwf.png b/docs/static/ABgvbYoMvoOmwWxZKFic2AOynwf.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d76d0822e76adef3d53f0c2a0d4608f3ee32fec
GIT binary patch
literal 602419
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