From 0aad5cb2d7a69405adffd93e4dae52a8c0a9ec48 Mon Sep 17 00:00:00 2001 From: "LAPTOP-SB56SG4Q\\86185" Date: Mon, 9 Aug 2021 11:30:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=BC=80=E6=BA=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=9D=90=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JSD-7891-需求确认书V1.docx | Bin 0 -> 61669 bytes README.md | 5 +- plugin.xml | 19 ++ .../com/fr/plugin/sso/filter/SSOFilter.java | 160 ++++++++++++ .../java/com/fr/plugin/sso/test/Test.java | 32 +++ .../com/fr/plugin/sso/utils/FRUserUtils.java | 111 ++++++++ .../java/com/fr/plugin/sso/utils/FRUtils.java | 167 ++++++++++++ .../com/fr/plugin/sso/utils/HttpUtils.java | 237 ++++++++++++++++++ .../fr/plugin/sso/utils/PropertiesUtils.java | 41 +++ .../fr/plugin/sso/utils/ResponseUtils.java | 80 ++++++ .../java/com/fr/plugin/sso/utils/Utils.java | 92 +++++++ wz.properties | 4 + 使用手册.docx | Bin 0 -> 87703 bytes 13 files changed, 947 insertions(+), 1 deletion(-) create mode 100644 JSD-7891-需求确认书V1.docx create mode 100644 plugin.xml create mode 100644 src/main/java/com/fr/plugin/sso/filter/SSOFilter.java create mode 100644 src/main/java/com/fr/plugin/sso/test/Test.java create mode 100644 src/main/java/com/fr/plugin/sso/utils/FRUserUtils.java create mode 100644 src/main/java/com/fr/plugin/sso/utils/FRUtils.java create mode 100644 src/main/java/com/fr/plugin/sso/utils/HttpUtils.java create mode 100644 src/main/java/com/fr/plugin/sso/utils/PropertiesUtils.java create mode 100644 src/main/java/com/fr/plugin/sso/utils/ResponseUtils.java create mode 100644 src/main/java/com/fr/plugin/sso/utils/Utils.java create mode 100644 wz.properties create mode 100644 使用手册.docx diff --git a/JSD-7891-需求确认书V1.docx b/JSD-7891-需求确认书V1.docx new file mode 100644 index 0000000000000000000000000000000000000000..b624ca7ad7b2e5fc8e3beabb0dd28735be588b09 GIT binary patch literal 61669 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
    Gwd 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%0Au{ky)7FKe#-y}&_Tz}-FU`@MPi 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 2a693fe..c291f9e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # open-JSD-7891 -JSD-7891 开源任务材料 \ No newline at end of file +JSD-7891 开源任务材料\ +免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ +仅作为开发者学习参考使用!禁止用于任何商业用途!\ +为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。 \ No newline at end of file diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..52eddc7 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,19 @@ + + com.fr.plugin.sso + + yes + 1.0.13 + 10.0 + 2018-07-31 + author + + + com.fr.plugin.sso + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/sso/filter/SSOFilter.java b/src/main/java/com/fr/plugin/sso/filter/SSOFilter.java new file mode 100644 index 0000000..7eacc20 --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/filter/SSOFilter.java @@ -0,0 +1,160 @@ +package com.fr.plugin.sso.filter; + +import com.fr.decision.fun.impl.AbstractEmbedRequestFilterProvider; +import com.fr.decision.webservice.bean.user.UserBean; +import com.fr.json.JSONObject; +import com.fr.plugin.sso.utils.*; +import com.fr.plugin.transform.FunctionRecorder; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +@FunctionRecorder +public class SSOFilter extends AbstractEmbedRequestFilterProvider { + + @Override + public void filter(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { + boolean isLogin = FRUtils.isLogin(httpServletRequest); + String url = FRUtils.getAllUrl(httpServletRequest); + + Properties p = PropertiesUtils.getProperties2("/resources/wz.properties"); + + String ssoOp = httpServletRequest.getParameter("ssoOp"); + boolean changer = Utils.isNotNullStr(ssoOp) && ssoOp.equals("changeUser"); + + //如果已经登录则放行 + if(isLogin && !changer){ + return ; + } + + //如果是自带登录页资源则放行 + if(url.contains("login")||url.contains("decision/file")||url.contains("decision/resource")||url.contains("decision/system")||url.contains("query/ip")){ + return; + } + + //如果是远程设计则放行 + if(url.contains("remote")){ + return; + } + + if(changer){ + FRUtils.logout(httpServletRequest,httpServletResponse); + } + + String token = ""; + String mscid = ""; + + String requestUrl = url; + String cookie = httpServletRequest.getHeader("Cookie"); + + if(Utils.isNullStr(cookie)){ + return; + } + + String[] cookies = cookie.split(";"); + + for(String ck : cookies){ + String[] cks = ck.split("="); + if(cks[0].equals(" ms_member_token") ){ + token = cks[1]; + } + + if( cks[0].equals(" ms_cid")){ + mscid = cks[1]; + } + } + + FRUtils.FRLogInfo("cookie="+cookie); + + FRUtils.FRLogInfo("token="+token+"&requestUrl="+requestUrl+"&mscid="+mscid); + + //跳转首页 配置文件中取 + String index = p.getProperty("nullTokenRedirectURL"); + + if(Utils.isNullStr(token)){ + + try { + httpServletResponse.sendRedirect(index); + } catch (IOException e) { + FRUtils.FRLogInfo("重定向异常:"+e.getMessage()); + } + return ; + } + + //认证地址 配置文件中取 + String authUrl = p.getProperty("authUrl");; + authUrl += "?requestUrl="+requestUrl; + + Map header = new HashMap(); + + header.put("Mscid",mscid); + header.put("Authorization",token); + + String returnResult = HttpUtils.get(authUrl,null,header); + + if(Utils.isNullStr(returnResult)){ + ResponseUtils.failedResponse(httpServletResponse,"获取用户信息失败,请联系管理员!"); + return; + } + + JSONObject json = new JSONObject(returnResult); + + String result = json.getString("result"); + + if("801".equals(result)){ + String noPermission = p.getProperty("noAccessPermissionURL"); + try { + httpServletResponse.sendRedirect(noPermission); + } catch (IOException e) { + FRUtils.FRLogInfo("重定向异常:"+e.getMessage()); + } + + return ; + } + + if("401".equals(result)){ + try { + httpServletResponse.sendRedirect(index); + } catch (IOException e) { + FRUtils.FRLogInfo("重定向异常:"+e.getMessage()); + } + + return ; + } + + if("0".equals(result)){ + JSONObject data =json.getJSONObject("data"); + String userId = data.getString("ipTokenId"); + String userId2 = data.getString("userId"); + UserBean user = null; + try { + user = FRUserUtils.getUser(userId); + } catch (Exception e) { + String noUser = p.getProperty("userNotFoundURL"); + try { + httpServletResponse.sendRedirect(noUser); + } catch (IOException ioException) { + FRUtils.FRLogInfo("重定向异常:"+e.getMessage()); + } + + return ; + } + + HttpSession session = httpServletRequest.getSession(true); + session.setAttribute("userid",userId2); + session.setAttribute("mscid",mscid); + + FRUtils.login(httpServletRequest,httpServletResponse,user.getUsername(),""); + + return ; + } + + ResponseUtils.failedResponse(httpServletResponse,"单点登录失败,请联系管理员!"); + + } +} \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/sso/test/Test.java b/src/main/java/com/fr/plugin/sso/test/Test.java new file mode 100644 index 0000000..08705ca --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/test/Test.java @@ -0,0 +1,32 @@ +package com.fr.plugin.sso.test; + +import com.fr.io.utils.ResourceIOUtils; + +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Properties; + +public class Test { + public static void main(String[] args) { + Properties p = new Properties(); +// try{ +// String path = Test.class.getClass().getResource("/").getPath();//得到工程名WEB-INF/classes/路径 +// path=path.substring(1, path.indexOf("classes"));//从路径字符串中取出工程路径 +// p.load(new FileInputStream(path+"wz.properties")); +// }catch(Exception e){ +// e.printStackTrace(); +// } + + try{ + InputStream is = ResourceIOUtils.read("/resources/wz.properties"); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); + p.load(bufferedReader); + }catch(Exception e){ + e.printStackTrace(); + } + + System.out.println(); + } +} diff --git a/src/main/java/com/fr/plugin/sso/utils/FRUserUtils.java b/src/main/java/com/fr/plugin/sso/utils/FRUserUtils.java new file mode 100644 index 0000000..6fff004 --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/utils/FRUserUtils.java @@ -0,0 +1,111 @@ +package com.fr.plugin.sso.utils; + +import com.fr.decision.authority.data.User; +import com.fr.decision.privilege.TransmissionTool; +import com.fr.decision.webservice.bean.user.UserBean; +import com.fr.decision.webservice.bean.user.UserUpdateBean; +import com.fr.decision.webservice.v10.user.UserService; + +public class FRUserUtils { + + /** + * 获取用户Service + * @return + */ + public static UserService getUserService(){ + return UserService.getInstance(); + } + + /** + * 添加用户 + * @param userBean + */ + public static void addUser(UserBean userBean) throws Exception { + userBean.setPassword(TransmissionTool.defaultEncrypt(userBean.getPassword())); + getUserService().addUser(userBean); + } + + /** + * 删除用户 + * @param userBean + */ + public static void updateUser(UserBean userBean) throws Exception { + getUserService().editUser(userBean); + } + + /** + * 删除用户 + * @param user + * @return + */ + public static int deleteUser(User user) throws Exception { + String userId = user.getId(); + + UserUpdateBean userUpdateBean = new UserUpdateBean(); + userUpdateBean.setRemoveUserIds(new String[]{userId}); + + return getUserService().deleteUsers(userUpdateBean); + } + + /** + * 根据用户名获取用户实体 + * @param userName + * @return + */ + public static User getUserByUserName(String userName) throws Exception { + return getUserService().getUserByUserName(userName); + } + + /** + * 根据id获取用户 + * @param id + * @return + * @throws Exception + */ + public static UserBean getUser(String id) throws Exception { + return getUserService().getUser(id); + } + + /** + * 判断是否是管理员 + * @param userId + * @return + */ + public static boolean isAdmin(String userId){ + return getUserService().isAdmin(userId); + } + + /** + * 禁用启用用户 + * @param userId + * @param state false 禁用 true 启用 + * @throws Exception 异常说明失败 + */ + public static void forbidUser(String userId,boolean state) throws Exception { + getUserService().forbidUser(userId,state); + } + + /** + * 修改用户部门 + * @param departmentId + * @param postId + * @param ud + * @throws Exception + */ + public static void updateDepartmentPostUsers(String departmentId, String postId, UserUpdateBean ud) throws Exception { + getUserService().updateDepartmentPostUsers(departmentId,postId,ud); + } + + +// /** +// * 验证密码是否正确 +// * @param psd 明文密码 +// * @param user 根据用户名获取得用户对象 +// * @return +// */ +// public static boolean checkPsd(String psd,User user){ +// String shaPsd = CipherUtils.jdksha256(psd); +// +// return shaPsd.equals(user.getPassword()); +// } +} diff --git a/src/main/java/com/fr/plugin/sso/utils/FRUtils.java b/src/main/java/com/fr/plugin/sso/utils/FRUtils.java new file mode 100644 index 0000000..f45ccd0 --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/utils/FRUtils.java @@ -0,0 +1,167 @@ +package com.fr.plugin.sso.utils; + +import com.fr.decision.authority.AuthorityContext; +import com.fr.decision.authority.data.User; +import com.fr.decision.webservice.login.LogInOutResultInfo; +import com.fr.decision.webservice.utils.DecisionServiceConstants; +import com.fr.decision.webservice.v10.login.LoginService; +import com.fr.decision.webservice.v10.login.event.LogInOutEvent; +import com.fr.decision.webservice.v10.user.UserService; +import com.fr.event.EventDispatcher; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; +import com.fr.stable.query.QueryFactory; +import com.fr.stable.query.restriction.RestrictionFactory; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.util.List; +import java.util.Properties; + +public class FRUtils { + /** + * 判断用户是否存在 + * @param userName + * @return + */ + public static boolean isUserExist(String userName){ + if (StringUtils.isEmpty(userName)) { + return false; + } else { + try { + List var1 = AuthorityContext.getInstance().getUserController().find(QueryFactory.create().addRestriction(RestrictionFactory.eq("userName", userName))); + return var1 != null && !var1.isEmpty(); + } catch (Exception var2) { + FineLoggerFactory.getLogger().error(var2.getMessage()); + return false; + } + } + } + + /** + * 判断是否登录FR + * @param req + * @return + */ + public static boolean isLogin(HttpServletRequest req){ + return LoginService.getInstance().isLogged(req); + } + + /** + * 帆软登录 + * @param httpServletRequest + * @param httpServletResponse + * @param userName + * @param url + */ + public static void login(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,String userName,String url){ + + FineLoggerFactory.getLogger().info("FRLOG:用户名:"+userName); + FineLoggerFactory.getLogger().info("FRLOG:跳转链接:"+url); + + + //判断用户名是否为空 + if(!Utils.isNullStr(userName)){ + if(isUserExist(userName)){ + String FRToken = ""; + + try { + HttpSession session = httpServletRequest.getSession(true); + + FRToken = LoginService.getInstance().login(httpServletRequest, httpServletResponse, userName); + + httpServletRequest.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME,FRToken); + + session.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, FRToken); + EventDispatcher.fire(LogInOutEvent.LOGIN,new LogInOutResultInfo(httpServletRequest,httpServletResponse,userName,true)); + FineLoggerFactory.getLogger().info("FRLOG:登陆成功!"); + + if(!Utils.isNullStr(url)){ + httpServletResponse.sendRedirect(url); + } + } catch (Exception e) { + ResponseUtils.failedResponse(httpServletResponse,"登录异常,请联系管理员!"); + FineLoggerFactory.getLogger().info("FRLOG:登录异常,请联系管理员!"); + FineLoggerFactory.getLogger().info("FRLOGException:"+e.getMessage()); + } + }else{ + FineLoggerFactory.getLogger().info("FRLOG:用户在报表系统中不存在!"); + try { + Properties p = PropertiesUtils.getProperties2("/resources/wz.properties"); + String noUser = p.getProperty("userNotFoundURL"); + httpServletResponse.sendRedirect(noUser); + } catch (IOException e) { + FineLoggerFactory.getLogger().info("FRLOG:重定向异常!"); + } + return ; + } + }else{ + ResponseUtils.failedResponse(httpServletResponse,"用户名不能为空!"); + FineLoggerFactory.getLogger().info("FRLOG:用户名不能为空!"); + } + } + + /** + * + * @param httpServletRequest + * @param httpServletResponse + */ + public static void logout(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) + { + if(!isLogin(httpServletRequest)){ + return ; + } + + try { + LoginService.getInstance().logout(httpServletRequest,httpServletResponse); + } catch (Exception e) { + ResponseUtils.failedResponse(httpServletResponse,"登出异常,请联系管理员!"); + FineLoggerFactory.getLogger().info("FRLOG:登出异常,请联系管理员!"); + FineLoggerFactory.getLogger().info("FRLOGException:"+e.getMessage()); + } + } + + /** + * 打印FR日志 + * @param message + */ + public static void FRLogInfo(String message){ + FineLoggerFactory.getLogger().info("FRLOG:"+message); + } + + /** + * 根据用户名获取用户信息 + * @param userName + * @return + */ + public static User getFRUserByUserName(String userName){ + try { + return UserService.getInstance().getUserByUserName(userName); + } catch (Exception e) { + FRLogInfo("获取用户信息异常:"+e.getMessage()); + } + + return null; + } + + /** + * 解密FR密码 + * @param password + * @return + */ +// public static String decryptFRPsd(String password){ +// FRLogInfo("解密密码:"+password); +// return TransmissionTool.decrypt(password); +// } + + /** + * 获取带参数的访问链接 + * @return + */ + public static String getAllUrl(HttpServletRequest httpServletRequest){ + return WebUtils.getOriginalURL(httpServletRequest); + } +} diff --git a/src/main/java/com/fr/plugin/sso/utils/HttpUtils.java b/src/main/java/com/fr/plugin/sso/utils/HttpUtils.java new file mode 100644 index 0000000..726596d --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/utils/HttpUtils.java @@ -0,0 +1,237 @@ +package com.fr.plugin.sso.utils; + +import com.fr.log.FineLoggerFactory; +import com.fr.third.org.apache.http.HttpEntity; +import com.fr.third.org.apache.http.HttpResponse; +import com.fr.third.org.apache.http.HttpStatus; +import com.fr.third.org.apache.http.NameValuePair; +import com.fr.third.org.apache.http.client.CookieStore; +import com.fr.third.org.apache.http.client.entity.UrlEncodedFormEntity; +import com.fr.third.org.apache.http.client.methods.HttpGet; +import com.fr.third.org.apache.http.client.methods.HttpPost; +import com.fr.third.org.apache.http.conn.ssl.NoopHostnameVerifier; +import com.fr.third.org.apache.http.entity.StringEntity; +import com.fr.third.org.apache.http.impl.client.BasicCookieStore; +import com.fr.third.org.apache.http.impl.client.CloseableHttpClient; +import com.fr.third.org.apache.http.impl.client.HttpClients; +import com.fr.third.org.apache.http.impl.cookie.BasicClientCookie; +import com.fr.third.org.apache.http.message.BasicNameValuePair; +import com.fr.third.org.apache.http.ssl.SSLContexts; +import com.fr.third.org.apache.http.ssl.TrustStrategy; +import com.fr.third.org.apache.http.util.EntityUtils; + +import javax.net.ssl.SSLContext; +import javax.servlet.http.Cookie; +import java.io.UnsupportedEncodingException; +import java.security.KeyManagementException; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +public class HttpUtils { + /** + * httpGet请求 + * @param url + * @return + */ + public static String get(String url,Cookie[] cookies,Map header){ + FineLoggerFactory.getLogger().info("FRLOG:HttpUtils.get--url:"+url); + + //创建httpClient + CloseableHttpClient httpclient = createHttpClient(cookies); + + HttpGet getMethod = new HttpGet(url); + FRUtils.FRLogInfo("header:"+header.toString()); + if(header != null && header.size() > 0){ + Set keySet = header.keySet(); + + for(String key : keySet){ + getMethod.setHeader(key,header.get(key)); + } + } + + try { + HttpResponse response = httpclient.execute(getMethod); + + FineLoggerFactory.getLogger().info("FRLOG:HttpUtils.get--status:"+response.getStatusLine().getStatusCode()); + + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String returnResult = EntityUtils.toString(entity, "utf-8"); + + FineLoggerFactory.getLogger().info("FRLOG:HttpUtils.get--returnResult:"+returnResult); + + return returnResult; + } + } catch (Exception e) { + FineLoggerFactory.getLogger().info("FRLOG:HttpUtils.get--exception:"+e.getMessage()); + } + + return ""; + } + + /** + * HttpPost请求 + * @param postMethod + * @return + */ + private static String HttpPost(HttpPost postMethod){ + CloseableHttpClient httpclient = createHttpClient(null); + + try { + HttpResponse response = httpclient.execute(postMethod); + + FineLoggerFactory.getLogger().info("FRLOG:HttpPost:status:"+response.getStatusLine().getStatusCode()); + + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String returnResult = EntityUtils.toString(entity, "utf-8"); + + FineLoggerFactory.getLogger().info("FRLOG:HttpPost:returnResult:"+returnResult); + + return returnResult; + } + } catch (Exception e) { + FineLoggerFactory.getLogger().info("FRLOG:HttpPost:exception:"+e.getMessage()); + } + + return ""; + } + + public static String HttpPostXML(String url, String xmlParam){ + FineLoggerFactory.getLogger().info("FRLOG:HttpPostXML:url:"+url); + + HttpPost postMethod = new HttpPost(url); + + postMethod.setHeader("Content-type", "text/html"); + HttpEntity entity2 = null; + try { + entity2 = new StringEntity(xmlParam); + } catch (UnsupportedEncodingException e) { + FineLoggerFactory.getLogger().info("FRLOG:HttpPostXML:参数异常:"+e.getMessage()); + return ""; + } + + postMethod.setEntity(entity2); + + return HttpPost(postMethod); + } + + public static String HttpPostJson(String url, String param,Map header){ + FineLoggerFactory.getLogger().info("FRLOG:HttpPostJSON:url:"+url); + + HttpPost postMethod = new HttpPost(url); + + postMethod.setHeader("Content-Type","application/json"); + + if(header != null && header.size() > 0){ + Set keySet = header.keySet(); + + for(String key : keySet){ + postMethod.setHeader(key,header.get(key)); + } + } + + if(!Utils.isNullStr(param)){ + HttpEntity entity2 = null; + try { + entity2 = new StringEntity(param); + } catch (UnsupportedEncodingException e) { + FineLoggerFactory.getLogger().info("FRLOG:HttpPostJSON:参数异常:"+e.getMessage()); + return ""; + } + + postMethod.setEntity(entity2); + } + + return HttpPost(postMethod); + } + + public static String HttpPostWWWForm(String url, Map header,Map param){ + FineLoggerFactory.getLogger().info("FRLOG:HttpWWWForm:url:"+url); + + HttpPost postMethod = new HttpPost(url); + + if(header != null && header.size() > 0){ + Set keySet = header.keySet(); + + for(String key : keySet){ + postMethod.setHeader(key,header.get(key)); + } + } + + if(param != null && param.size() > 0){ + List params = new ArrayList(param.size()); + + for(Map.Entry map : param.entrySet()){ + params.add(new BasicNameValuePair(map.getKey(), map.getValue())); + } + + try { + postMethod.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); + } catch (UnsupportedEncodingException e) { + FineLoggerFactory.getLogger().info("FRLOG:HttpWWWForm:异常:"+e.getMessage()); + return ""; + } + } + + return HttpPost(postMethod); + } + + private static CloseableHttpClient createHttpClient(Cookie[] cookies){ + + SSLContext sslContext = null; + try { + sslContext = SSLContexts.custom().loadTrustMaterial(null, new TrustStrategy() { + @Override + public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { + return true; + } + }).build(); + } catch (NoSuchAlgorithmException e) { + FRUtils.FRLogInfo("createHttpClientException:"+e.getMessage()); + } catch (KeyManagementException e) { + FRUtils.FRLogInfo("createHttpClientException:"+e.getMessage()); + } catch (KeyStoreException e) { + FRUtils.FRLogInfo("createHttpClientException:"+e.getMessage()); + } + + CloseableHttpClient httpclient = null; + + if(cookies != null && cookies.length > 0){ + CookieStore cookieStore = cookieToCookieStore(cookies); + + httpclient = HttpClients.custom().setSslcontext(sslContext). + setSSLHostnameVerifier(new NoopHostnameVerifier()).setDefaultCookieStore(cookieStore).build(); + } + else{ + httpclient = HttpClients.custom().setSslcontext(sslContext). + setSSLHostnameVerifier(new NoopHostnameVerifier()).build(); + } + + return httpclient; + } + + /** + * cookies转cookieStore + * @param cookies + * @return + */ + public static CookieStore cookieToCookieStore(Cookie[] cookies){ + CookieStore cookieStore = new BasicCookieStore(); + + if(cookies != null && cookies.length>0){ + for(Cookie cookie : cookies){ + BasicClientCookie cookie1 = new BasicClientCookie(cookie.getName(), cookie.getValue()); + cookieStore.addCookie(cookie1); + } + } + + return cookieStore; + } +} diff --git a/src/main/java/com/fr/plugin/sso/utils/PropertiesUtils.java b/src/main/java/com/fr/plugin/sso/utils/PropertiesUtils.java new file mode 100644 index 0000000..977ba7e --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/utils/PropertiesUtils.java @@ -0,0 +1,41 @@ +package com.fr.plugin.sso.utils; + +import com.fr.io.utils.ResourceIOUtils; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Properties; +import java.util.ResourceBundle; + +public class PropertiesUtils { +// private static final String RESOURCES_PATH = "config"; +// private static ResourceBundle bundle = null; +// +// static { +// bundle = ResourceBundle.getBundle(RESOURCES_PATH); +// } +// +// public static String getProperties(String key){ +// return bundle.getString(key); +// } + + /** + * 获取web-info下的配置文件 + * @param path + * @return + */ + public static Properties getProperties2(String path){ + Properties p = new Properties(); + + try{ + InputStream is = ResourceIOUtils.read("/resources/wz.properties"); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); + p.load(bufferedReader); + }catch(Exception e){ + FRUtils.FRLogInfo("获取配置文件异常"); + } + + return p; + } +} diff --git a/src/main/java/com/fr/plugin/sso/utils/ResponseUtils.java b/src/main/java/com/fr/plugin/sso/utils/ResponseUtils.java new file mode 100644 index 0000000..7cf4f94 --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/utils/ResponseUtils.java @@ -0,0 +1,80 @@ +package com.fr.plugin.sso.utils; + +import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; + +public class ResponseUtils { + private static final int SUCCESS = 200; + private static final int FAILED = -1; + + public static void successResponse(HttpServletResponse res, String body) { + response(res, body, SUCCESS); + } + + public static void failedResponse(HttpServletResponse res, String body) { + response(res, body, FAILED); + } + + private static void response(HttpServletResponse res, String body, int code) { + JSONObject object = new JSONObject(); + PrintWriter pw; + try { + object.put("code", code); + object.put("data", body); + pw = WebUtils.createPrintWriter(res); + } catch (Exception e) { + FineLoggerFactory.getLogger().info(e.getMessage()); + return; + } + res.setContentType("application/json;charset=utf-8"); + String result = object.toString(); + pw.println(result); + pw.flush(); + pw.close(); + } + + public static void response(HttpServletResponse res,JSONObject json){ + PrintWriter pw; + try { + pw = WebUtils.createPrintWriter(res); + } catch (Exception e) { + FineLoggerFactory.getLogger().info(e.getMessage()); + return; + } + res.setContentType("application/json;charset=utf-8"); + String result = json.toString(); + pw.println(result); + pw.flush(); + pw.close(); + } + + public static void setCSRFHeader(HttpServletResponse httpServletResponse){ + httpServletResponse.setHeader("Access-Control-Allow-Origin", "*"); + httpServletResponse.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE,HEAD,PUT,PATCH"); + httpServletResponse.setHeader("Access-Control-Max-Age", "36000"); + httpServletResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,Authorization,authorization"); + } + + public static void responseJsonp(HttpServletRequest req, HttpServletResponse res, JSONObject json){ + PrintWriter pw; + try { + pw = WebUtils.createPrintWriter(res); + } catch (Exception e) { + FineLoggerFactory.getLogger().info(e.getMessage()); + return; + } + res.setContentType("text/javascript;charset=utf-8;charset=utf-8"); + String result = json.toString(); + + String jsonp=req.getParameter("callback"); + + pw.println(jsonp+"("+result+")"); + pw.flush(); + pw.close(); + } +} diff --git a/src/main/java/com/fr/plugin/sso/utils/Utils.java b/src/main/java/com/fr/plugin/sso/utils/Utils.java new file mode 100644 index 0000000..68471ba --- /dev/null +++ b/src/main/java/com/fr/plugin/sso/utils/Utils.java @@ -0,0 +1,92 @@ +package com.fr.plugin.sso.utils; + +import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.CodeUtils; +import com.fr.third.org.apache.commons.codec.digest.DigestUtils; +import sun.misc.BASE64Decoder; +import sun.misc.BASE64Encoder; + +import javax.servlet.http.HttpServletRequest; +import java.io.BufferedReader; +import java.io.IOException; +import java.security.MessageDigest; +import java.util.UUID; + +public class Utils { + + /** + * 判断字符串是否为空 + * @param str + * @return true 空字符串 false 非空字符串 + */ + public static boolean isNullStr(String str){ + return !(str != null && !str.isEmpty() && !"null".equals(str)); + } + + /** + * 判断字符串是否非空 + * @param str + * @return + */ + public static boolean isNotNullStr(String str){ + return !isNullStr(str); + } + + /** + * MD5加密 + * @param str + * @return + */ + public static String getMd5Str(String str) + { + return DigestUtils.md5Hex(str); + } + + + /** + * 获取完整的访问路径 + */ + public static String getAllUrl(HttpServletRequest req, String queryStr){ + String url = req.getRequestURL().toString(); + + if(isNullStr(queryStr)){ + return url; + } + + return url+"?"+queryStr; + } + + /** + * 帆软shaEncode加密 + */ + + public static String shaEncode(String str){ + return CodeUtils.sha256Encode(str); + } + + /** + * 获取uuid + */ + public static String uuid(){ + return UUID.randomUUID().toString(); + } + + public static JSONObject getRequestBody(HttpServletRequest req){ + StringBuffer sb = new StringBuffer(); + String line = null; + try { + BufferedReader reader = req.getReader(); + while ((line = reader.readLine()) != null) + sb.append(line); + } catch (Exception e) { + FRUtils.FRLogInfo("getRequestBody:exception:"+e.getMessage()); + } + //将空格和换行符替换掉避免使用反序列化工具解析对象时失败 + String jsonString = sb.toString().replaceAll("\\s","").replaceAll("\n",""); + + JSONObject json = new JSONObject(jsonString); + + return json; + } +} diff --git a/wz.properties b/wz.properties new file mode 100644 index 0000000..22789d1 --- /dev/null +++ b/wz.properties @@ -0,0 +1,4 @@ +nullTokenRedirectURL=xxx +userNotFoundURL=xxx +noAccessPermissionURL=xxx +frDomain=localhost:8075 \ No newline at end of file diff --git a/使用手册.docx b/使用手册.docx new file mode 100644 index 0000000000000000000000000000000000000000..40cc8162b7b2ebd066f787839471d1a910a8519f GIT binary patch literal 87703 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⎵trw_!W=WY+rmxgyeh9K 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 z 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 Y{^N8L;UBeudT+4|U#EBme*a literal 0 HcmV?d00001