This commit is contained in:
2025-03-01 17:14:23 +05:00
7 changed files with 171 additions and 3 deletions

128
HashiCorp_Vault.md Normal file
View File

@ -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 🚀

View File

@ -4,6 +4,15 @@ ____
Refresh token токен действует 12 часов и за эти 12 часов не реже чем раз в 3 часа нужно обновить Refresh token ну и заодно Access token обновиться. Refresh token токен действует 12 часов и за эти 12 часов не реже чем раз в 3 часа нужно обновить Refresh token ну и заодно Access token обновиться.
Аccess token действует 20 минут (позже уменьшу до 10 минут) и его можно обновить в любое время, если будет просрочен выдаст 401 ошибку. Чтобы время от времени по расписанию не запрашивать обновление токена, Аccess token действует 20 минут (позже уменьшу до 10 минут) и его можно обновить в любое время, если будет просрочен выдаст 401 ошибку. Чтобы время от времени по расписанию не запрашивать обновление токена,
можно сделать обвёртку для 2й отправки запроса, в случае выявления просрочки токена чтобы эта обвёртка отправляла запрос Refresh, а потом обратно в нужное место отправляла запрос. можно сделать обвёртку для 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) 1. [Получить список разрешений для пользователя по Access token](#получить-список-разрешений-для-пользователя-по-Access-token)

View File

@ -11,8 +11,16 @@ issuer:
spring: spring:
application: application:
name: kz_istransit_jwt 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: datasource:
url: jdbc:postgresql://mcp.kz:5432/mcp url: jdbc:postgresql://10.101.1.6:5432/transit
username: igor username: igor
password: VnzbUdcePSLtg22ktz13 password: VnzbUdcePSLtg22ktz13
driver-class-name: org.postgresql.Driver driver-class-name: org.postgresql.Driver

View File

@ -12,7 +12,7 @@ spring:
application: application:
name: kz_istransit_jwt name: kz_istransit_jwt
datasource: datasource:
url: jdbc:postgresql://mcp.kz:5432/mcp url: jdbc:postgresql://10.201.3.36:5432/mcp
username: igor username: igor
password: VnzbUdcePSLtg22ktz13 password: VnzbUdcePSLtg22ktz13
driver-class-name: org.postgresql.Driver driver-class-name: org.postgresql.Driver

View File

@ -1,11 +1,19 @@
#Серверные настройки должны браться с voult
server: server:
port: 8082 port: 8082
ssl: ssl:
enabled: true enabled: true
key-store: classpath:keystore.jks key-store: classpath:keystore.jks
key-store-password: MFNX344yh4 #key-store-password: MFNX344yh4
key-store-type: PKCS12 key-store-type: PKCS12
#server.ssl.key-store-password: MFNX344yh4
spring:
application:
name: org-ccalm-jwt
issuer: issuer:
name: ccalm name: ccalm

11
org_ccalm_jwt_vault.yml Normal file
View File

@ -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

View File

@ -63,6 +63,10 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId> <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-vault-config</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>