diff --git a/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java b/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java index bf2d907e5dfa3fa188717f343a3cfc737062a8da..5c69a19a3a3450225db4329e051768535a046203 100644 --- a/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java +++ b/app/src/main/java/top/yvyan/guettable/activity/LoginActivity.java @@ -117,11 +117,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { String account = etAccount.getText().toString(); String pwd2 = etPwd2.getText().toString(); new Thread(() -> { - String VPNToken = null; - if (Net.testNet() != 200) { - VPNToken = Net.getVPNToken(this); - } - testCAS(account, pwd2, VPNToken); + testCAS(account, pwd2); }).start(); } @@ -138,12 +134,12 @@ public class LoginActivity extends Activity implements View.OnClickListener { /** * 验证智慧校园密码 OTP Version */ - private void testCASWithOTP(String OTP, String CASCookie, String VPNToken, TokenData tokenData) { + private void testCASWithOTP(String OTP, String CASCookie, TokenData tokenData) { String account = etAccount.getText().toString(); String pwd2 = etPwd2.getText().toString(); new Thread(() -> { runOnUiThread(() -> button.setText("正在认证-手机验证码")); - String MulitFactorAuth = StaticService.VerifyPhoneOTP(this, CASCookie, OTP, VPNToken); + String MulitFactorAuth = StaticService.VerifyPhoneOTP(this, OTP, CASCookie); if (MulitFactorAuth.contains("ERROR")) { if (MulitFactorAuth.equals("ERROR1")) { showErrorToast(-4); @@ -153,7 +149,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { showErrorToast(-8); } } else { - tokenData.setCASCookie(CASCookie + "; " + MulitFactorAuth); + tokenData.setMFACookie(MulitFactorAuth); tokenData.setBkjwCookie(null); accountData.setUser(account, null, pwd2, cbRememberPwd.isChecked()); getInfo(); @@ -167,21 +163,21 @@ public class LoginActivity extends Activity implements View.OnClickListener { * @param account 学号 * @param password 智慧校园/VPN密码 */ - private void testCAS(String account, String password, String VPNToken) { + private void testCAS(String account, String password) { new Thread(() -> { runOnUiThread(() -> button.setText("正在认证")); - String CasCookie = StaticService.SSOLogin(this, account, password, VPNToken); + String CasCookie = StaticService.SSOLogin(this, account, password, null); if (CasCookie.contains("TGT-")) { TokenData tokenData = TokenData.newInstance(this); if (CasCookie.contains("ERROR5")) { tokenData.setCASCookie(CasCookie.substring(CasCookie.indexOf(";") + 1)); tokenData.setBkjwCookie(null); - fuck2FA(account, password, CasCookie.substring(CasCookie.indexOf(";") + 1), VPNToken, tokenData); + fuck2FA(account, password, CasCookie.substring(CasCookie.indexOf(";") + 1), tokenData); if (false) { - String phoneNumber = StaticService.SendPhoneOTP(this, CasCookie.substring(CasCookie.indexOf(";") + 1), account, VPNToken); + String phoneNumber = StaticService.SendPhoneOTP(this, account, CasCookie.substring(CasCookie.indexOf(";") + 1)); if (!phoneNumber.contains("ERROR")) { runOnUiThread(() -> { - showPhoneOtpDialog(phoneNumber, CasCookie.substring(CasCookie.indexOf(";") + 1), VPNToken, tokenData); + showPhoneOtpDialog(phoneNumber, CasCookie.substring(CasCookie.indexOf(";") + 1), tokenData); }); } else { if (phoneNumber.equals("ERROR1")) { @@ -217,10 +213,10 @@ public class LoginActivity extends Activity implements View.OnClickListener { } - private void fuck2FA(String account, String password, String CASCookie, String VPNToken, TokenData tokenData) { + private void fuck2FA(String account, String password, String CASCookie, TokenData tokenData) { try { runOnUiThread(() -> button.setText("正在尝试绕过二步验证")); - String MulitFactorAuth = StaticService.fuck2FA(this, password, CASCookie, VPNToken); + String MulitFactorAuth = StaticService.fuck2FA(this, password, CASCookie); if (MulitFactorAuth.contains("ERROR")) { if (MulitFactorAuth.equals("ERROR1")) { showErrorToast(-4); @@ -230,7 +226,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { showErrorToast(-8); } } else { - tokenData.setCASCookie(CASCookie + "; " + MulitFactorAuth); + tokenData.setMFACookie(MulitFactorAuth); tokenData.setBkjwCookie(null); accountData.setUser(account, null, password, cbRememberPwd.isChecked()); getInfo(); @@ -243,7 +239,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { /** * 显示手机验证码2FA */ - private void showPhoneOtpDialog(String phoneNumber, String CasCookie, String VPNToken, TokenData tokenData) { + private void showPhoneOtpDialog(String phoneNumber, String CasCookie, TokenData tokenData) { try { AlertDialog dialog; AlertDialog.Builder builder = new AlertDialog.Builder(this); @@ -264,7 +260,7 @@ public class LoginActivity extends Activity implements View.OnClickListener { .findViewById(R.id.et_phoneotp); String OTP = phoneOTP.getText().toString(); dialog.dismiss(); - testCASWithOTP(OTP, CasCookie, VPNToken, tokenData); + testCASWithOTP(OTP, CasCookie, tokenData); }); } catch (Exception ignore) { } diff --git a/app/src/main/java/top/yvyan/guettable/data/TokenData.java b/app/src/main/java/top/yvyan/guettable/data/TokenData.java index 9d38596e283275da3c31b58ec43bad961c571091..548b73718c2206fc898b1437c6a8ffde5d62b2b4 100644 --- a/app/src/main/java/top/yvyan/guettable/data/TokenData.java +++ b/app/src/main/java/top/yvyan/guettable/data/TokenData.java @@ -21,7 +21,7 @@ public class TokenData { private static final String VPN_TOKEN = "VPNToken"; private static final String BKJW_COOKIE = "bkjwCookie"; private static final String IS_DEVELOP = "isDevelop"; - + private static final String MULTIFACTOR_USERS = "MFACookie"; private final AccountData accountData; public static boolean isVPN = true; @@ -35,6 +35,8 @@ public class TokenData { private String VPNToken; //VPN认证Token private String bkjwCookie; //教务系统认证Cookie + private String MFACookie; + public String getCookie() { if (isVPN) { return VPNToken; @@ -70,6 +72,7 @@ public class TokenData { bkjwCookie = sharedPreferences.getString(BKJW_COOKIE, null); isDevelop = sharedPreferences.getBoolean(IS_DEVELOP, false); CASCookie = sharedPreferences.getString(CAS_Cookie, ""); + MFACookie = sharedPreferences.getString(MULTIFACTOR_USERS, null); } public static TokenData newInstance(Context context) { @@ -122,13 +125,13 @@ public class TokenData { int n = loginVpnByCAS(VPNTokenStr); //登录教务 if (n == 0) { - String ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), VPNTokenStr); + String ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), MFACookie); if (ST_BKJW.equals("ERROR0")) { return -2; } else if (ST_BKJW.equals("ERROR1")) { //TGT失效 - n = refreshTGT(VPNTokenStr); + n = refreshTGT(); if (n == 0) { - ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), VPNTokenStr); + ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), MFACookie); if (!ST_BKJW.contains("ST-")) { return -2; } @@ -144,13 +147,13 @@ public class TokenData { return n; } else { // 内网 StringBuilder cookie_builder = new StringBuilder(); - String ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), null); + String ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), MFACookie); if (!ST_BKJW.contains("ST-")) { // TGT失效 - int n = refreshTGT(null); + int n = refreshTGT(); if (n != 0) { return n; } - ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), null); + ST_BKJW = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_bkjw), MFACookie); if (!ST_BKJW.contains("ST-")) { // 网络错误,切换为外网模式 return -2; } @@ -173,14 +176,14 @@ public class TokenData { */ private int loginVpnByCAS(String VPNTokenStr) { int n; - String ST_VPN = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_vpn), VPNTokenStr); + String ST_VPN = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_vpn), MFACookie); if (ST_VPN.equals("ERROR0")) { return -2; } else if (ST_VPN.equals("ERROR1")) { //TGT失效 - n = refreshTGT(VPNTokenStr); //刷新TGT + n = refreshTGT(); //刷新TGT if (n == 0) { //重新获取登录vpn的st令牌 - ST_VPN = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_vpn), VPNTokenStr); + ST_VPN = StaticService.SSOGetST(context, CASCookie, context.getResources().getString(R.string.service_vpn), MFACookie); if (!ST_VPN.contains("ST-")) { return -2; } @@ -202,18 +205,17 @@ public class TokenData { /** * 刷新TGT令牌 * - * @param VPNToken VPNToken * @return 操作结果 */ - public int refreshTGT(String VPNToken) { - String CASCookieStr = StaticService.SSOLogin(context, accountData.getUsername(), accountData.getVPNPwd(), VPNToken); + public int refreshTGT() { + String CASCookieStr = StaticService.SSOLogin(context, accountData.getUsername(), accountData.getVPNPwd(), MFACookie); if (CASCookieStr.equals("ERROR2") || CASCookieStr.equals("ERROR0")) { return -2; } if (CASCookieStr.contains("TGT-")) { - if(CASCookieStr.contains("ERROR5")) { - setCASCookie(CASCookieStr.substring(CASCookieStr.indexOf(";")+1)); - return fuck2FA(accountData.getUsername(),accountData.getVPNPwd(),CASCookieStr.substring(CASCookieStr.indexOf(";")+1),VPNToken); + if (CASCookieStr.contains("ERROR5")) { + setCASCookie(CASCookieStr.substring(CASCookieStr.indexOf(";") + 1)); + return fuck2FA(accountData.getVPNPwd(), CASCookieStr.substring(CASCookieStr.indexOf(";") + 1)); } else { setCASCookie(CASCookieStr); } @@ -223,13 +225,13 @@ public class TokenData { } } - private int fuck2FA(String account,String password,String CASCookie,String VPNToken) { - try{ - String MulitFactorAuth = StaticService.fuck2FA(context,password,CASCookie,VPNToken); - if(MulitFactorAuth.contains("ERROR")) { + private int fuck2FA(String password, String CASCookie) { + try { + String MulitFactorAuth = StaticService.fuck2FA(context, password, CASCookie); + if (MulitFactorAuth.contains("ERROR")) { return -1; } else { - setCASCookie(CASCookie + "; " + MulitFactorAuth); + setMFACookie(MulitFactorAuth); } return 0; } catch (Exception ignore) { @@ -243,6 +245,12 @@ public class TokenData { editor.apply(); } + public void setMFACookie(String MFACookie) { + this.MFACookie = MFACookie; + editor.putString(CAS_Cookie, MFACookie); + editor.apply(); + } + public void setVPNToken(String VPNToken) { this.VPNToken = VPNToken; editor.putString(VPN_TOKEN, VPNToken); diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java index 86ae9c0053f5f43e130a70cd3cc5e11a8ee349a1..0dee692324b3a1f14ad172636ad0421dfa130cf9 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/Net.java @@ -82,19 +82,18 @@ public class Net { * @param context context * @param account 学号 * @param password 密码 - * @param VPNToken VPNToken * @return CAS服务Cookie *请求 */ - public static HttpConnectionAndCode getCASToken(Context context, String account, String password, String VPNToken) { + public static HttpConnectionAndCode getCASToken(Context context, String account, String password, String MFACookie) { StringBuilder cookie_builder = new StringBuilder(); try { Resources resources = context.getResources(); HttpConnectionAndCode loginParams = Get.get( - VPNToken != null ? resources.getString(R.string.url_Authserver_VPN) : resources.getString(R.string.url_Authserver), + resources.getString(R.string.url_Authserver), null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), - VPNToken, + (MFACookie != null ? ("; " + MFACookie) : null), null, resources.getString(R.string.cookie_delimiter), null, @@ -113,19 +112,19 @@ public class Net { String execution = listExp.get(0); String body = "username=" + account + "&password=" + URLEncoder.encode(AESUtil.CASEncryption(password, AESKey), "UTF-8") + "&captcha=&_eventId=submit&cllt=userNameLogin&dllt=generalLogin<=&execution=" + URLEncoder.encode(execution, "UTF-8"); HttpConnectionAndCode LoginRequest = Post.post( - VPNToken != null ? resources.getString(R.string.url_Authserver_VPN) : resources.getString(R.string.url_Authserver), + resources.getString(R.string.url_Authserver), null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), body, - VPNToken == null ? cookie_builder.toString() : VPNToken, + cookie_builder.toString() + (MFACookie != null ? ("; " + MFACookie) : ""), "}", resources.getString(R.string.cookie_delimiter), null, null, false, resources.getString(R.string.SSO_context_type)); - if (VPNToken == null && LoginRequest.code == -7) { + if (LoginRequest.code == -7) { List cookies = LoginRequest.c.getHeaderFields().get("Set-Cookie"); if (cookies != null) { cookie_builder.append("; "); @@ -138,24 +137,6 @@ public class Net { LoginRequest.code = 0; return LoginRequest; } - if (VPNToken != null) { - //获取 Cookie 判断是否登录成功 - HttpConnectionAndCode VPNGetCookieRequest = Get.get( - resources.getString(R.string.vpn_get_cookie) + "&vpn_timestamp=" + new Date().getTime(), - null, - resources.getString(R.string.user_agent), - resources.getString(R.string.url_Authserver_VPN), - VPNToken, - null, - resources.getString(R.string.cookie_delimiter), - null, - null, - null, - null, - 10000, - null); - return new HttpConnectionAndCode(LoginRequest.c, VPNGetCookieRequest.code, VPNGetCookieRequest.comment); - } return LoginRequest; } catch (Exception ignored) { @@ -172,15 +153,15 @@ public class Net { * @param VPNToken VPNToken * @return Response */ - public static HttpConnectionAndCode sendPhoneOTP(Context context, String CASCookie, String account, String VPNToken) { + public static HttpConnectionAndCode sendPhoneOTP(Context context, String account, String CASCookie) { Resources resources = context.getResources(); return Post.post( - (VPNToken != null ? resources.getString(R.string.url_SendPhoneOTP_VPN) : resources.getString(R.string.url_SendPhoneOTP)), + resources.getString(R.string.url_SendPhoneOTP), null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), "userName=" + account + "&authCodeTypeName=reAuthDynamicCodeType", - VPNToken == null ? CASCookie : VPNToken, + CASCookie, null, resources.getString(R.string.cookie_delimiter), null, @@ -198,40 +179,22 @@ public class Net { * @param VPNToken VPNToken * @return Response */ - public static HttpConnectionAndCode verifyPhoneOTP(Context context, String CASCookie, String OTP, String VPNToken) { + public static HttpConnectionAndCode verifyPhoneOTP(Context context, String OTP, String CASCookie) { Resources resources = context.getResources(); HttpConnectionAndCode VerifyRequest = Post.post( - (VPNToken != null ? resources.getString(R.string.url_ReAuth_VPN) : resources.getString(R.string.url_ReAuth)), + resources.getString(R.string.url_ReAuth), null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), "service=http%3A%2F%2Ficampus.guet.edu.cn%2FGuetAccount%2FCasLogin&reAuthType=3&isMultifactor=true&password=&dynamicCode=" + OTP + "&uuid=&answer1=&answer2=&otpCode=", - VPNToken == null ? CASCookie : VPNToken, + CASCookie, null, resources.getString(R.string.cookie_delimiter), null, null, false, resources.getString(R.string.SSO_context_type)); - if (VPNToken == null) { - return VerifyRequest; - } else { - HttpConnectionAndCode VPNGetCookieRequest = Get.get( - resources.getString(R.string.vpn_get_cookie) + "&vpn_timestamp=" + new Date().getTime(), - null, - resources.getString(R.string.user_agent), - resources.getString(R.string.url_Authserver_VPN), - VPNToken, - null, - resources.getString(R.string.cookie_delimiter), - null, - null, - null, - null, - 10000, - null); - return new HttpConnectionAndCode(VerifyRequest.c, VerifyRequest.code, VerifyRequest.comment, VPNGetCookieRequest.comment, VerifyRequest.resp_code); - } + return VerifyRequest; } /** @@ -239,19 +202,17 @@ public class Net { * * @param context context * @param CASCookie CAS Cookie - * @param OTP - * @param VPNToken VPNToken * @return Response */ - public static HttpConnectionAndCode fuck2FA(Context context, String password, String CASCookie, String VPNToken) { + public static HttpConnectionAndCode fuck2FA(Context context, String password, String CASCookie) { Resources resources = context.getResources(); try { HttpConnectionAndCode MFAParams = Get.get( - (VPNToken != null ? resources.getString(R.string.url_ReAuth_Param_VPN) : resources.getString(R.string.url_ReAuth_Param)), + resources.getString(R.string.url_ReAuth_Param), null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), - VPNToken == null ? CASCookie : VPNToken, + CASCookie, null, resources.getString(R.string.cookie_delimiter), null, @@ -266,37 +227,20 @@ public class Net { ArrayList listExp = RegularUtil.getAllSatisfyStr(MFAParams.comment, "(?<=\"pwdEncryptSalt\":\")(\\w+)(?=\")"); String AESKey = listExp.get(0); HttpConnectionAndCode VerifyRequest = Post.post( - (VPNToken != null ? resources.getString(R.string.url_ReAuth_VPN) : resources.getString(R.string.url_ReAuth)), + resources.getString(R.string.url_ReAuth), null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), "service=http%3A%2F%2Ficampus.guet.edu.cn%2FGuetAccount%2FCasLogin&reAuthType=2&isMultifactor=true&password=" + URLEncoder.encode(AESUtil.CASEncryption(password, AESKey), "UTF-8") + "&dynamicCode=&uuid=&answer1=&answer2=&otpCode=", - VPNToken == null ? CASCookie : VPNToken, + CASCookie, null, resources.getString(R.string.cookie_delimiter), null, null, false, resources.getString(R.string.SSO_context_type)); - if (VPNToken == null) { - return VerifyRequest; - } else { - HttpConnectionAndCode VPNGetCookieRequest = Get.get( - resources.getString(R.string.vpn_get_cookie) + "&vpn_timestamp=" + new Date().getTime(), - null, - resources.getString(R.string.user_agent), - resources.getString(R.string.url_Authserver_VPN), - VPNToken, - null, - resources.getString(R.string.cookie_delimiter), - null, - null, - null, - null, - 10000, - null); - return new HttpConnectionAndCode(VerifyRequest.c, VerifyRequest.code, VerifyRequest.comment, VPNGetCookieRequest.comment, VerifyRequest.resp_code); - } + + return VerifyRequest; } catch (Exception ignored) { } @@ -309,17 +253,16 @@ public class Net { * @param context context * @param CASCookie CAS Cookie * @param service ST令牌的服务端 - * @param VPNToken VPNToken * @return ST令牌 */ - public static HttpConnectionAndCode getSTbyCas(Context context, String CASCookie, String service, String VPNToken) { + public static HttpConnectionAndCode getSTbyCas(Context context, String CASCookie, String service, String MFACookie) { Resources resources = context.getResources(); return Get.get( - (VPNToken != null ? resources.getString(R.string.url_Authserver_VPN) : resources.getString(R.string.url_Authserver)) + "?" + service, + resources.getString(R.string.url_Authserver) + "?" + service, null, resources.getString(R.string.user_agent), resources.getString(R.string.SSO_referer), - VPNToken == null ? CASCookie : VPNToken, + CASCookie + (MFACookie != null ? ("; " + MFACookie) : ""), null, resources.getString(R.string.cookie_delimiter), null, diff --git a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java index 2a8c22cb0303d36922376c5fa026f50cb6b7eb70..1a9b07050f5a6337730110f2a9a8d01e2d585a27 100644 --- a/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java +++ b/app/src/main/java/top/yvyan/guettable/service/fetch/StaticService.java @@ -48,15 +48,14 @@ public class StaticService { * @param context context * @param CASCookie * @param account 学号 - * @param VPNToken VPNToken * @return Phone Number * ERROR0 : 网络错误 * ERROR1 : 密码错误 * ERROR2 : 需要使用外网网址进行访问 * ERROR3 : 验证码发送CD */ - public static String SendPhoneOTP(Context context, String CASCookie, String account, String VPNToken) { - HttpConnectionAndCode response = Net.sendPhoneOTP(context, CASCookie, account, VPNToken); + public static String SendPhoneOTP(Context context, String account, String CASCookie) { + HttpConnectionAndCode response = Net.sendPhoneOTP(context, account, CASCookie); if (response.code != 0) { if (response.code == -5) { return "ERROR2"; @@ -76,8 +75,8 @@ public class StaticService { } } - public static String fuck2FA(Context context, String Password,String CASCookie, String VPNToken) { - HttpConnectionAndCode response = Net.fuck2FA(context, Password,CASCookie, VPNToken); + public static String fuck2FA(Context context, String Password, String CASCookie) { + HttpConnectionAndCode response = Net.fuck2FA(context, Password, CASCookie); if (response.code != 0) { if (response.code == -5) { return "ERROR2"; @@ -85,17 +84,7 @@ public class StaticService { return "ERROR0"; } else { if (response.comment.contains("reAuth_success")) { - if (VPNToken == null) { - return response.cookie; - } else { - String MultiFactorCookie = response.cookie.substring(response.cookie.indexOf("MULTIFACTOR_USERS")); - int CookieEnd = MultiFactorCookie.indexOf(";"); - if (CookieEnd >= 0) { - return MultiFactorCookie.substring(0, CookieEnd); - } else { - return MultiFactorCookie; - } - } + return response.cookie; } return "ERROR1"; } @@ -107,14 +96,13 @@ public class StaticService { * @param context context * @param CASCookie * @param OTP OTP手机验证码 - * @param VPNToken VPNToken * @return 多因素身份验证令牌Cookie * ERROR0 : 网络错误 * ERROR1 : 密码错误 * ERROR2 : 需要使用外网网址进行访问 */ - public static String VerifyPhoneOTP(Context context, String CASCookie, String OTP, String VPNToken) { - HttpConnectionAndCode response = Net.verifyPhoneOTP(context, CASCookie, OTP, VPNToken); + public static String VerifyPhoneOTP(Context context, String OTP, String CASCookie) { + HttpConnectionAndCode response = Net.verifyPhoneOTP(context, OTP, CASCookie); if (response.code != 0) { if (response.code == -5) { return "ERROR2"; @@ -122,17 +110,7 @@ public class StaticService { return "ERROR0"; } else { if (response.comment.contains("reAuth_success")) { - if (VPNToken == null) { - return response.cookie; - } else { - String MultiFactorCookie = response.cookie.substring(response.cookie.indexOf("MULTIFACTOR_USERS")); - int CookieEnd = MultiFactorCookie.indexOf(";"); - if (CookieEnd >= 0) { - return MultiFactorCookie.substring(0, CookieEnd); - } else { - return MultiFactorCookie; - } - } + return response.cookie; } return "ERROR1"; } @@ -144,43 +122,29 @@ public class StaticService { * @param context context * @param account 学号 * @param password 密码 - * @param VPNToken VPNToken * @return CAS Cookie * ERROR0 : 网络错误 * ERROR1 : 密码错误 * ERROR2 : 需要使用外网网址进行访问 * ERROR5 : 2FA Needed */ - public static String SSOLogin(Context context, String account, String password, String VPNToken) { - HttpConnectionAndCode response = Net.getCASToken(context, account, password, VPNToken); + public static String SSOLogin(Context context, String account, String password, String MFACoookie) { + HttpConnectionAndCode response = Net.getCASToken(context, account, password, MFACoookie); if (response.code != 0) { if (response.code == -5) { return "ERROR2"; } return "ERROR0"; } else { - if (VPNToken == null) { - String Cookie = response.cookie; - if (Cookie.contains("TGT-")) { - String Location = response.c.getHeaderField("location"); - if (Location.contains("reAuthLoginView.do")) { - return "ERROR5;" + Cookie; - } - return Cookie; - } else { - return "ERROR1"; + String Cookie = response.cookie; + if (Cookie.contains("TGT-")) { + String Location = response.c.getHeaderField("location"); + if (Location.contains("reAuthLoginView.do")) { + return "ERROR5;" + Cookie; } + return Cookie; } else { - String Cookie = response.comment; - if (Cookie.contains("TGT-")) { - String Location = response.c.getHeaderField("location"); - if (Location.contains("reAuthLoginView.do")) { - return "ERROR5;" + Cookie; - } - return Cookie; - } else { - return "ERROR1"; - } + return "ERROR1"; } } } @@ -191,25 +155,23 @@ public class StaticService { * @param context context * @param CASCookie CAS Cookie * @param service ST令牌的服务端 - * @param VPNToken VPNToken * @return ST令牌 * ERROR0 : 网络错误 * ERROR1 : TGT失效 * ERROR2 : 需要使用外网网址进行访问 或 TGT失效(上层调用时,若内网返回此错误, * 则先尝试外网,若是TGT失效,则重新获取;若正常获取,则需要将全局网络设置为外网) */ - public static String SSOGetST(Context context, String CASCookie, String service, String VPNToken) { - HttpConnectionAndCode response = Net.getSTbyCas(context, CASCookie, service, VPNToken); + public static String SSOGetST(Context context, String CASCookie, String service, String MFACoookie) { + HttpConnectionAndCode response = Net.getSTbyCas(context, CASCookie, service, MFACoookie); if (response.code != -7) { if (response.code == -5) { - if (VPNToken != null) { - return "ERROR1"; - } return "ERROR2"; } - if (response.cookie.contains("refresh")) { - return "ERROR1"; - } + /* + if (response.cookie.contains("refresh")) { + return "ERROR1"; + } + */ return "ERROR0"; } else { String Location = response.c.getHeaderField("location");