Bu hatayı yarattığınız yeni bir bölge yüzünden alıyorsanız
Yeniden yönlendirildiğiniz URL'de (bu URL için Chrome geliştirme araçlarına bakmanız gerekebilir), bölgeyi master
yeni oluşturduğunuzdan değiştirin ve kullanmıyorsanız https
, redirect_uri'nin de kullandığından emin olun http
.
Bu hatayı, Keycloak'ı halka açık bir alanda (localhost değil) kurmaya çalıştığınız için alıyorsanız
Adım 1) Bir MySql veritabanı kurmak için bu dokümantasyonu
izleyin . Resmi belgelere de bakmanız gerekebilir .
Adım 2)
Komutu çalıştırınupdate REALM set ssl_required = 'NONE' where id = 'master';
Not:
Bu noktada, teknik olarak oturum açabilmeniz gerekir, ancak Keycloak'ın 4.0 sürümü, https desteğini henüz kapatmış olsak da yeniden yönlendirme uri'si için https kullanıyor. Keycloak bunu düzeltene kadar, ters bir proxy ile bu sorunu aşabiliriz. Ters proxy, Java anahtar depoları hakkında endişelenmenize gerek kalmadan kolayca SSL / TLS sertifikaları oluşturmak için kullanmak isteyeceğimiz bir şeydir.
Not 2: Keycloak o zamandan beri kendi vekilleriyle çıktı. Bunu henüz denemedim, ancak bu noktada, yönergelerimi izlemeyi bırakıp (keycloak gatekeeper) [ https://www.keycloak.org/downloads.html] 'a göz atmak isteyebilirsiniz . Keycloak Gatekeeper'ı kurmakta sorun yaşıyorsanız, Apache ile bir ters proxy kurmak için talimatlarımı burada tutacağım.
Adım 3) Apache'yi kurun. Apache'yi ters proxy olarak kullanacağız (NGINX'i denedim, ancak NGINX'in bazı sınırlamaları vardı). Bkz yum Apache yükleme (CentOS 7) ve Apache yüklemek apt-get (Ubuntu 16), ya da belirli bir yöne çevirmek için talimatlar.
Adım 4) Apache'yi çalıştırın
Kullanım sudo systemctl start httpd
(CentOS) ya da sudo systemctl start apache2
(Ubuntu)
Kullanım sudo systemctl status httpd
(CentOS) ya da sudo systemctl status apache2
Apache çalışıyorsa (Ubuntu) kontrol etmek. Yeşil metinde kelimeleri görürseniz active (running)
veya son giriş okursa, Started The Apache HTTP Server.
o zaman iyisinizdir.
Adım 5) Ters proxy ile bir SSL bağlantısı kuracağız ve ardından ters proxy http üzerinden keyCloak ile iletişim kuracak. Bu http iletişimi aynı makinede olduğu için hala güvendesiniz. Otomatik yenilenen sertifikaları ayarlamak için Certbot'u kullanabiliriz .
Bu tür şifreleme yeterince iyi değilse ve güvenlik politikanız uçtan uca şifreleme gerektiriyorsa, SSL'yi ters proxy kullanmak yerine WildFly aracılığıyla nasıl kuracağınızı bulmanız gerekecektir .
Not:
Aslında hiçbir zaman https'nin yönetici portalıyla düzgün çalışmasını sağlayamadım. Belki de bu, kullandığım Keycloak 4.0'ın beta sürümündeki bir hata olabilir. SSL seviyesini yalnızca harici istekler için gerektirecek şekilde ayarlayabileceğinizi varsayarsınız, ancak bu işe yaramadı, bu yüzden 2. adımda https'yi hiçbiri olarak ayarladık. Bundan sonra, yönetici ayarlarını yönetmek için bir SSH tüneli üzerinden http'yi kullanmaya devam edeceğiz.
Adım 6)
Siteyi https üzerinden her ziyaret ettiğinizde, http isteklerini otomatik olarak https'ye yönlendirmeye zorlayacak bir HSTS politikasını tetikleyeceksiniz. HSTS kuralını Chrome'dan temizlemek için bu talimatları izleyin ve ardından şimdilik sitenin https sürümünü bir daha ziyaret etmeyin.
Adım 7)
Apache'yi yapılandırın. İlk önce httpd.conf dosyanızın nerede olduğunu bulun . Httpd.conf dosyanız büyük olasılıkla ayrı bir dizinden yapılandırma dosyaları içermektedir. Benim durumumda, tüm yapılandırma dosyamı conf.d
httpd.conf dosyasının bulunduğu klasörün yanında bulunan bir dizinde buldum .
Conf dosyalarınızı bulduğunuzda, değiştirin veya aşağıdaki sanal konak girişlerini conf dosyalarınıza ekleyin. Certbot tarafından oluşturulan halihazırda mevcut olan SSL seçeneklerini geçersiz kılmadığınızdan emin olun. Bittiğinde, yapılandırma dosyanız böyle bir şeye benzemelidir.
<VirtualHost *:80>
RewriteEngine on
#change https redirect_uri parameters to http
RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
RewriteRule . %1redirect_uri=http%2 [NE,R=302]
#uncomment to force https
#does not currently work
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}
#forward the requests on to keycloak
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
RewriteEngine on
#Disable HSTS
Header set Strict-Transport-Security "max-age=0; includeSubDomains;" env=HTTPS
#change https redirect_uri parameters to http
RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
RewriteRule . %1redirect_uri=http%2 [NE,R=302]
#forward the requests on to keycloak
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
#Leave the items added by certbot alone
#There should be a ServerName option
#And a bunch of options to configure the location of the SSL cert files
#Along with an option to include an additional config file
</VirtualHost>
</IfModule>
Adım 8) Apache'yi yeniden başlatın. Kullanım sudo systemctl restart httpd
(CentOS) ya da sudo systemctl restart apache2
(Ubuntu).
Adım 9)
Sunucuda oturum açma şansınız olmadan önce, Keycloak'a http kullanmasını söylediğimizden, güvenli bir şekilde bağlanmak için başka bir yöntem kurmamız gerekiyor. Bu, keycloak sunucusuna bir VPN hizmeti yükleyerek veya SOCKS kullanarak yapılabilir. Bir SOCKS proxy kullandım. Bunu yapmak için önce dinamik bağlantı noktası yönlendirmeyi kurmanız gerekir.
ssh -N -D 9905 user@example.com
Veya Putty ile kurun .
9905 numaralı bağlantı noktasına gönderilen tüm trafik artık bir SSH tüneli aracılığıyla sunucunuza güvenli bir şekilde yönlendirilecektir. Sunucunuzun güvenlik duvarında 9905 numaralı bağlantı noktasını beyaz listeye eklediğinizden emin olun.
Dinamik bağlantı noktası yönlendirme kurulumuna sahip olduğunuzda, tarayıcınızı 9905 numaralı bağlantı noktasında bir SOCKS proxy kullanacak şekilde ayarlamanız gerekecektir . Talimatlar burada .
Adım 10) Artık Keycloak yönetici portalına giriş yapabilmelisiniz. Web sitesine bağlanmak için http://127.0.0.1 adresine gidin ve SOCKS proxy sizi yönetici konsoluna götürür. Sunucunuzun kaynaklarını kullandığı için işiniz bittiğinde SOCKS proxy'sini kapattığınızdan emin olun ve açık tutulursa sizin için daha yavaş bir internet hızına neden olur.
Adım 11) Tüm bunları anlamamın ne kadar sürdüğünü sormayın.