From 7da4dc698d2b5b250a89c72ae0a5e07eb0679157 Mon Sep 17 00:00:00 2001 From: Igor I Date: Thu, 6 Mar 2025 16:51:07 +0500 Subject: [PATCH] + --- HashiCorp_Vault.md | 128 ------------------ README.md | 4 +- .../java/org/ccalm/jwt/MainController.java | 29 +--- .../java/org/ccalm/jwt/SecurityConfig.java | 2 +- src/main/java/org/ccalm/jwt/tools/Cache.java | 3 +- 5 files changed, 10 insertions(+), 156 deletions(-) delete mode 100644 HashiCorp_Vault.md diff --git a/HashiCorp_Vault.md b/HashiCorp_Vault.md deleted file mode 100644 index 624b031..0000000 --- a/HashiCorp_Vault.md +++ /dev/null @@ -1,128 +0,0 @@ - -Загрузить в HashiCorp Vault настройки можно так: - -```sh -vault kv put secret/org-ccalm-jwt \ -jwt.secret=my-secret-value \ -db.user=admin \ -db.pass=123456 -``` - -Разбор параметров: -1. vault kv put – команда для записи ключей и значений в KV-хранилище Vault. -2. secret/org-ccalm-jwt – путь к секрету. - * secret/ – это backend-хранилище (оно должно быть включено в Vault). - * org-ccalm-jwt – имя секрета, под которым сохраняются параметры. -3. jwt.secret=my-secret-value – ключ jwt.secret со значением my-secret-value. -4. db.user=admin – ключ db.user со значением admin. -5. db.pass=123456 – ключ db.pass со значением 123456. - - -# 🚀 Установка и настройка HashiCorp Vault на Windows - -## 📌 1. Установка HashiCorp Vault - -1. **Скачайте Vault CLI** с официального сайта: - 🔗 [https://developer.hashicorp.com/vault/downloads](https://developer.hashicorp.com/vault/downloads) -2. Распакуйте архив и **добавьте путь к `vault.exe` в `PATH`**: - - Кликните **ПКМ → Этот компьютер → Свойства → Дополнительные параметры системы**. - - В **Переменные среды** добавьте путь к папке с `vault.exe`. -3. Откройте **cmd** или **PowerShell** и проверьте установку командой: - ```sh - vault --version - ``` - Если всё ОК, увидите версию Vault. Примерно такую: Vault v1.18.4 (503be623a3697e8c10c254dc87d26492c46753e1), built 2025-01-29T13:57:54Z - ---- - -## 📌 2. Запуск Vault-сервера (разработческий режим) - -Чтобы локально запустить Vault в **dev-режиме** (без авторизации), выполните: -```sh -vault server -dev -``` -После запуска он покажет **root-токен** (сохраните его!): -```plaintext -Unseal Key: 9OSMJSPNCs9IT/H5OzLz17jW/vogeCAWQbXy2K7LRPQ= -Root Token: hvs.JDIyKgDMagA0WyIhLFQ4mAjZ -``` - -Теперь Vault работает по адресу: -``` -http://127.0.0.1:8200 -``` - ---- - -## 📌 3. Экспорт токена (чтобы не вводить каждый раз) - -Откройте **PowerShell** и выполните: -```sh -$env:VAULT_ADDR="http://127.0.0.1:8200" -$env:VAULT_TOKEN="hvs.JDIyKgDMagA0WyIhLFQ4mAjZ" -``` -(Замените `hvs.JDIyKgDMagA0WyIhLFQ4mAjZ` на свой токен.) - -Теперь можно работать с Vault без ввода токена каждый раз. - ---- - -## 📌 4. Запись значений в Vault на Windows - -Если нужно с версионированием то Используйте команду: -```sh -vault kv put secret/org-ccalm-jwt jwt.secret=my-secret-value db.user=admin db.pass=123456 -``` -Если у вас **KV v1**, используйте: -```sh -vault write secret/org-ccalm-jwt jwt.secret=my-secret-value db.user=admin db.pass=123456 -``` - ---- - -## 📌 5. Проверка сохранённых данных - -Чтобы посмотреть, что записано в Vault: -```sh -vault kv get secret/org-ccalm-jwt -``` -Если всё настроено правильно, вы увидите примерно такой вывод: -```plaintext -====== Metadata ====== -Key Value ---- ----- -created_time 2025-02-24T12:00:00Z -version 1 - -====== Data ====== -Key Value ---- ----- -db.pass 123456 -db.user admin -jwt.secret my-secret-value -``` - ---- - -## 📌 6. Удаление данных из Vault - -Удаление данных: -```sh -vault kv delete secret/org-ccalm-jwt -``` -Полное уничтожение (без возможности восстановления): -```sh -vault kv destroy -versions=1 secret/org-ccalm-jwt -``` - ---- - -## 🎯 Итог -✅ Установили Vault CLI -✅ Запустили Vault сервер (`vault server -dev`) -✅ Экспортировали `VAULT_ADDR` и `VAULT_TOKEN` -✅ Записали настройки в Vault -✅ Проверили данные - -Теперь можно интегрировать Vault в Spring Boot 🚀 - diff --git a/README.md b/README.md index 8ce0786..38a3079 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ Refresh token токен действует 12 часов и за эти 12 ча vault kv put secret/org-ccalm-jwt jwt.secret=my-secret-value db.user=admin db.pass=123456 - - +В базе есть поля такие как e_iin и они записываются так: pgp_sym_encrypt('Мои данные', 'пароль') +Читаются так: select pgp_sym_decrypt(e_name, 'пароль') from main.drivers; ____ diff --git a/src/main/java/org/ccalm/jwt/MainController.java b/src/main/java/org/ccalm/jwt/MainController.java index 72e3bd8..41625de 100644 --- a/src/main/java/org/ccalm/jwt/MainController.java +++ b/src/main/java/org/ccalm/jwt/MainController.java @@ -468,7 +468,7 @@ public class MainController implements ServletContextAware { String sql = """ select - name1 + name from main.get_access_list(:user_id) where @@ -648,7 +648,7 @@ public class MainController implements ServletContextAware { //parameters.addValue("phone",); parameters.addValue("email",newUserModel.getEmail()); parameters.addValue("e_iin",newUserModel.getIin()); //Для ЭЦП это поле обязательно - parameters.addValue("key",newUserModel.getIin()); + parameters.addValue("key",personal_data_key); parameters.addValue("password",password); ret = jdbcTemplate.query(sql, parameters, new DBTools.JsonRowMapper()); @@ -847,7 +847,7 @@ public class MainController implements ServletContextAware { }catch (DataAccessException ex){ String uuid = UUID.randomUUID().toString(); logger.error(uuid,ex); - throw new CustomException(10000, trt.trt("Error_executing_SQL_query"),uuid); + throw new CustomException(10000, trt.trt("Internal_Server_Error"),uuid); } if(json==null) { String msg = trt.trt("Invalid_username_and_or_password"); @@ -1063,8 +1063,8 @@ public class MainController implements ServletContextAware { } }catch (DataAccessException ex){ java.lang.String uuid = UUID.randomUUID().toString(); - logger.error("Error executing SQL query", uuid, ex); - throw new CustomException(10000, trt.trt("Error_executing_SQL_query"),uuid); + logger.error(uuid, ex); + throw new CustomException(10000, trt.trt("Internal_Server_Error"),uuid); }catch (Exception e) { String uuid = UUID.randomUUID().toString(); logger.error(uuid,e); @@ -1240,12 +1240,8 @@ public class MainController implements ServletContextAware { @RequestMapping(value = "/logout",method = {RequestMethod.POST,RequestMethod.GET},produces = "application/json;charset=utf-8") @ResponseBody public String logout(HttpServletResponse response,HttpServletRequest request) { - - //Устанавливает куки setAccessCookie(response,""); - setRefreshCookie(response, request, ""); - return createStrJSONError(0,"",(String)null,(String)null); } //------------------------------------------------------------------------------------------------------------------ @@ -1634,20 +1630,7 @@ public class MainController implements ServletContextAware { throw new CustomException(10000, Collections.singletonList(trt.trt("Please_log_in")),null); } UserDetails userDetails = (UserDetails) authentication.getPrincipal(); - /*if(jwt_a.isEmpty() || countOccurrences(jwt_a, '.')!=2) - { - throw new CustomException(10000, Collections.singletonList(trt.trt("Please_log_in")),null); - } - //Checking the token signature - Jws claims = null; - try { - claims = Jwts.parserBuilder() - .setSigningKey(getPublicKey()) //.setSigningKey(key_a) - .build() - .parseClaimsJws(jwt_a); - } catch (Exception e) { - throw new CustomException(10000, Arrays.asList(trt.trt("Please_log_in"), trt.trt("JWT_token_verification_error")),null); - }*/ + //If this is a repeat authorization, then we inform the client about it String result=null; try(Cache cache = new Cache(redis_host,redis_port,redis_password)) { diff --git a/src/main/java/org/ccalm/jwt/SecurityConfig.java b/src/main/java/org/ccalm/jwt/SecurityConfig.java index 29c8097..db3a193 100644 --- a/src/main/java/org/ccalm/jwt/SecurityConfig.java +++ b/src/main/java/org/ccalm/jwt/SecurityConfig.java @@ -51,7 +51,7 @@ public class SecurityConfig { protected boolean shouldNotFilter(HttpServletRequest request) throws ServletException { String path = request.getRequestURI(); System.out.println(path); // https://127.0.0.1:8082/logout - return path.equals("/") || path.equals("/login") || path.equals("/logout") || path.equals("/create"); + return path.equals("/") || path.equals("/login") || path.equals("/logout") || path.equals("/create") || path.equals("/reset"); } @Override diff --git a/src/main/java/org/ccalm/jwt/tools/Cache.java b/src/main/java/org/ccalm/jwt/tools/Cache.java index 02df6ed..a368cc7 100644 --- a/src/main/java/org/ccalm/jwt/tools/Cache.java +++ b/src/main/java/org/ccalm/jwt/tools/Cache.java @@ -12,7 +12,6 @@ import java.io.IOException; import java.io.InputStream; import java.util.Properties; - public class Cache implements AutoCloseable { private static final Logger logger = LogManager.getLogger(Cache.class); @@ -60,4 +59,4 @@ public class Cache implements AutoCloseable { public void delete(String key) { jedis.del(key.getBytes()); } -} +} \ No newline at end of file