DanziAuthUtils.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package com.icontrols.oauth.utils;
  2. import java.io.UnsupportedEncodingException;
  3. import java.security.GeneralSecurityException;
  4. import java.security.NoSuchAlgorithmException;
  5. import java.util.HashMap;
  6. import java.util.Map;
  7. import org.apache.tomcat.util.json.JSONParser;
  8. import org.json.JSONObject;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.http.HttpEntity;
  13. import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
  14. import org.springframework.web.client.RestTemplate;
  15. import com.icontrols.oauth.model.ClientInfo;
  16. import com.icontrols.oauth.model.Token;
  17. import com.icontrols.oauth.repo.ClientInfoRepository;
  18. public class DanziAuthUtils {
  19. private static final Logger logger = LoggerFactory.getLogger(DanziAuthUtils.class);
  20. @Autowired
  21. ClientInfoRepository clientInfoRepo;
  22. public static boolean create(Token newToken, String url)
  23. throws UnsupportedEncodingException, NoSuchAlgorithmException, GeneralSecurityException {
  24. Map<String, Object> body = new HashMap<>();
  25. Map<String, Object> token = new HashMap<>();
  26. token.put("accessToken", newToken.getAccess_token());
  27. token.put("refreshToken", newToken.getRefresh_token());
  28. body.put("id", System.currentTimeMillis() + "");
  29. body.put("type", "CREATE");
  30. body.put("body", token);
  31. logger.info(body.toString());
  32. String complex = JWTUtils.getCmpIpFromToken(newToken.getAccess_token());
  33. String endpoint = "http://" + complex + url + "/accessToken";
  34. HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
  35. factory.setReadTimeout(3000);
  36. factory.setConnectTimeout(3000);
  37. RestTemplate template = new RestTemplate(factory);
  38. HttpEntity<Object> entity = new HttpEntity<Object>(body);
  39. String answer = null;
  40. try {
  41. answer = template.postForObject(endpoint, entity, String.class);
  42. } catch (Exception e) {
  43. return false;
  44. }
  45. logger.info(answer);
  46. JSONObject obj = new JSONObject(answer);
  47. if (!obj.get("result").toString().equalsIgnoreCase("success")) {
  48. return false;
  49. }
  50. return true;
  51. }
  52. public static boolean refresh(String url, Token newToken, String prevToken) {
  53. Map<String, Object> body = new HashMap<>();
  54. Map<String, Object> token = new HashMap<>();
  55. token.put("prevRefreshToken", prevToken);
  56. token.put("newAccessToken", newToken.getAccess_token());
  57. token.put("newRefreshToken", newToken.getRefresh_token());
  58. body.put("id", System.currentTimeMillis() + "");
  59. body.put("type", "REFRESH");
  60. body.put("body", token);
  61. String complex = JWTUtils.getCmpIpFromToken(prevToken);
  62. String endpoint = "http://" + complex + url + "/accessToken";
  63. HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
  64. factory.setReadTimeout(3000);
  65. factory.setConnectTimeout(3000);
  66. RestTemplate template = new RestTemplate(factory);
  67. HttpEntity<Object> entity = new HttpEntity<Object>(body);
  68. String answer = null;
  69. try {
  70. answer = template.postForObject(endpoint, entity, String.class);
  71. } catch (Exception e) {
  72. return false;
  73. }
  74. logger.info(answer);
  75. JSONObject obj = new JSONObject(answer);
  76. if (!obj.get("result").toString().equalsIgnoreCase("success")) {
  77. return false;
  78. }
  79. return true;
  80. }
  81. public static boolean get(String url, String refreshToken) {
  82. Map<String, Object> body = new HashMap<>();
  83. Map<String, Object> token = new HashMap<>();
  84. token.put("refreshToken", refreshToken);
  85. body.put("id", System.currentTimeMillis() + "");
  86. body.put("type", "GET");
  87. body.put("body", token);
  88. String complex = JWTUtils.getCmpIpFromToken(refreshToken);
  89. String endpoint = "http://" + complex + url + "/accessToken";
  90. HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
  91. factory.setReadTimeout(3000);
  92. factory.setConnectTimeout(3000);
  93. RestTemplate template = new RestTemplate(factory);
  94. HttpEntity<Object> entity = new HttpEntity<Object>(body);
  95. String answer = null;
  96. try {
  97. answer = template.postForObject(endpoint, entity, String.class);
  98. } catch (Exception e) {
  99. return false;
  100. }
  101. logger.info(answer);
  102. JSONObject obj = new JSONObject(answer);
  103. if (!obj.get("result").toString().equalsIgnoreCase("success")) {
  104. return false;
  105. }
  106. return true;
  107. }
  108. }