OAuth2 dan OpenID adalah istilah yang sering kita dengar ketika login ke suatu website. OAuth2 merupakan suatu standar yang dirancang untuk website atau aplikasi yang memungkinkan mereka mengakses suatu resource yang terbatas dihosting oleh aplikasi web lain dengan atas nama (on behalf) oleh user mereka. OAuth mengotorisasi client aplikasi atau device untuk mengakses resource berdasarkan token yang didapat dari Authorization Server.

Open ID Connect atau OIDC adalah suatu identity protocol terbuka yang bertugas mengautentikasi dan mengotorisasi OAuth2, pengguna hanya perlu menggunakan akun yang dia miliki saat ini untuk mengakses banyak aplikasi web tanpa perlu berbagi password akun miliknya. Pengguna cukup login melalui OpenID identity provider dan mengasosiasikan email akun dia ke aplikasi web yang biasa dia kunjungi, dengan demikian pengguna hanya perlu login ke identity provider tanpa perlu membagikan user password dan informasi login ke website yang dia kunjungi. Open ID hampir sama dengan OAuth2, Open ID dibangun di atas OAuth2 dan menggunakan ID Token , yaitu suatu token yang berbasis JWT (JSON Web Token). Hal ini memungkinkan mekanisme token dari OpenID bisa digunakan lebih fleksibel untuk berbagai macam app web dan client.

Gambar 1 : Mekanisme protokol Open ID

Mekanisme Open ID dapat dijelaskan sebagai berikut

  • Pengguna membuka website dan tidak dapat mengakses
  • Aplikasi web mengalihkan pengguna ke halaman login identity provider sekaligus mengirimkan client ID dan client secret dari aplikasi web tersebut
  • Pengguna login di halaman login milik identity provider (Misal Microsoft, Google, Facebook)
  • Pengguna sukses login
  • Identity provider mengarahkan pengguna kembali ke halaman milik web aplikasi disertai respon ID Token yang berisi akses token untuk mengakses sesuai dengan client ID aplikasi web yang telah di-request.
  • pengguna mengakses halaman aplikasi web
  • Aplikasi web memvalidasi token ke identity provider, jika token valid maka pengguna dapat mengakses halaman web/resource.

Bagaimana kah caranya membuat open ID sehingga website kita bisa diakses dengan open ID?

Untuk membangun open ID kita perlu membangun suatu identity provider yang menyediakan fungsi validasi token dan login. Kita dapat menginstall server Identity Provider sendiri, atau menyewa penyedia OpenID yang ada. Kita dapat menggunakan server Azure dengan microsoft Entra nya atau menggunakan Google OAuth2.

MEMBUAT OPENID MENGGUNAKAN MICROSOFT ENTRA AZURE

  • Kunjungi https://portal.azure.com dan membuka dashboard azure. Jika belum memiliki akun, bisa terlebih dahulu registrasi free account. Tidak semua berbayar, karena yang akan kita gunakan adalah fitur Microsoft Entra nya. Jangan membuat resource storage atau database karena berbayar, dan itu ditujukan untuk deployment di cloud. Kita hanya butuh fitur Microsoft Entra nya saja.
  • Pada dashboard Portal Azure, pilih Microsoft Entra ID (Dulu namanya adalah Azure AD/Azure Active Directory)
Gambar 2: Dashboard portal azure
  • Jika sudah masuk ke halaman setting Microsoft Entra ID, selanjutnya pilih menu App Registrations yang ada di sebelah kiri
Gambar 3: halaman setting Microsoft Entra ID
  • Klik tombol New Registration yang ada pada sebelah atas , di sini kita akan mendaftarkan aplikasi yang akan kita buat
Gambar 4: halaman App registrations
  • Pada halama register, masukkan nama aplikasi yang akan dibuat. Misalkan nama aplikasinya “asp.net website
  • Untuk supported account type bisa dipilih apakah hanya akun microsoft dari tenant ini saja (hanya domain yang dikelola akun admin saat ini saja), apakah akun yang berasal dari tenant/ perusahaan lain yang berbeda domain bisa mengakses, ataukah dari personal akun. Kita coba pilih menggunakan Account in this organization directory only, yang artinya hanya bisa untuk akun dari directory yang dimiliki saja.
  • Untuk redirect URI ini adalah endpoint pada aplikasi web untuk menerima respon balikan setelah sukses login. Pilih web lalu pilih alamat redirect localhost misalkan https://localhost:10000/signin-oidc
Gambar 5: register new application
  • Jika semua field sudah diisi, klik tombol Register. Setelah sukses tersimpan, maka akan dialihkan ke halaman aplikasi tersebut. Siapkan notepad untuk mencatat Client ID dari aplikasi. Lihat halaman dan cek pada bagian dengan tulisan “Application (client) ID”
Gambar 6: overview new application
  • Pada menu sebelah kiri, klik menu Authentication
  • Di sini untuk mengedit URL yang telah kita daftarkan sebelumnya atau menambahkan URL lain (Biasanya digunakan jika menggunakan domain website yang berbeda atau menggunakan IP Address yang berbeda), sehingga kita bisa menambahkan banyak URL
  • Pada bagian Select the tokens you would like to be issued by the authorization endpoint: centang semua baik Access Token dan ID Token
  • Klik Save
Gambar 7: halaman setting authentication dari aplikasi
  • Pada menu sidebar sebelah kiri, klik menu Certificates & Secrets. Halaman ini untuk membuat client secret dari aplikasi
Gambar 8: halaman setting certificates & secrets
  • Klik tombol [New Client Secret]
  • Pada dialog Add Client Secret, masukan nama token dan lama waktu expirednya. Kita set namanya misalkan “website secret dev” dan expired 24 bulan.
Gambar 9: dialog add a client secret
  • Klik Add. Setelah tersimpan, muncul secret code yang kita buat. Harap langsung catat dan simpan, atau salin terlebih dahulu di notepad, hal ini karena tidak akan ditampilkan lagi ! Segera copy/salin secret code yang ada di kolom Value sebelum hilang.
Gambar 10: client secret
  • Kembali ke halaman Overview. Menu sebelah kiri klik menu Overview. Cari tombol dengan tulisan Endpoints.
Gambar 11: Application overview dengan client ID
  • Klik tombol Enpoints untuk menampilka seluruh enpoint terkait token OpenID/OAuth. Namun yang kita cari adalah url untuk metadata document. Cari field dengan nama Open ID Connect Metadata document, dan salin URL nya ke notepad
Gambar 12: halaman endpoint Open ID
  • Buka URL metadata document tersebut untuk memastikan bisa diakses
Gambar 13: halaman Open ID connect metadata

Nah, sekarang sudah selesai. Kita berhasil memperoleh Client ID, Client Secret , dan url Open ID Metadata document.

,


Leave a Reply

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

Search

Welcome

Bayu Pratama R N is a lonely programmer who is very enthusiastic about .NET. He just try to live a life of a programmer life and write a blog post when he is so sick about love.

Gallery