Browse Source

成都理工大学CAS

xiaof 2 years ago
parent
commit
844647188e

+ 2 - 2
cdut-exchange/pom.xml

@@ -4,14 +4,14 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.cdut.exchange</groupId>
     <artifactId>cdut-exchange</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
     <packaging>jar</packaging>
     <description>成都理工大学单点登录</description>
 
     <parent>
         <groupId>com.qmth.teachcloud.exchange.service</groupId>
         <artifactId>teachcloud-exchange-service</artifactId>
-        <version>1.0.0</version>
+        <version>1.0.1</version>
     </parent>
 
     <dependencies>

+ 29 - 35
cdut-exchange/src/main/java/com/qmth/cdut/api/OpenApiController.java

@@ -1,26 +1,29 @@
 package com.qmth.cdut.api;
 
+import com.alibaba.fastjson.JSON;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.cdut.supwisdom.CasUtils;
 import com.qmth.cdut.supwisdom.Constants;
 import com.qmth.cdut.supwisdom.LoginUser;
+import com.qmth.cdut.supwisdom.utils.HttpRequestUtils;
 import com.qmth.teachcloud.exchange.common.contant.SystemConstant;
 import com.qmth.teachcloud.exchange.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.exchange.common.service.AuthInfoService;
 import com.qmth.teachcloud.exchange.common.service.CommonService;
 import com.qmth.teachcloud.exchange.common.util.Result;
 import com.qmth.teachcloud.exchange.common.util.ServletUtil;
-import io.swagger.annotations.*;
-import org.apache.commons.lang3.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -30,7 +33,6 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import java.io.IOException;
 import java.util.Objects;
-import java.util.StringJoiner;
 
 /**
  * <p>
@@ -54,44 +56,25 @@ public class OpenApiController {
     @Value("${cas.config.logoutUrl}")
     String logoutUrl;
 
-    @Value("${cas.config.returnUrl}")
-    String returnUrl;
-
     @ApiOperation(value = "成都理工大学cas鉴权接口")
     @ApiResponses({@ApiResponse(code = 200, message = "返回消息", response = Result.class)})
     @RequestMapping(value = "/authentication", method = RequestMethod.GET)
     @Aac(auth = BOOL.FALSE)
-    public void sso(HttpServletRequest request, HttpServletResponse response) throws IOException {
+    public void authentication(HttpServletRequest request, HttpServletResponse response) throws IOException {
         HttpSession session = request.getSession();
         String targetUrl = CasUtils.getTargetUrl(request);
         authInfoService.appHasExpired(schoolCode);
         if (CasUtils.isLogin(session)) {
-            LoginUser loginUser = (LoginUser) session.getAttribute(Constants.LOGIN_USER_KEY);
-            String account = loginUser.getAccount();
-
-            String sessionId = session.getId();
-            if (StringUtils.isNotBlank(sessionId)) {
-                StringJoiner stringJoiner = new StringJoiner("");
-                stringJoiner.add(logoutUrl).add(SystemConstant.GET_UNKNOWN).add("sessionId")
-                        .add(SystemConstant.GET_EQUAL).add(sessionId);
-                returnUrl = stringJoiner.toString();
-            } else {
-                throw ExceptionResultEnum.ERROR.exception("sessionId为空");
-            }
-            commonService.redirectLogic(account, schoolCode, returnUrl, null);
+            response.sendRedirect(targetUrl);
         } else {
             if (CasUtils.hasTicket(request)) {
                 LoginUser loginUser = CasUtils.getLoginUser(request);
-                if (loginUser.isLogin() && doLogin(loginUser, request)) {
+                if (loginUser.isLogin()) {
                     CasUtils.login(loginUser, session);
-
-                    String account = loginUser.getAccount();
-                    commonService.redirectLogic(account, schoolCode, returnUrl, null);
+                    response.sendRedirect(targetUrl);
                 } else {
                     String loginUrl = CasUtils.getLoginUrl(request);
                     response.sendRedirect(loginUrl);
-                    // TODO 可选:业务系统可根据实际情况进行处理
-//                    response.sendRedirect(CasUtils.getErrorUrl(request));
                 }
             } else {
                 String loginUrl = CasUtils.getLoginUrl(request);
@@ -104,26 +87,37 @@ public class OpenApiController {
     @RequestMapping(value = "/authentication/logout", method = RequestMethod.GET)
     @ApiResponses({@ApiResponse(code = 200, message = "返回消息", response = Result.class)})
     @Aac(auth = BOOL.FALSE)
-    public void logout(@ApiParam(value = "sessionId", required = true) @RequestParam String sessionId) throws IOException {
+    public void logout(HttpServletRequest request, HttpServletResponse response) throws IOException {
         if (Objects.isNull(logoutUrl) || Objects.equals(logoutUrl, "")) {
             throw ExceptionResultEnum.PARAMS_ERROR.exception("鉴权退出地址不存在");
         }
-        if (Objects.isNull(sessionId) || Objects.equals(sessionId, "")) {
-            throw ExceptionResultEnum.PARAMS_ERROR.exception("sessionId为空");
-        }
         authInfoService.appHasExpired(schoolCode);
-
-        HttpServletRequest request = ServletUtil.getRequest();
-        HttpServletResponse response = ServletUtil.getResponse();
         if (doLogout(request)) {
             HttpSession session = request.getSession();
             CasUtils.logout(session);
             response.sendRedirect(CasUtils.getLogoutUrl(request));
         } else {
-            response.sendRedirect(CasUtils.getLoginUrl(request));
+            response.sendRedirect(CasUtils.getLogoutUrl(request));
         }
     }
 
+    @ApiOperation(value = "跳转知学知考")
+    @RequestMapping(value = "/zxzk_login", method = RequestMethod.GET)
+    @ApiResponses({@ApiResponse(code = 200, message = "返回消息", response = Result.class)})
+    @Aac(auth = BOOL.FALSE)
+    public void zxzkLogin(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        HttpSession session = request.getSession();
+        if (CasUtils.isLogin(session)) {
+            LoginUser loginUser = (LoginUser) session.getAttribute(Constants.LOGIN_USER_KEY);
+            String account = loginUser.getAccount();
+            commonService.redirectLogic(account, schoolCode, logoutUrl, null);
+        } else {
+            String loginUrl = CasUtils.getLoginUrl(request);
+            response.sendRedirect(loginUrl);
+        }
+
+    }
+
     public boolean doLogin(LoginUser loginUser, HttpServletRequest request) {
         HttpSession session = request.getSession();
         ServletContext application = session.getServletContext();

+ 1 - 10
cdut-exchange/src/main/java/com/qmth/cdut/supwisdom/CasUtils.java

@@ -12,7 +12,6 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 
 public class CasUtils {
-
     /**
      * 判断是否已经登录过
      */
@@ -128,8 +127,6 @@ public class CasUtils {
         String encodeServiceUrl = getURLEncodeServiceUrl(request);
         Object ticket = request.getParameter(Constants.TICKET_KEY);
 
-        // System.out.println("ticket = " + ticket);
-
         return Constants.CAS_VALIDATE_URL + "?" + Constants.TICKET_KEY
                 + "=" + ticket + "&" + Constants.SERVICE_KEY + "="
                 + encodeServiceUrl;
@@ -139,13 +136,8 @@ public class CasUtils {
             throws IOException {
         String serviceValidateUrl = getServiceValidateUrl(request);
 
-        // System.out.println("serviceValidateUrl = " + serviceValidateUrl);
-
         String casUserInfoXml = HttpRequestUtils.doGet(serviceValidateUrl);
-
-        casUserInfoXml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + casUserInfoXml;
-
-        System.out.println("casUserInfoXml = " + casUserInfoXml);
+        casUserInfoXml = "<?xml version=\"1.0\" encoding=\"UTF8\"?>" + casUserInfoXml;
         return new LoginUser(casUserInfoXml);
     }
 
@@ -159,7 +151,6 @@ public class CasUtils {
                 + Constants.SSO_LOGIN_URI;
         String encodeLoginUrlRoot = URLEncoder.encode(loginUrlRoot,
                 Constants.UTF_8_STR);
-
         return Constants.CAS_LOGOUT_URL + "?" + Constants.SERVICE_KEY + "="
                 + encodeLoginUrlRoot;
     }

+ 2 - 2
cdut-exchange/src/main/java/com/qmth/cdut/supwisdom/Constants.java

@@ -20,10 +20,10 @@ public interface Constants {
     String CAS_LOGOUT_URL = CAS_BASE_PATH + "logout";
 
     //登录成功默认跳转地址
-    String DEF_TARGET_URI = "sso/index.jsp";
+    String DEF_TARGET_URI = "/api/open/zxzk_login";
 
     // 业务系统认证集成改造之后的登录URI
-    String SSO_LOGIN_URI = "sso/authentication";
+    String SSO_LOGIN_URI = "/api/open/authentication";
 
     // 业务系统认证集成失败提示页
     String SSO_ERROR_URI = "error.jsp";

+ 6 - 1
cdut-exchange/src/main/java/com/qmth/cdut/supwisdom/LoginUser.java

@@ -1,7 +1,12 @@
 package com.qmth.cdut.supwisdom;
 
+import com.alibaba.fastjson.JSON;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.cdut.supwisdom.utils.IOUtils;
 import com.qmth.cdut.supwisdom.utils.StringUtils;
+import com.qmth.teachcloud.exchange.common.enums.ExceptionResultEnum;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -12,7 +17,6 @@ import java.io.InputStream;
 import java.lang.reflect.Field;
 
 public class LoginUser {
-
     public static final String CAS_PREFIX = "cas:";
     public static final String LOGIN_SUCCESS_KEY = CAS_PREFIX + "authenticationSuccess";
     public static final String ACCOUNT_KEY = CAS_PREFIX + "user";
@@ -83,6 +87,7 @@ public class LoginUser {
         } catch (Exception e) {
             // 解析用户信息失败!
             e.printStackTrace();
+            throw ExceptionResultEnum.ERROR.exception("解析错误"+ e.getMessage());
         } finally {
             IOUtils.closeQuietly(in);
         }

+ 8 - 6
cdut-exchange/src/main/resources/application.properties

@@ -6,6 +6,9 @@ server.tomcat.max-connections=2500
 #tomcat\u7684URI\u7F16\u7801
 server.tomcat.uri-encoding=UTF-8
 
+server.tomcat.remoteip.protocol-header=X-Forwarded-Proto
+server.tomcat.remoteip.remote-ip-header=X-FORWARDED-FOR
+
 #\u9879\u76EE\u540D\u79F0
 spring.application.name=cdut-exchange
 
@@ -52,10 +55,9 @@ spring.jackson.time-zone=GMT+8
 com.qmth.logging.root-level=info
 com.qmth.logging.file-path=/Users/king/Downloads/xjtu-exchange.log
 
-com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
-com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
-#com.qmth.solar.license=/Volumes/extend/\u542F\u660E/\u5206\u5E03\u5F0F\u5370\u5237/\u5206\u5E03\u5F0F\u5370\u5237&\u6559\u7814\u5206\u6790v3.1.0/tc-dev-wl.lic
+#com.qmth.solar.access-key=274f823e5f59410f8b3bb6edcd8e2b6e
+#com.qmth.solar.access-secret=y7AO6W0TOdTF8HpWBwGHbp3wfIHsmUKr
+com.qmth.solar.license=C:\\Users\\xf520\\Desktop\\exchange-cdut.lic
 
-cas.config.teachcloudPrintLoginUrl=https://*.teach-cloud-test.com/#/login-open
-cas.config.logoutUrl=https://dj-xian.qmth.com.cn/api/open/authentication/logout
-cas.config.returnUrl=https://org.xjtu.edu.cn/openplatform/oauth/authorize?appId=1548&redirectUri=http://10.184.206.15/api/open/authentication&responseType=code&scope=user_info&state=1234
+cas.config.teachcloudPrintLoginUrl=https://cdut.teach-cloud.com/#/login-open
+cas.config.logoutUrl=https://exam.cdut.edu.cn/api/open/authentication/logout

+ 1 - 1
pom.xml

@@ -4,7 +4,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.teachcloud.exchange.service</groupId>
     <artifactId>teachcloud-exchange-service</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
     <packaging>pom</packaging>
 
     <modules>

+ 2 - 2
teachcloud-exchange-common/pom.xml

@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.teachcloud.exchange.common</groupId>
     <artifactId>teachcloud-exchange-common</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>com.qmth.teachcloud.exchange.service</groupId>
         <artifactId>teachcloud-exchange-service</artifactId>
-        <version>1.0.0</version>
+        <version>1.0.1</version>
     </parent>
 
     <dependencies>

+ 2 - 2
xjtu-exchange/pom.xml

@@ -4,13 +4,13 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>com.qmth.xjtu.exchange</groupId>
     <artifactId>xjtu-exchange</artifactId>
-    <version>1.0.0</version>
+    <version>1.0.1</version>
     <packaging>jar</packaging>
 
     <parent>
         <groupId>com.qmth.teachcloud.exchange.service</groupId>
         <artifactId>teachcloud-exchange-service</artifactId>
-        <version>1.0.0</version>
+        <version>1.0.1</version>
     </parent>
 
     <dependencies>