Ten krok jest najważniejszym podczas budowania aplikacji, o którym nie możesz zapomnieć lub którego nie możesz pominąć. Jeśli nie podejmiesz żadnych działań i od razu wdrożysz aplikację na serwer produkcyjny narażasz siebie np. na skasowanie / zmianę bazy danych bez twojej wiedzy i zgody.
Ten artykuł opisuje w jaki sposób zabezpieczyć aplikację w produkcji, znajdziesz tu informacje:
Ten wpis zawiera informacje w jaki sposób:
* Usunąć funkcjonalność rejestracji użytkownika, * Poprawnie ustawić secret dla tokenu jwt, * Wstrzyknąć ustawiony secret, * Włączyć i skonfigurować CORS (Cross-Origin Resource Sharing).
Przed przystąpieniem do tego kroku powinieneś posiadać aplikację jhipster, która jest już po developmencie logiki biznesowej i czeka na wdrożenie produkcyjne. Skorzystaj z repozytorium i pobierz kod aplikacji. Przełącz się na mastera:
https://gitlab.com/jaktworzycaplikacje.pl/skrotowiec/-/tree/master
1. Usuwanie możliwości rejestracji użytkownika:
Pierwszym i najprostszym krokiem jaki wykonasz będzie zmiana hasła dla konta admina. Zmień je natychmiast po wgraniu aplikacji na serwer. Następnie usuń użytkownika o loginie user, nie będzie do niczego potrzebny.
Teraz usuń wszystkie testy oraz metody odpowiedzialne za rejestrację użytkownika.
Lista plików do usunięcia:
* AccountResourceIT.java, * Cały moduł register w webapp
Usuń niepotrzebne wywołania w komponentach:
* navbar (widok html), * home (widok html), * UserService (metoda registerUser), * AccountResource.java (metoda registerAccount), * account.module (usunięcie deklaracji modułu).
2.Ustawianie secretu dla tokenu JWT
Secret jest wstępnie wygenerowany przez jhipstera i ustawiony w pliku:
application-prod.yml
w pozycji:
base64-secret: ODdlYWYzNDIwOTVmMzQ3NzI5ZTExOGFlNWFjM2Q0NTAyMTRhZjBhZmJhNmYxYjg3MzAzYjY2YjhjY2RiYjgxN2Y5ZTY2MGM5OTFlMWVjZTNkNjViODUyYmViYmM0NGRlZjk5MmUwMDdkNTFhN2YyZDQ0Yzc5ZjA4MjgxMmY0MTg=
Nad propertiesem jest szeroki opis w jaki sposób ustawić i przechowywać secret dla tokenu. Ja polecam skorzystanie z jenkinsa do wstrzykiwania wygenerowanego przez Ciebie i zakodowanego secretu. Skorzystaj z dodatku credentials o którym pisałem w wpisie poświęconym konfiguracji jenkinsa:
S2E6 Kurs Jenkins Continuous Deployment dla spring boot & angular.
3. Włączenie i konfiguracja CORS
Cross-Origin Resource Sharing włączamy w pliku:
application.yaml
Konfigurując następujące pola:
cors:
allowed-origins: "tutaj podaj swoje origin"
allowed-methods: "*"
allowed-headers: "*"
exposed-headers: "Authorization,Link,X-Total-Count,X-${jhipster.clientApp.name}-alert,X-${jhipster.clientApp.name}-error,X-${jhipster.clientApp.name}-params"
allow-credentials: true
max-age: 1800
W polu allowed-origins ustaw domenę z jakiej będziesz się łączył do spring boot. Dla skrótowca będzie to:
"https://78.10.223.112:443, https://skrotowiec.elk.pl, https://skrotowiec.elk.pl:443"