init: CasSsoService CAS 5.3 overlay (cas.war via LFS)

This commit is contained in:
chenxing
2026-08-05 09:53:49 +08:00
commit 3bd14554ec
93 changed files with 19827 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
import urllib.request, json, base64, ssl
from cryptography.hazmat.primitives.asymmetric import padding as asym_padding
from cryptography.hazmat.primitives.serialization import load_pem_public_key
HOST_HDR = "sso.yunhaixingtong.com"
BASE = "http://192.168.10.157:80"
def req(method, path, data=None, headers=None):
h = {"Host": HOST_HDR}
if headers: h.update(headers)
if data is not None:
data = urllib.parse.urlencode(data).encode()
h["Content-Type"] = "application/x-www-form-urlencoded"
r = urllib.request.Request(BASE+path, data=data, headers=h, method=method)
try:
resp = urllib.request.urlopen(r, timeout=20)
body = resp.read().decode("utf-8","replace")
return resp.status, dict(resp.getheaders()), body
except urllib.error.HTTPError as e:
return e.code, dict(e.headers), e.read().decode("utf-8","replace")
# 1) 取公钥
st, hd, body = req("GET", "/api/public-key")
print("=== /api/public-key ===")
print("status", st)
print("body", body[:600])
pk = json.loads(body)["data"]["publicKey"]
print("publicKey len", len(pk))
print("publicKey head:", pk[:60])
# 重组为合法 PEM(端点把空白去掉了,补回换行)
b64 = pk.replace("-----BEGIN PUBLIC KEY-----","").replace("-----END PUBLIC KEY-----","").replace("-----BEGIN RSA PUBLIC KEY-----","").replace("-----END RSA PUBLIC KEY-----","").replace("\n","").replace(" ","")
pem = "-----BEGIN PUBLIC KEY-----\n" + "\n".join(b64[i:i+64] for i in range(0,len(b64),64)) + "\n-----END PUBLIC KEY-----"
pub = load_pem_public_key(pem.encode())
def enc(pt):
ct = pub.encrypt(pt.encode("utf-8"), asym_padding.PKCS1v15())
return base64.b64encode(ct).decode()
# 用户名/密码:用已知可登录的 yunhaisch(密码需正确才能成功;若不知道正确密码,可先看错误分支)
USERNAME = "yunhaisch"
PASSWORD = input("请输入 yunhaisch 的密码(仅本地测试用,不会外发): ").strip()
euser = enc(USERNAME)
epwd = enc(PASSWORD)
# 2) 登录(不带 service)
st, hd, body = req("POST", "/api/login", data={
"loginname": euser, "pwd": epwd
})
print("\n=== POST /api/login (无 service) ===")
print("status", st)
print("Set-Cookie:", hd.get("Set-Cookie"))
print("body", body[:800])
try:
j = json.loads(body)
print(">>> code=", j.get("code"), "msg=", j.get("msg"))
print(">>> data.url=", (j.get("data") or {}).get("url"))
except Exception as e:
print("parse err", e)