Karena trino tidak memiliki fitur authentikasi bawaan, maka kita akan menggunakan pihak ketiga (third party), yang akan digunakan disini keycloak. Keycloak sendiri bisa menggunakan SAML ataupun OpenID, karena trino support OpenID, maka kita akan menggunakan OpenID untuk koneksi antara kedua service ini.

Setting Keycloak 19

Login ke keycloak ke master console sebagai admin

1. Buat Realm Trino
buat realm keycloak

2. Buat client
Klik menu Client -> Create Client
create client di keycloak realms
Yang perlu di isi

Client Type : OpenID Connect
Client ID : trino
Name : Aplikasi Trino

pada capability config, pastikan sesuai dengan

Client authentication : ON
Authorization : ON
Authentication flow : 
 - Standard flow
 - Direct access grants

klik Save

Selanjutnya, pada “Valid redirect URIs” isi dengan https://localhost:8443/*. Akhiri dengan klik Save
tambahkan valid redirect
Bila anda mencoba berbagai services, bisa juga menggunakan *, sebagai nilai “Valid redirect URIs”, dengan begitu URL apa pun akan diterima oleh Keycloak, tapi ingat jangan digunakan di server production.

Klik menu Realm Settings, pada baris Endpoints klik OpenID Endpoint Configuration
Openid endpoint setting dibawah realms setting

Format URL-nya : https://[DOMAIN KEYCLOAK]/realms/[REALMS]/.well-known/openid-configuration
openid config
Copy URL Issuer, contoh https://keycloak.jaranguda.com/realms/app-trino

Klik menu Client, klik trino. Pada tab credential, copy Client secret
keycloak client dan id secret di keycloak

Ketiga informasi ini (issuer, client name dan client secret) akan kita gunakan sewaktu menjalankan aplikasi Trino

Issuer : https://keycloak.jaranguda.com/realms/app-trino
Client : trino
Client secret : JxG5wAdYCv4EvMdXrMyKKYy0GLa5UlTv

Tambah User Keycloak

Saat ini kita belum memiliki user, untuk itu kita akan membuat 1 user untuk login. Selain cara ini kita bisa juga menggunakan user dari LDAP, Google, Twitter dan lain sebagainya, tetapi untuk mempersingkat tutorial ini usernya kita buat manual.

klik menu Users -> Create new user
create user in keycloak
akhiri dengan klik Create

Field yang perlu diisi

Username : jaranguda
Email : blablabla@domain
Email verified : ON
First name : Jaranguda
Last name : Com
Enabled : ON

Klik Credential
set password permanent keycloak
ingat untuk mencentang Temporary Off agar passwordnya permanen.

Install Trino

Untuk memudahkan tutorial ini, kita akan menjalankan trino dengan docker. Agar bisa menggunakan fitur OAUTH, kita harus menggunakan mode SSL/HTTPS/TLS.

Buat folder untuk menyimpan config trino

mkdir /home/jaranguda/trino

1. Generate SSL

openssl req -newkey rsa:2048 -nodes -keyout trino.key -x509 -days 3650 -out trino.crt

Satukan private key dan certificate diatas menjadi satu

cat trino.crt trino.key > /home/jaranguda/trino/trino.cert

2. Config Trino
Buat file /home/jaranguda/trino/config.properties yang berisi

#single node install config
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery.uri=http://localhost:8080
 
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/tmp/trino.pem
 
internal-communication.shared-secret=DtwONqSu2DukReKmJg1uU5XvloM6WAZztvtUTy3r6rcXenPGZUGlflYtE3saEXeyEqQGDKZsH/0azZvMDFhvZscF6Zjfrzxr8YzGkP3WOe4Pj7VbQiKga227lJogUzrfGBfjKyzrq4OpJV51PABcTi/QMmSqt/i8PB/q365PmDzOlGez3D6dM9g+OuFTp2HJcim8uaNHlzyFQmYEo/uszbNcS63xjUCi0Z9rpBbgRBnZtbU4Hf3T+hM8M8I5w/acf9PjUN/O4zdjB/fR8TmD48hckfYvc6IW2LVYM63IF/zBd77U8G6ZEyaJ+EQ08riBRWTv74jkgpEqJPKW5FBHKwC3MBj58FIAeo8l3W6Rxa6QHRSsaVris2MfUK+iqE5/catCQZaqefRa2jIuRG9Yk1SJfu+OYdWTuatJVjk7EYo1Epsfa5AMYprm+zT5uO59AaXlByjOufqlKEUcn1zT8FE1i1+1tfxmY1VFbFMWpatXcfLsVFWHnG3g0QpJ1troxA07qnAKBBnI97i3lGmfCrWHWZfmLj5iDVrUAuQdhHvvzQYiTweYkXQturXsvH69gbInUTlv06U/3VJOgY7ymW6WLMW7eiC21uA6wpLnLryX5etn2fGzBKR41L6VmrxKE1Eob2DD22SWClP5j3dbRaVT5vWwvQov4p3bSJZFSg8=
 
http-server.authentication.type=oauth2
web-ui.authentication.type=oauth2
http-server.authentication.oauth2.issuer=https://keycloak.jaranguda.com/realms/app-trino
http-server.authentication.oauth2.client-id=trino
http-server.authentication.oauth2.client-secret=JxG5wAdYCv4EvMdXrMyKKYy0GLa5UlTv

internal-communication.shared-secret, bisa digenerate dengan openssl rand 512 | base64 -w0
ganti issuer, client-id dan client-secret, sisanya biarkan default. Lalu jalankan trino dengan docker

docker run -p 8443:8443 -v /home/jaranguda/trino/config.properties:/etc/trino/config.properties -v /home/jaranguda/trino.cert:/tmp/trino.pem trinodb/trino

trino berjalan dengan normal

Setelah docker berjalan, buka di browser https:localhost:8443, jangan kaget waktu mendapati error, karena ini untuk tahap development jadi sah-sah saja menggunakan self-signed certificate, untuk production bisa menggunakan SSL gratis seperti Let’s Encrypt, agar tidak muncul peringatan “Warning: Potential Security Risk Ahead” seperti gambar dibawah
unknown root ca self signed
klik Advanced, lalu Accept the Risk and Continue

Anda akan otomatis diarahkan ke halaman sign-in Keycloak
Otomatis diredirect ke keycloak

isi username dan password yang tadi dibuat
input username password keycloak

Tampilan UI trino setelah login
login ke trino dengan keycloak

Leave a comment

Your email address will not be published. Required fields are marked *