Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HARJA-816 Varmista kirjautumisen signature #3815

Open
wants to merge 73 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
8874e16
Logita cognito tietoja
solita-staskila Jan 27, 2025
a2ea710
Lisää allekirjoitus moduuli Harjaan
solita-staskila Jan 27, 2025
436ae04
Disabloi testejä väliaikaisesti
solita-staskila Jan 29, 2025
a03b8c7
Initial toiminnallisuus Cognito kirjautumisen varmistukseen
solita-staskila Jan 29, 2025
fef9d1f
Siirrä varmistus omaan nimiavaruuteen
solita-staskila Jan 30, 2025
251dfb0
Palauta tyhjä header, jos varmistus epäonnistuu
solita-staskila Jan 30, 2025
d630fb2
Puhdista, ja siivoa funktionimiä
solita-staskila Jan 30, 2025
fdd70a2
Lisää accesstoken käyttäjätunnus GET headereihin
solita-staskila Jan 30, 2025
8f1be03
Logita käyttäjätiedot, sekä access token, jos kirjautuminen epäonnistuu
solita-staskila Jan 30, 2025
554920b
Lisää cachetus public key GET kutsulle, sekä kevennä todennuksen cachea
solita-staskila Jan 30, 2025
11149b3
Passaa kehitysmoodi todennukseen
solita-staskila Jan 30, 2025
c2af717
Älä tee JWT varmistusta kehitysmoodissa
solita-staskila Jan 30, 2025
677830e
Korjaa käyttäjäoikeuden poisto epäonnistuessa
solita-staskila Feb 3, 2025
1077c7b
Lisää muistutus GET headeriin
solita-staskila Feb 3, 2025
b6652a4
JWT signature refaktorointia, nimeämistä, headerit, kommentit
solita-staskila Feb 5, 2025
2395f86
Poista testifunktioita
solita-staskila Feb 5, 2025
7a48e7e
Public avaimen päivitys, korjaa JWT tunnistetietoja, kommentteja, FAT…
solita-staskila Feb 5, 2025
814f931
Poista testikoodia
solita-staskila Feb 5, 2025
2bdf0fb
Lisää header tietoja public key päivitykseen
solita-staskila Feb 5, 2025
aaebd70
Lisää ja passaa JWT iam-data public-key url asetuksiin
solita-staskila Feb 5, 2025
ce6dd82
Passaa jwt public key http palvelimelle
solita-staskila Feb 5, 2025
590e192
Vahvista käyttäjäroolien JWT signature
solita-staskila Feb 5, 2025
9ba3483
Yhdistä public avainten haku yhteen apufunktioon, nimeä muuttujia
solita-staskila Feb 5, 2025
cb4940c
Poista turha muuttuja, funktio, lisää kommentteja
solita-staskila Feb 6, 2025
380f81a
Selvennä cognito header, lisää funktio kommentteja
solita-staskila Feb 6, 2025
b413a76
Selvennä jwt vahvistuksen kommentteja
solita-staskila Feb 7, 2025
85c29fe
Siivoa turha let, logita tunnistetietoja
solita-staskila Feb 24, 2025
5fd3cc2
Merge branch 'develop' into HARJA-816
solita-staskila Feb 25, 2025
0137e40
Revert "Disabloi testejä väliaikaisesti"
solita-staskila Feb 25, 2025
4dab42c
Nimeä kirjautuminen -> Authentikointi
solita-staskila Feb 25, 2025
7993bbd
Korjaa cachetus käyttäjä spesifiseksi, korjaa testejä
solita-staskila Feb 25, 2025
511ac76
Disabloi E2E väliaikaisesti
solita-staskila Feb 25, 2025
e5becbd
Kiekuta integraatio testit väliaikaisesti
solita-staskila Feb 25, 2025
6f8b640
Disabloi testejä, korjaan nämä jälkeen
solita-staskila Feb 25, 2025
e7edcb1
Logita headerit (testi)
solita-staskila Feb 25, 2025
443ba2b
Lisää logitusta virhetilaan
solita-staskila Feb 25, 2025
d642bc5
Korjaa debuggausta
solita-staskila Feb 25, 2025
ec53924
Uudelleenohjaa authentikointi virhe omaan näkymään
solita-staskila Feb 25, 2025
5a11972
Testaa signaturea, kutsu vahvistus devissä
solita-staskila Feb 25, 2025
0c3103b
Lisää vielä logitusta
solita-staskila Feb 25, 2025
771c10c
Logita public key
solita-staskila Feb 25, 2025
2b865cc
Kovakoodaa public key
solita-staskila Feb 25, 2025
bb2507e
Siirrä logitus
solita-staskila Feb 25, 2025
d9e7863
Lyhennä ymäristömuuttujan nimi
solita-staskila Feb 25, 2025
a168c2a
Korjaa parametreja
solita-staskila Feb 25, 2025
f80f7a4
Korjaile cache avainta
solita-staskila Feb 25, 2025
f98ad38
Korjaa cache virheitä, tallenna vain staattinen data
solita-staskila Feb 26, 2025
fb7bc34
Triggeröi manuaalisesti message is manipulated testin ajaksi
solita-staskila Feb 26, 2025
7253407
Lisää varmistus ja häly jos avain puuttuu kokonaan
solita-staskila Feb 26, 2025
e71ee6a
Laita testejä takaisin päälle, ja katso kun maailma palaa :)
solita-staskila Feb 26, 2025
1a929b4
Korjaile parametreja, palauta tunnistetiedot kehitysmoodissa normaalisti
solita-staskila Feb 26, 2025
ed5387a
Korjaile koka kayttajatiedot parametreja
solita-staskila Feb 26, 2025
b98fdf1
Varmista aina payloadin olemassaolo, alusta yksikkötestejä
solita-staskila Feb 26, 2025
4418bfb
Pohja JWT authentikoinnin yksikkötestaukselle & mock encryption
solita-staskila Feb 26, 2025
96f1ce1
Testejä kiinni väliaikaisesti sadge
solita-staskila Feb 26, 2025
04b9cb0
Generoi JWT:t testissä, jotka ehkä jotenkin ihmeellisesti saadan toim…
solita-staskila Feb 27, 2025
31223ca
Korjaa ihmeenkaupalla JWT todennus testi :remonttireiska:
solita-staskila Feb 27, 2025
46a4db4
Token on pakko olla olemassa -> lisää slack-häly + testejä
solita-staskila Feb 27, 2025
e8f0527
Testaa käyttäjän estäminen Harjaan todennuksen epäonnistuessa
solita-staskila Feb 27, 2025
5943d82
'Komponetisoi' jwt testit, nollaa cachet, testaa avaimen puutos
solita-staskila Feb 27, 2025
82b2101
Testaa koko authentikoinnin toiminnallisuus, lisää hälytys
solita-staskila Feb 27, 2025
c649c03
Katso kun maaila palaa laittamalla testit päälle
solita-staskila Feb 27, 2025
c08fefb
Päivitä asetus arvot selvemmiksi, lisää ON/OFF toggle
solita-staskila Feb 28, 2025
93dfb47
Lisää public-key haulle kehitysmoodi, passaa asetukset
solita-staskila Feb 28, 2025
c1dee53
Paranna testejä, lisää avainten päivitys ja blokkaus testit
solita-staskila Feb 28, 2025
6346622
Disabloi testejä väliaikaisesti
solita-staskila Feb 28, 2025
9cfd7f1
Vahvista tokenien olemassaolo varmistukseen
solita-staskila Feb 28, 2025
b624140
Testaa virhettä ja hälytystä
solita-staskila Feb 28, 2025
57a1379
Revert "Testaa virhettä ja hälytystä"
solita-staskila Feb 28, 2025
c14b21a
Revert "Disabloi testejä väliaikaisesti"
solita-staskila Feb 28, 2025
a4bdf47
Merge branch 'develop' into HARJA-816
solita-staskila Feb 28, 2025
7d01e03
Nollaa todennuksen cache testissä, palauta vastaus booleanina
solita-staskila Feb 28, 2025
9948c9f
Katsotaan vain iam-data olemassaolo todennuksessa
solita-staskila Mar 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 26 additions & 10 deletions asetukset.edn
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,18 @@
"oam_groups" "Jarjestelmavastaava"
"oam_organization" "Liikennevirasto"}}

;;
;; Käytetään authentikointiin kun käyttäjä tulee Harjaan
;;
:todennus-varmistus {;; x-iam-data tokenin public key (käyttäjäroolit)
;; x-iam-accesstoken avain tulee payloadin mukana, sille ei tarvitse muuttujaa erikseen
:public-key-url #=(eval (harja.tyokalut.env/env "COGNITO_IAMDATA_KEY" nil))

;; Onko Cognito todennuksen token authentikointi päällä?
;; Voi ongelma tilanteessa laittaa false, jos esim. käyttäjät ei pääse Harjaan ilman hyvää syytä
:todennus-varmistus-paalla? #=(eval (harja.tyokalut.env/env "TODENNUS_VARMISTUS_PAALLA" false))}


:tietokanta {:palvelin #=(eval (harja.tyokalut.env/env "HARJA_TIETOKANTA_HOST" "localhost"))
:tietokanta "harja"
:portti #=(eval (harja.tyokalut.env/env "HARJA_TIETOKANTA_PORTTI" 5432))
Expand Down Expand Up @@ -48,9 +60,9 @@

:itmf
{:url #=(eval (str "tcp://"
(harja.tyokalut.env/env "HARJA_ITMF_BROKER_HOST" "localhost")
":"
(harja.tyokalut.env/env "HARJA_ITMF_BROKER_PORT" 61626)))
(harja.tyokalut.env/env "HARJA_ITMF_BROKER_HOST" "localhost")
":"
(harja.tyokalut.env/env "HARJA_ITMF_BROKER_PORT" 61626)))
:kayttaja (harja.tyokalut.env/env "HARJA_ITMF_BROKER_KAYTTAJA" "admin")
:salasana (harja.tyokalut.env/env "HARJA_ITMF_BROKER_SALASANA" "admin")
:tyyppi :activemq
Expand All @@ -72,7 +84,7 @@

:ulkoinen-sahkoposti {:vastausosoite "[email protected]"
;; :palvelin "solita-service-1.solita.fi"
}
}

:api-sahkoposti {:suora? false ;; Lokaalisti voit lähettää sähköpostit suoraa ilman apia
:vastausosoite "[email protected]"
Expand All @@ -89,8 +101,8 @@
:digiroad {:url "https://api.testivaylapilvi.fi/digiroad/externalApi/"
;; Testipalvelimen avain projektin salaisuuksien jakamiseen tarkoitetussa paikassa
:api-key #=(eval (some->
(slurp "../.harja/digiroad-api-key")
(clojure.string/trim-newline)))}
(slurp "../.harja/digiroad-api-key")
(clojure.string/trim-newline)))}

:integraatiot {:paivittainen-lokin-puhdistusaika nil}

Expand Down Expand Up @@ -159,13 +171,13 @@
:yha {:url "https://api.testivaylapilvi.fi/yha/rest/"
:api-key #=(slurp "../.harja/yha-api-key")} ;; Testipalvelimen avain projektin jakamassa LastPass-kansiossa.

:velho {:token-url "https://vayla-velho-stg.auth.eu-west-1.amazoncognito.com/oauth2/token"
:velho {:token-url "https://vayla-velho-stg.auth.eu-west-1.amazoncognito.com/oauth2/token"
:varuste-api-juuri-url "https://apiv2stgvelho.testivaylapilvi.fi"
:varuste-kayttajatunnus "6o9f1j147qvdvo49nufo0fhufp"
:varuste-tuonti-suoritusaika nil
:varuste-salasana #=(eval (some->
(slurp "../.harja/velho-varuste-salasana")
(clojure.string/trim-newline)))
(slurp "../.harja/velho-varuste-salasana")
(clojure.string/trim-newline)))
:oid-tuonti-suoritusaika nil}

;; LinkSMS eli Labyrintti
Expand Down Expand Up @@ -202,7 +214,11 @@
:reittitarkistukset
:tiedostopesula
:replica-db
:sampo}
:sampo
;; Sampoapi, vai apisampo?
;; Ei tartte kehitysmoodissa
:sampo-api
:api-sampo}

:vaylat {:geometria-url "https://extranet.vayla.fi/inspirepalvelu/avoin/wfs?Request=GetFeature&typename=vaylat&OUTPUTFORMAT=application/json"
:paivittainen-tarkistusaika [12 22 00]
Expand Down
4 changes: 4 additions & 0 deletions project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@
;; Pattern match kirjasto
[org.clojure/core.match "1.1.0"]

;; Authentikaatio / kirjautumisen allekirjoituksen varmistus
;; Täältä tulee java kirjaston kautta jwt signaturen vahvistus, joka tehdään käyttäjän tullessa Harjaan
[buddy/buddy-sign "3.5.351"]


;; -- Tietokanta: ajuri, kirjastot ja -migraatiot --
;; Ajuria päivittäessä, muista päivittää myös pom.xml, koska flyway käyttää sitä ajurin versiota
Expand Down
6 changes: 3 additions & 3 deletions src/clj/harja/palvelin/asetukset.clj
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@
"Harja-palvelinasetuksien skeema"
{(s/optional-key :alusta) s/Keyword
(s/optional-key :sahke-headerit) {s/Str {s/Str s/Str}}

(s/optional-key :todennus-varmistus) {:public-key-url s/Str
:todennus-varmistus-paalla? s/Bool}
(s/optional-key :clojure-async-thread-poolin-koko) s/Int

:http-palvelin {:portti s/Int
Expand Down Expand Up @@ -51,8 +52,7 @@
(s/optional-key :glog) {(s/optional-key :url) s/Str
(s/optional-key :from) s/Str
(s/optional-key :to) s/Str
(s/optional-key :q) s/Str
}
(s/optional-key :q) s/Str}
(s/optional-key :jira) [s/Str]}}

(s/optional-key :email) {:taso s/Keyword
Expand Down
1 change: 0 additions & 1 deletion src/clj/harja/palvelin/integraatiot/api/ilmoitukset.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
(ns harja.palvelin.integraatiot.api.ilmoitukset
"Tieliikennelmoitusten haku ja ilmoitustoimenpiteiden kirjaus"
(:require [com.stuartsierra.component :as component]
[harja.palvelin.komponentit.todennus :as todennus]
[org.httpkit.server :refer [with-channel on-close send!]]
[clojure.spec.alpha :as s]
[clj-time.coerce :as c]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
(ns harja.palvelin.integraatiot.api.tyokalut.kutsukasittely
"API:n kutsujen käsittely funktiot"
(:require [cheshire.core :as cheshire]
[harja.palvelin.komponentit.todennus :as todennus]
[taoensso.timbre :as log]
[clojure.walk :as walk]
[clojure.core.async :refer [<! go thread]]
Expand Down
43 changes: 30 additions & 13 deletions src/clj/harja/palvelin/komponentit/http_palvelin.clj
Original file line number Diff line number Diff line change
Expand Up @@ -339,18 +339,22 @@
"Palauttaa headerit sellaisenaan, mikäli headereiden joukosta löytyy jokin OAM_-headeri.
Muutoin, yritetään purkaa AWS Cognitolta saadut headerit, jotka mapataan OAM_-headereiksi ja lisätään
muiden headereiden joukkoon."
[handler]
[handler kehitysmoodi todennus-varmistus]
(fn [req]
(->
(assoc req :headers (todennus/prosessoi-kayttaja-headerit (:headers req)))
(assoc req :headers (todennus/prosessoi-kayttaja-headerit (:headers req) kehitysmoodi todennus-varmistus))
(handler))))

(defn wrap-with-common-wrappers
"Käärii HTTP-pääkäsittelijän ympärille yleisiä wrappereita."
[handler]
(-> handler
(cookies/wrap-cookies)
(wrap-prosessoi-headerit)))
([handler]
(wrap-with-common-wrappers handler true nil))
([handler kehitysmoodi]
(wrap-with-common-wrappers handler kehitysmoodi nil))
([handler kehitysmoodi todennus-varmistus]
(-> handler
(cookies/wrap-cookies)
(wrap-prosessoi-headerit kehitysmoodi todennus-varmistus))))

(defn- jaa-todennettaviin-ja-ei-todennettaviin [kasittelijat]
(let [{ei-todennettavat true
Expand All @@ -365,8 +369,7 @@
kutsu)))

(defrecord HttpPalvelin [asetukset kasittelijat sessiottomat-kasittelijat
http-server kehitysmoodi
mittarit]
http-server kehitysmoodi todennus-varmistus mittarit]
component/Lifecycle
(start [{metriikka :metriikka db :db :as this}]
(when metriikka
Expand Down Expand Up @@ -418,15 +421,20 @@
kehitysmoodi
anti-csrf-token-secret-key))
(conj ui-kasittelija))]
(reitita (todennus/todenna-pyynto todennus req) todennettavat-kasittelijat
(reitita (todennus/todenna-pyynto
todennus
req
kehitysmoodi) todennettavat-kasittelijat
{:vaadi-oikeustarkistus? true}))))
(catch [:virhe :todennusvirhe] _
{:status 403 :body "Todennusvirhe"})

(finally
(metriikka/muuta! mittarit
:aktiiviset_pyynnot dec
:pyyntoja_palveltu inc)))))
:pyyntoja_palveltu inc))))
kehitysmoodi
todennus-varmistus)

{:port portti
:thread (or (:threads asetukset) 8)
Expand Down Expand Up @@ -498,9 +506,18 @@
(fn [kasittelijat]
(filterv #(not= (:nimi %) nimi) kasittelijat)))))

(defn luo-http-palvelin [asetukset kehitysmoodi]
(->HttpPalvelin asetukset (atom []) (atom []) (atom nil) kehitysmoodi
(metriikka/luo-mittari-ref mittarit-alkuarvo)))
(defn luo-http-palvelin
([asetukset kehitysmoodi]
(luo-http-palvelin asetukset kehitysmoodi nil))
([asetukset kehitysmoodi todennus-varmistus]
(->HttpPalvelin
asetukset
(atom [])
(atom [])
(atom nil)
kehitysmoodi
todennus-varmistus
(metriikka/luo-mittari-ref mittarit-alkuarvo))))

(defn julkaise-reitti
([http nimi reitti] (julkaise-reitti http nimi reitti true))
Expand Down
Loading
Loading