From b503f44a2dd1f36a79be07f13887bb46d0618bac Mon Sep 17 00:00:00 2001 From: becomer Date: Mon, 19 Oct 2026 22:36:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20hfnu=20=E5=88=86=E5=8F=91?= =?UTF-8?q?=E5=A4=84=E7=9A=84=E6=B3=A8=E9=87=8A=EF=BC=9AIAP=20=E8=B7=AF?= =?UTF-8?q?=E5=BE=84=E5=AE=9E=E6=B5=8B=E4=B8=8D=E5=8F=AF=E8=A1=8C=EF=BC=8C?= =?UTF-8?q?=E5=BA=94=E8=B5=B0=E7=9F=AD=E4=BF=A1=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原注释声称「wecloud 网关支持标准 IAP 账密登录,单独走 IAP」, 与实际不符。实测: GET hfnu.campusphere.net/iap/login → HTTP 302 → ehall.hfnu.edu.cn/amp-auth-adapter/login?service=... 即 /iap/login 不给登录表单,直接跳 ehall 单点,导致 iapLogin 第一步 getIapLT(解析 lt 表单)必然失败——与 CAS 是否授权无关。 结合 10-19 抓包分析:ehall 侧登录只产出 ehall 域 cookie (JSESSIONID/AUTHTGC/MOD_AMP_AUTH/asessionid),无法换到 campusphere 的 MOD_AUTH_CAS;校方 CAS 也拒绝为 campusphere 域签发票据。 本次仅更正注释说明真实情况与建议路径(短信登录),行为未变。 --- backed/internal/service/cpdaily/service.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/backed/internal/service/cpdaily/service.go b/backed/internal/service/cpdaily/service.go index 3426f0b..f584a1e 100644 --- a/backed/internal/service/cpdaily/service.go +++ b/backed/internal/service/cpdaily/service.go @@ -203,8 +203,14 @@ func CpdailyLogin(ctx context.Context, school *SchoolDetailInfo, username, passw cookies, err := nutCasIapLogin(ctx, school, username, password) return cookies, nil, err } - // 合肥师范学院:学校统一身份认证 SSO 会拒绝单点登录跳转("系统拒绝单点登录跳转"), - // 但其 wecloud 网关(hfnu.campusphere.net)支持标准 IAP 账密登录,单独走 IAP + // 合肥师范学院:历史尝试走 IAP(网关 iap/doLogin 账密),但实测该校 + // hfnu.campusphere.net/iap/login 直接 302 到 + // ehall.hfnu.edu.cn/amp-auth-adapter/login(ehall 单点), + // 拿不到 IAP 登录表单,getIapLT 必然失败。 + // 而 ehall 侧登录只产出 ehall 域 cookie(JSESSIONID/AUTHTGC/MOD_AMP_AUTH/ + // asessionid),换不到 campusphere 的 MOD_AUTH_CAS(见 10-19 抓包分析)。 + // 校方 CAS 亦拒绝为 campusphere 域签发 service 票据。 + // 结论:hfnu 目前应走手机号+短信登录(MobileLoginByCode → ExchangeCasCookie)。 if school.ID == HfnuSchoolId { cookies, err := iapLogin(ctx, school, username, password) return cookies, nil, err