Keycloak bilan Identity Server sozlash
Kirish
Bugungi raqamli landshaftda applicationlar va resurslarga kirishni ta'minlash muhim ahamiyatga ega. Identity and Access Management(IAM) yechimlari foydalanuvchi identifikatorlarini boshqarish, foydalanuvchilarni autentifikatsiya qilish va tashkilot ekotizimidagi turli resurslarga kirishni nazorat qilishda muhim rol o'ynaydi. Keycloak, open source IAM yechimi identifikatsiya va kirishni boshqarishni boshqarish uchun mustahkam va keng qamrovli platformani taklif etadi.
Keycloak foydalanuvchilarga bir marta autentifikatsiya qilish va bir nechta applicationlarga muammosiz kirish imkonini beruvchi single sign-on(SSO) yechimi sifatida xizmat qiladi. Red Hat tomonidan ishlab chiqilgan Keycloak OpenID Connect, OAuth 2.0 va SAML (Security Assertion Markup Language) kabi turli xil autentifikatsiya protokollarini qo'llab-quvvatlaydi, bu uni ko'p qirrali va turli xil foydalanish holatlariga moslashtiradi.
Keycloak-ning asosiy afzalliklaridan biri uning moslashuvchanligi(flexibility) va kengaytirilishidir(extensibility). U LDAP (Lightweight Directory Access Protocol) yoki Active Directory kabi mavjud identity storelari bilan birlashtirilishi mumkin, bu esa tashkilotlarga mavjud user repositoriyalaridan foydalanish imkonini beradi. Bundan tashqari, Keycloak user federation, fine-grained access control, multi-factor authentication va centralized user management kabi boy xususiyatlar to'plamini taklif etadi, bu esa tashkilotlarga xavfsizlik siyosatini samarali qo'llash imkonini beradi.
Ushbu texnik qo'llanma Ubuntu 20.04 serverida Keycloakni o'rnatish bo'yicha keng qamrovli ko'rsatmalar berishga qaratilgan bo'lib, o'rnatish, sozlashni qamrab oladi. Ushbu qo'llanmaga amal qilish orqali admin/devopslar va dasturchilar o'z applicationlari xavfsizligini oshirish hamda foydalanuvchilari uchun autentifikatsiya va avtorizatsiya jarayonlarini soddalashtirish uchun Keycloak quvvatidan foydalanishlari mumkin.
Ishni boshlash
Ushbu amaliyotni amalga oshirish uchun bizga quyidagi minimum server talablaridagi server kerak bo'ladi.
Minimum Server talabi
OS | RAM | CPU | Xotira | Static IP |
---|---|---|---|---|
Ubuntu 20.04 | 8GB | 8 core | 50GB | Ha kerak |
Keycloak o'rnatish
Keycloak o'rnatishni biz ikki qismga bo'ldik ya'ni keycloak 16chi versiyagacha o'rnatish bosqacha bo'lgan va 17chi versiyadan boshlab o'rnatishdan katta o'zgarishlar bo'lgan shuning uchun biz 16 versiyagacha bo'lgan keycloak uchun alohida va 17dan boshlangan keycloak uchun boshqa o'rnatish qo'llanmasini yozdik. Keyclok versiyani loyihangi talablari yoki boshqa bo'gliklar orqali tanlaysiz.
16-chi versiyagacha
Ushbu o'rnatish 16-chi versiyagacha bo'lgan keycloak uchun o'rnatish qo'llanmasi va biz bunda keycloak 15.0.0 versiyani o'rnatamiz.
1-> Serverni yangilab kerali dasturlarni o'rnatib olamiz.
sudo apt update && sudo apt upgrade -y
sudo apt install git nano zip unzip wget apt-transport-https gnupg lsb-release -y
2-> Keycloak ishlashi uchun OpenJDK 17 talab qilinadi. Quyidagi buyruq yordamida OpenJDK 17ni o'rnataib olamiz.
sudo apt install openjdk-17-jre openjdk-17-jdk -y
OpenJDK 17 o'rnatilgani quyidagi buyruq orqali tekshirib ko'rishingiz
java -version
Terminalda quyidagi natija chiqishi kerak
openjdk version "17.0.9" 2023-10-17
OpenJDK Runtime Environment (build 17.0.9+9-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 17.0.9+9-Ubuntu-120.04, mixed mode, sharing)
3-> Ushbu amaliyotda biz source code orqali Keycloak 15.0.0 versiyasni ubuntu 20.04 serverga o'rnatamiz. Buning uchun keycloak source kodlarini serverimiz /opt
papkasiga yuklab olamiz va arxivdan chiqaramiz. Rasmiy Keycloak Downloads (opens in a new tab) sahifasi.
cd /opt
sudo wget https://github.com/keycloak/keycloak/releases/download/15.0.0/keycloak-15.0.0.tar.gz
4-> Yuklab olgan keycloak source kodlarni .tar arxivini arxivdan chiqarib olamiz. Keycloak source kodlarini arxivdan chiqarib olganimizda source kodlar keycloak-15.0.0 papkasida bo'ladi biz uni nomini keycloakga o'zgartiramiz. Biz /opt papkasi ichidamiz.
sudo tar -xvzf keycloak-15.0.0.tar.gz
sudo mv keycloak-15.0.0 /opt/keycloak
4-> Xavfsizlik nuqtai nazaridan Keycloak dasturini root useri bilan ishga tushirmasligimiz kerak. Shuning uchun keycloakga linux user va group yaratib olamiz va keycloak home ishlaydigan directoriyasini /opt/keycloak
qilib qo'yamiz.
sudo groupadd keycloak
sudo useradd -r -g keycloak -d /opt/keycloak -s /sbin/nologin keycloak
5-> Keycloak ishlashi uchun keycloak userga /opt/keycloak directoriyasi ownershiplikni beramiz va /opt/keycloak/bin/ directoriyaga executable permissionlarni beramiz.
cd /opt
sudo chown -R keycloak: keycloak
sudo chmod o+x /opt/keycloak/bin/
6-> Keycloakni SystemD orqali boshqarish uchun /etc directoriyada keycloak uchun konfiguratsiya directoriya ochib olamiz.
cd /etc/
sudo mkdir keycloak
7-> /opt/keycloak/docs/contrib/scripts/systemd/wildfly.conf directoriyadagi wildfly.conf
faylini keycloak.conf
nomi bilan /etc/keycloak/ directoriyaga ko'chiramiz.
sudo cp /opt/keycloak/docs/contrib/scripts/systemd/wildfly.conf /etc/keycloak/keycloak.conf
8-> Keycloakni ishga tushirish scriptni(launch.sh) faylini /opt/keycloak/docs/contrib/scripts/systemd/ directoriyadan /opt/keycloak/bin/ directoriyaga ko'chiramiz.
sudo cp /opt/keycloak/docs/contrib/scripts/systemd/launch.sh /opt/keycloak/bin/
Usbu sciptni keycloak user execute qilish uchun keycloak userni owner qilib qo'yamiz.
sudo chown keycloak: /opt/keycloak/bin/launch.sh
6-> launch.sh
sciptda keycloak ishlaydigan directoriyani belgilashimiz kerak.
sudo nano /opt/keycloak/bin/launch.sh
Ya'ni /opt/wildfly
ni /opt/keycloak
ga o'zgartiramiz.
#!/bin/bash
if [ "x$WILDFLY_HOME" = "x" ]; then
WILDFLY_HOME="/opt/keycloak"
fi
if [[ "$1" == "domain" ]]; then
$WILDFLY_HOME/bin/domain.sh -c $2 -b $3
else
$WILDFLY_HOME/bin/standalone.sh -c $2 -b $3
fi
7-> /opt/keycloak/docs/contrib/scripts/systemd/ papkadagi wildfly.service
faylini /etc/systemd/system/ papkaga keycloak.service
nomi bilan nusxalaymiz.
sudo cp /opt/keycloak/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/keycloak.service
8-> keycloak.service
faylini nano matn muharrida ochib quyidagicha o'zgartishlar kiritamiz.
sudo nano /etc/systemd/system/keycloak.service
Dastlab keycloak.service konfiguratsiyamniz quyidagi ko'rinishda bo'ladi
[Unit]
Description=The WildFly Application Server
After=syslog.target network.target
Before=httpd.service
[Service]
Environment=LAUNCH_JBOSS_IN_BACKGROUND=1
EnvironmentFile=-/etc/wildfly/wildfly.conf
User=wildfly
LimitNOFILE=102642
PIDFile=/var/run/wildfly/wildfly.pid
ExecStart=/opt/wildfly/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND
StandardOutput=null
[Install]
WantedBy=multi-user.target
Konfiguratsiyamizni yangilab o'zgarishlarni saqlab chiqamiz.
[Unit]
Description=The Keycloak Server
After=syslog.target network.target
Before=httpd.service
[Service]
Environment=LAUNCH_JBOSS_IN_BACKGROUND=1
EnvironmentFile=-/etc/keycloak/keycloak.conf
User=keycloak
Group=keycloak
LimitNOFILE=102642
PIDFile=/var/run/keycloak/keycloak.pid
ExecStart=/opt/keycloak/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND
StandardOutput=null
[Install]
WantedBy=multi-user.target
9-> systemd manager orqali daeon-reload berib keycloakni enable qilib qo'yamiz yani server o'chib yonganidan keyin avtomatik ishga tushishi uchun.
sudo systemctl daemon-reload
sudo systemctl enable keycloak
10-> Keycloakni start berib ishga tuhsiramiz va statusini ko'ramiz.
sudo systemctl start keycloak
sudo systemctl status keycloak
11-> Keycloakni muvaffaqiyatli ishga tushirganimizdan keyin brauzer orqali serverimiz public IPsi bilan 8080 portiga kirganimizda bizda Keycloak oynasi ochilishi kerak.
Keycloak hech qanday birinchi Administrator user bilan kelmaydi shuning uchun biz uni o'zimiz yaratib olishimiz kerak. Biz hozir localhost:8080 qilib kirmaganimiz uchun UI orqali admni user yarata olmaymiz shuning uchun add-user-keycloak.sh
scripti orqali admin user yarataib olamiz.
sudo /opt/keycloak/bin/add-user-keycloak.sh -r master -u admin -p adminparol239dw2
Keycloak admin user yaratib olganimzidan keyin avtomatik master realm bilan birga keladi.
11-> Keycloakga restart berib brauzer orqali qayta kiramiz.
sudo systemctl restart keycloak
Okey bizda Administration Console ochildi va kirganimizda quyidagi oyna ochilishi kerak
Bizda muammo chiqdi yani biz http bilan kiryapmiz keycloak esa SSL https talab qilyapti. Buning uchun keycloakga domen ulab nginx orqali reverse proxy qilib expose qilishimiz mumkin yoki Kyecloakdan SSL verificationni o'chirib qo'yishimiz kerak. Keling keycloakdan SSL verificationni o'chirib qo'yamiz.
sudo /opt/keycloak/bin/kcadm.sh config credentials \
--server http://localhost:8080/auth \
--realm master \
--user admin \
--password adminparol239dw2
sudo /opt/keycloak/bin/kcadm.sh update realms/master -s sslRequired=NONE
Keycloakga restart beramiz.
sudo systemctl restart keycloak
Keycloakga brauzerdan qayta kirib Administration Consolega kirganimzida bizda quyidagi login qilib kirish uchun oyna ochiladi.
Login qilib kiramiz birinchi oyna.
Okey bizda hammasi ishlayapti biz muvaffaqiyatli keycloak 15.0.0 o'rnatdik va dastlablki sozlashni yakunladik.