Membuat Token JWT untuk Embed Tableau View

Tableau adalah salah satu tools yang dapat membantu kita untuk menyajikan data secara visual. Banyak pilihan visualisasi data yang bisa digunakan ketika bekerja dengan Tableau.

Nah! Tidak hanya itu, hasil dari olahan data di Tableau bisa disajikan ke halaman web menggunakan teknik embed. Untuk resource yang bersifat publik, kita bisa langsung menyajikannya pada web lain dengan cara menyalin kode embed yang didapat dari dashboard. Sedangkan untuk resource yang dibuat dalam mode privat juga bisa ditampilkan pada halaman web lain namun ketika seseorang ingin mengaksesnya harus melakukan login terlebih dahulu.

Namun tak perlu khawatir. Tableau memberikan opsi agar pengunjung yang akan mengakses resource yang diembed itu tanpa perlu login. Caranya dengan menambahkan atribut token dengan format JWT pada kode embed tersebut.

Membuat & Mengaktifkan Connected Apps

Hal yang perlu disiapkan sebelum bisa menggunakan JWT adalah perlu membuat Connected Apps dan mengubah statusnya menjadi enable. Untuk membuatnya, kita perlu masuk ke dashborad Tableau kemudian pilih menu Settings. Pada halaman Settings, pilih tab Connected Apps.

Membuat connected apps di Tableau
Gambar1: Membuat connected apps di Tableau

Isikan nama Connected Apps, Project yang akan digunakan, dan domain yang diijinkan untuk mengakses resource pada project-project yang disambungkan melalui Connected Apps. Setelah Connected Apps berhasil dibuat, selanjutnya adalah mengambil Secret ID, Secret Value, dan Client ID. Ketiganya akan kita gunakan untuk membuat token JWT.

Ketiga data tersebut bisa didapatkan melalui halaman detail Connected Apps. Caranya dengan klik nama Connected Apps yang baru saja dibuat. Selanjutnya perhatikan gambar di bawah ini untuk memahami penggunaan ketiganya pada variabel PHP.

Gambar 2: Kredensial Connected Apps Tableau

Cara Membuat Token JWT di PHP

Pada kesempatan kali ini, token JWT akan dibuat menggunakan library firebase/php-jwt yang bisa diinstall melalui composer. Cara menginstallnya melalui composer bisa dilihat seperti di bawah ini:

composer require firebase/php-jwt

Setelah dependensi firebase/php-jwt diinstall, selanjutnya kita bisa menyiapkan data yang dibutuhkan dari Dashboar Tableau.

Buat variabel untuk menyimpan data kredensial Connected Apps yang telah diambil dashboard Tableau. Lihat gambar 2. variabel-variabel tersebut dibuat dengan nama berikut:

$secretID = “SECRET_ID";
$secretValue = “SECRET_VALUE";
$clientID = “CLIENT_ID";

Sesuai dokumentasi Tableau, algoritma yang didukung untuk pembuatan JWT ini adalah HS256. Deklarasikan variabel untuk algoritma tersebut seperti di bawah ini:

$algorithm = "HS256";

Buat variabel $headers yang berisi kid dan iss.

$headers = [
            'kid' => $secretID,
            'iss' => $clientID
        ];

Selanjutnya buat payload data yang akan digunakan sebagi body.

$issuedAt = new \DateTimeImmutable();
        $payload = [
            'iss' => $clientID,
            "exp" => $issuedAt->modify('+10 minutes')->getTimestamp(),
            "jti" => now()->timestamp,
            "aud" => "tableau",
            "sub" => "USERNAME@TABLEAU",
            "scp" => ["tableau:views:embed", "tableau:views:embed_authoring"]
        ];

Perhatikan pada bagian sub yang berisi USERNAME@TABLEAU. Bagian ini perlu diganti dengan username atau email yang digunakan untuk login pada akun Tableau.

Bagian scp atau scope berisi dua buah nilai yaitu:

  • tableau:views:embed untuk embed visualisasi data
  • tableau:views:embed_authoring untuk embed data yang bisa diedit secara langsung oleh explorer atau akun yang memiliki akses untuk mengedit.

Terakhir, kita generate JWT menggunakan librari firebase/php-jwt menggunakan kode di bawah ini:

return (string) JWT::encode($payload, $secretValue, $algorithm, null, $headers);

Token yang telah digenerate librari ini selanjutnya bisa digunakan untuk mengembed view Tableau di website tanpa meminta pengunjung untuk login terlebih dahulu. Cara embed view Tableau menggunakan token ini akan dibahas pada artikel berikutnya. Jika ada pertanyaan terkait pembahasan ini bisa langsung menghubungi penulis melalui kontak yang tersedia pada author box di bawah.

Photo of author

Ahmad Budairi

Ahmad Budairi, S.Pd. | Seorang Web Developer sekaligus kader Gerakan Pemuda Ansor yang sangat suka menulis artikel. Saya di sini akan lebih banyak menulis seputar Laravel, vue, vuetify, inertiajs, dan hal lain yang berhubungan dengan web development.Kontak: budairi.contact[et]gmail[dot]com