Kedua pilihan merujuk pada algoritma apa yang digunakan penyedia identitas untuk menandatangani JWT. Penandatanganan adalah operasi kriptografi yang menghasilkan "tanda tangan" (bagian dari JWT) yang dapat divalidasi oleh penerima token untuk memastikan bahwa token tersebut belum dirusak.
RS256 (RSA Signature dengan SHA-256 ) adalah algoritma asimetris , dan menggunakan pasangan kunci publik / pribadi: penyedia identitas memiliki kunci pribadi (rahasia) yang digunakan untuk menghasilkan tanda tangan, dan konsumen JWT mendapatkan kunci publik untuk memvalidasi tanda tangan. Karena kunci publik, tidak seperti kunci pribadi, tidak perlu dijaga keamanannya, sebagian besar penyedia identitas membuatnya mudah tersedia bagi konsumen untuk mendapatkan dan menggunakan (biasanya melalui URL metadata).
HS256 ( HMAC dengan SHA-256), di sisi lain, melibatkan kombinasi fungsi hashing dan satu kunci (rahasia) yang dibagi antara dua pihak yang digunakan untuk menghasilkan hash yang akan berfungsi sebagai tanda tangan. Karena kunci yang sama digunakan baik untuk menghasilkan tanda tangan dan untuk memvalidasinya, perhatian harus diberikan untuk memastikan bahwa kunci tersebut tidak dikompromikan.
Jika Anda akan mengembangkan aplikasi yang menggunakan JWT, Anda dapat menggunakan HS256 dengan aman, karena Anda akan memiliki kontrol pada siapa yang menggunakan kunci rahasia. Jika, di sisi lain, Anda tidak memiliki kendali atas klien, atau Anda tidak memiliki cara untuk mengamankan kunci rahasia, RS256 akan lebih cocok, karena konsumen hanya perlu mengetahui kunci publik (dibagi).
Karena kunci publik biasanya tersedia dari titik akhir metadata, klien dapat diprogram untuk mengambil kunci publik secara otomatis. Jika ini masalahnya (seperti halnya dengan pustaka .Net Core), Anda akan memiliki lebih sedikit pekerjaan yang harus dilakukan pada konfigurasi (pustaka akan mengambil kunci publik dari server). Kunci simetris, di sisi lain, perlu ditukar keluar dari band (memastikan saluran komunikasi yang aman), dan diperbarui secara manual jika ada rollover kunci penandatanganan.
Auth0 menyediakan titik akhir metadata untuk protokol OIDC, SAML dan WS-Fed, di mana kunci publik dapat diambil. Anda dapat melihat titik akhir tersebut di bawah "Pengaturan Lanjut" dari klien.
Titik akhir metadata OIDC, misalnya, berbentuk https://{account domain}/.well-known/openid-configuration
. Jika Anda meramban ke URL itu, Anda akan melihat objek JSON dengan referensi https://{account domain}/.well-known/jwks.json
, yang berisi kunci publik (atau kunci) dari akun tersebut.
Jika Anda melihat sampel RS256, Anda akan melihat bahwa Anda tidak perlu mengkonfigurasi kunci publik di mana saja: itu diambil secara otomatis oleh kerangka kerja.