Keycloak

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

TODO

Tõõpõhimõte

TODO

Käesolevas tekstis kirjeldatakse Wordpress ja Keycloak kasutamist Dockerhost keskkonnas

  • wordpress v. 5.9
  • keycloak v. 12.x
  • wordpress miniorange oauth-keycloak pluginat - tundub, et tasuta juhul on võimalik samaaegselt kasutada ühte iDP teenusepakkujat st keycloak'i

Seadistamisel tuleb Wordpress ja Keycloak webgui liideste vahel mõned korrad vaheldumisi liikuda, see võib esmapilgul tunduda kohmakas ja segadust tekitav. Seejuures teatud 'Test xxx' nuppude pressimine ei anna ootuspärast tulemust. Tundub, et seda saab ignoreerida.

Wordpress paigaldamine

Docker-compose seadistamine

root@docker:~/wp2# pwd
/root/wp2

root@docker:~/wp2# cat docker-compose.yml 
version: '3.1'

services:

  wordpress:
    image: wordpress:5.9.3-php8.1-apache
    restart: always
    ports:
      - 8686:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: parool
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress2:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: parool
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db2:/var/lib/mysql

volumes:
  wordpress2:
  db2:

kus

  • TODO

Esmakordne käivitamine

root@docker:~/wp2# docker-compose up

Tulemusena töötavad kaks konteinerit: mysql ja wordpress. Aadressil http://192.168.110.221:8686/ on ligipääsetav Wordpress installer, see tuleb läbida järgmisena. Kokkuvõttes on kasutada paigaldatud ja seadistatud Wordpress rakendus tavalisel viisil.

Järgmised käivitamised

TODO

Keycloak paigaldamine

Variatsioon 1

Keycloak v. 12.0 paigaldamiseks ja käivitamiseks sobib öelda

 # docker run -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=parool -p 8080:8080 --name=keycloak jboss/keycloak:12.0.4

kus

  • TODO

Tulemusena saab logida sisse aadressil http://192.168.110.221:8181/auth/

Administration Console

Variatsioon 2

Kasutada sellist docker-compose seadistusfaili

version: '2'

services:
  postgres:
    image: postgres:13.2
    restart: unless-stopped
    environment:
      POSTGRES_DB: db_kc
      POSTGRES_USER: user_kc
      POSTGRES_PASSWORD: password_kc
    networks:
      - local-keycloak

  keycloak:
    depends_on:
      - postgres
    container_name: local_keycloak
    environment:
      DB_VENDOR: postgres
      DB_ADDR: postgres
      DB_DATABASE: db_kc
      DB_USER: user_kc
      DB_PASSWORD: password_kc
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: parool
    image: jboss/keycloak:12.0.4
    ports:
      - "8484:8080"
    restart: unless-stopped
    networks:
      - local-keycloak

networks:
  local-keycloak:

kus

  • TODO

Käivitamiseks öelda docker-compose faili kataloogis

 # docker compose up

Tulemusena tekib kaks konteinerit. Kui brauseriga pöörduda keycloak haldusliidese poole, saab teate

We are sorry…
HTTPS required

Selle vastu aitab öelda keycloak konteineri sees

docker exec -it {containerID} bash
cd /opt/jboss/keycloak/bin
./kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin
./kcadm.sh update realms/master -s sslRequired=NONE

Kusjuures pärast tuleb analoogselt öelda update käsk kasutades lisatud wordpress kasutajate autentimisega tegeleva realm nime.

Wordpress ja Keycloak integratsioon

Wordpress ja Keycloak integratsioon toimub webgui liidestes.

Keycloak ettevalmistamine

TODO

Lisada uus Realm

  • Add realm - 'realm_wp2'
  • Roles -> Add Role -> 'editor'
  • Users -> Add user -> Username - priit, Email - priit@xxx, Fist Name - xxx Last Name - xxx
  • Users -> priit -> Credentials -> Password - xxx, Password Confirmation - xxx, Temporary - off
  • Users -> priit -> Role Mapping -> lisada kasutajale 'editor' roll
  • Groups -> Add new -> 'group_wp2'
  • User -> Groups -> lisada kasutajale grupp 'group_wp2'
  • Client -> Add Client -> Client ID - 'client_wp2', Client Protocol - 'openid-connect'
  • Client -> 'client_wp2' -> Settings -> Access-Type - confidential
  • Client -> 'client_wp2' -> Settings -> Valid Redirect URIs - see väärtus vaadatakse Wordpress 'Callback URL' lahtrist (vt 'Wordpress ettevalmistamine' punkti) -> Save
  • Client -> 'client_wp' -> Settings -> Mappers -> Name - mapper_wp2, Mapper Type - Group Membership, Full group path - off, Add to ID token - off, Add to access token - off -> Save

Tulemusena on kasutada kaks keycloak webgui liidest

Seejärel jätkata Wordpress plugin seadistamist.

Wordpress ettevalmistamine

oauth plugin lisamiseks on sobiv avada

Plugins -> Add New -> 'OAuth Single Sign On – SSO (OAuth Client) by miniOrange' -> Install Now, Activate, otsida keycloak ja lisada

Wordpress keycloak plugin seadistamine

  • Setting up a Relying Party -> Callback URL - wordpress ütleb, et see on 'http://192.168.110.221:8686' ja see väärtus kopeeritakse Keycloak webgui liideses asukohta 'Valid Redirect URIs'

Peale Keycloak ettevalmistamist jätakase Wordpress plugin seadistamist

ning

  • Client Credentials Setup -> Client ID - client_wp2
  • Client Credentials Setup -> Client Secret - vaadata keycloak juures avades Client -> 'client_wp2' -> Settings -> Credentials - Secret
  • Client Credentials Setup -> Client Scopes - openid, email, profile (default)
  • pressida Finish

Seejärel pressida WP plugin webgui liideses

  • Attribute/Role Mapping -> Username - 'name' -> Save

Tulemusena peab saama worpress webgui peale sisse logida keycloak kasutajana

Probleemid

  • väljalogimine ei tööta - välja logimiseks sobib esmalt kustutada Keycloak webgui liideses kasutaja sessioon (Users -> priit -> Sessions -> delete) ja seejärel wp webgui liideses Logout

Märkused

  • kui juba töötavas süsteemis ringi klõpsida, siis mõned kohad, mis esmase seadistamise käigus ei paistnud töötavat, on hakanud käima nt
WP -> Plugins -> miniOrange -> Configure OAuth -> Attribute/Role Mapping -> Username - saab valida manual ja auto mode vahel, auto mode puhul on näha dropdown nimekirja võimalike väärtustega

Kasulikud lisamaterjalid