Keycloak-autentikaation integrointi Java Swing -sovellukseen
Koivisto, Ossi (2024)
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2024120533446
https://urn.fi/URN:NBN:fi:amk-2024120533446
Tiivistelmä
Opinnäytetyössä tehtiin Keycloak-käyttäjätietojen hallintaratkaisun integraatio Java Swing-käyttöliittymäkirjastolla tehtyyn sovellukseen. Opinnäytetyön tilaajana toimi Cimcorp Oy. Integraatio tehtiin sisäisenä kehitystyönä, jota tultaisiin tulevaisuudessa hyödyntämään asiakasprojekteissa. Toteutuksessa hyödynnettiin jo valmiina olevaa Keycloak-testiympäristöä.
Työssä korvattiin sovelluksessa jo valmiina oleva kirjautumisprosessi uudistetulla ulkoista käyttäjätietojen hallintaratkaisua käyttävällä kirjautumisprosessilla. Työssä muokattiin niin sovelluksen käyttäjälle interaktiivista kirjautumisprosessia, kuin kirjautumisen ohjelmallista käsittelyä. Swing-sovellukseen lisättiin kokonaan uusi selainpohjainen kirjautumisikkuna, jonka tarkoituksena oli mahdollistaa kirjautuminen Keycloak-palvelua ja authorization_code flow-koodivirtaa käyttäen.
Kirjautumisen ohjelmallista osuutta muokattiin käyttämään kirjautumisessa Keycloakin tarjoamia authorization- ja refresh-tokeneita, joista sovellus saa tarvittavat tiedot käyttäjän henkilötietojen ja roolien asettamiseen. Koodivirran asettamien vaatimusten vuoksi työssä ei kuitenkaan ollut mahdollista hakea tokeneita suoraan palvelimelta vaan vaadittiin monimutkaisempi kirjautumisprosessi.
Tokeneista haettavat tiedot olivat kirjautumisen voimassaoloaika, käyttäjän henkilötiedot, käyttäjän roolit ja käyttäjän ryhmät. Sovellukseen lisättiin myös ominaisuudet tokenien validointiin ja niiden uusimiseen käyttöajan päättyessä. Lisäksi sovellukseen luotiin uusia toimintoja Keycloak-palvelimen kanssa kommunikointiin, kuten kirjautumisen tilan tarkistus sekä kirjautumissession aloittaminen ja lopettaminen. Työn vaatimat ominaisuudet testattiin toiminnan varmistamiseksi. Tämän jälkeen projektin vaatimat riippuvuudet tarkistettiin ja projektista luotiin jakelupaketti maven-projektinrakennustyökalulla.
Työssä korvattiin sovelluksessa jo valmiina oleva kirjautumisprosessi uudistetulla ulkoista käyttäjätietojen hallintaratkaisua käyttävällä kirjautumisprosessilla. Työssä muokattiin niin sovelluksen käyttäjälle interaktiivista kirjautumisprosessia, kuin kirjautumisen ohjelmallista käsittelyä. Swing-sovellukseen lisättiin kokonaan uusi selainpohjainen kirjautumisikkuna, jonka tarkoituksena oli mahdollistaa kirjautuminen Keycloak-palvelua ja authorization_code flow-koodivirtaa käyttäen.
Kirjautumisen ohjelmallista osuutta muokattiin käyttämään kirjautumisessa Keycloakin tarjoamia authorization- ja refresh-tokeneita, joista sovellus saa tarvittavat tiedot käyttäjän henkilötietojen ja roolien asettamiseen. Koodivirran asettamien vaatimusten vuoksi työssä ei kuitenkaan ollut mahdollista hakea tokeneita suoraan palvelimelta vaan vaadittiin monimutkaisempi kirjautumisprosessi.
Tokeneista haettavat tiedot olivat kirjautumisen voimassaoloaika, käyttäjän henkilötiedot, käyttäjän roolit ja käyttäjän ryhmät. Sovellukseen lisättiin myös ominaisuudet tokenien validointiin ja niiden uusimiseen käyttöajan päättyessä. Lisäksi sovellukseen luotiin uusia toimintoja Keycloak-palvelimen kanssa kommunikointiin, kuten kirjautumisen tilan tarkistus sekä kirjautumissession aloittaminen ja lopettaminen. Työn vaatimat ominaisuudet testattiin toiminnan varmistamiseksi. Tämän jälkeen projektin vaatimat riippuvuudet tarkistettiin ja projektista luotiin jakelupaketti maven-projektinrakennustyökalulla.