diff --git a/HashiCorp_Vault.md b/HashiCorp_Vault.md new file mode 100644 index 0000000..624b031 --- /dev/null +++ b/HashiCorp_Vault.md @@ -0,0 +1,128 @@ + +Загрузить в 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 fd7cd9c..8ce0786 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,15 @@ ____ Refresh token токен действует 12 часов и за эти 12 часов не реже чем раз в 3 часа нужно обновить Refresh token ну и заодно Access token обновиться. Аccess token действует 20 минут (позже уменьшу до 10 минут) и его можно обновить в любое время, если будет просрочен выдаст 401 ошибку. Чтобы время от времени по расписанию не запрашивать обновление токена, можно сделать обвёртку для 2й отправки запроса, в случае выявления просрочки токена чтобы эта обвёртка отправляла запрос Refresh, а потом обратно в нужное место отправляла запрос. + +Настройки хранятся в HashiCorp Vault и их можно загрузить туда так: + +vault kv put secret/org-ccalm-jwt jwt.secret=my-secret-value db.user=admin db.pass=123456 + + + + + ____ ## Оглавление 1. [Получить список разрешений для пользователя по Access token](#получить-список-разрешений-для-пользователя-по-Access-token) diff --git a/kz_istransit_jwt.yml b/kz_istransit_jwt.yml index c89c450..dca8a68 100644 --- a/kz_istransit_jwt.yml +++ b/kz_istransit_jwt.yml @@ -11,8 +11,16 @@ issuer: spring: application: name: kz_istransit_jwt + cloud: + vault: + uri: http://localhost:8200 # URL твоего Vault + token: hvs.JDIyKgDMagA0WyIhLFQ4mAjZ # Токен доступа (лучше подгружать из ENV) + kv: + enabled: true + backend: secret # Название backend (например, `secret/` в Vault) + default-context: application datasource: - url: jdbc:postgresql://mcp.kz:5432/mcp + url: jdbc:postgresql://10.101.1.6:5432/transit username: igor password: VnzbUdcePSLtg22ktz13 driver-class-name: org.postgresql.Driver diff --git a/kz_istransit_test_jwt.yml b/kz_istransit_test_jwt.yml index 3c9c5b3..77c5683 100644 --- a/kz_istransit_test_jwt.yml +++ b/kz_istransit_test_jwt.yml @@ -12,7 +12,7 @@ spring: application: name: kz_istransit_jwt datasource: - url: jdbc:postgresql://mcp.kz:5432/mcp + url: jdbc:postgresql://10.201.3.36:5432/mcp username: igor password: VnzbUdcePSLtg22ktz13 driver-class-name: org.postgresql.Driver diff --git a/org_ccalm_jwt.yml b/org_ccalm_jwt.yml index 1e1d8ca..1d6bc20 100644 --- a/org_ccalm_jwt.yml +++ b/org_ccalm_jwt.yml @@ -1,11 +1,19 @@ +#Серверные настройки должны браться с voult + server: port: 8082 ssl: enabled: true key-store: classpath:keystore.jks - key-store-password: MFNX344yh4 + #key-store-password: MFNX344yh4 key-store-type: PKCS12 +#server.ssl.key-store-password: MFNX344yh4 +spring: + application: + name: org-ccalm-jwt + + issuer: name: ccalm diff --git a/org_ccalm_jwt_vault.yml b/org_ccalm_jwt_vault.yml new file mode 100644 index 0000000..758d7dd --- /dev/null +++ b/org_ccalm_jwt_vault.yml @@ -0,0 +1,11 @@ +spring: + application: + name: org-ccalm-jwt + cloud: + vault: + uri: http://localhost:8200 # URL твоего Vault + token: my-root-token # Токен доступа (лучше подгружать из ENV) + kv: + enabled: true + backend: secret # Название backend (например, `secret/` в Vault) + default-context: application diff --git a/pom.xml b/pom.xml index a7f6296..3a2ea50 100644 --- a/pom.xml +++ b/pom.xml @@ -63,6 +63,10 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.springframework.cloud + spring-cloud-starter-vault-config + org.postgresql postgresql