+
This commit is contained in:
@ -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 🚀
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
____
|
||||
|
||||
@ -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> 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)) {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user