Bagikan melalui


IdentityServer untuk aplikasi yang dijalankan secara cloud-native

Saran

Konten ini adalah kutipan dari eBook, Merancang Aplikasi .NET Cloud Native untuk Azure, tersedia di .NET Docs atau sebagai PDF gratis yang dapat diunduh yang dapat dibaca secara offline.

aplikasi .NET Cloud Native untuk gambar mini sampul Azure eBook.

Duende IdentityServer adalah kerangka kerja untuk membangun server autentikasi yang mematuhi standar OpenID Connect (OIDC) dan OAuth 2.x menggunakan ASP.NET Core.

Ini dirancang untuk menyediakan cara umum untuk mengautentikasi permintaan ke semua aplikasi Anda, entah itu web, native, mobile, atau API endpoint. IdentityServer dapat digunakan untuk mengimplementasikan Single Sign-On (SSO) untuk beberapa aplikasi dan jenis aplikasi. Ini dapat digunakan untuk mengautentikasi pengguna aktual melalui formulir masuk dan antarmuka pengguna serupa serta autentikasi berbasis layanan yang biasanya melibatkan penerbitan, verifikasi, dan perpanjangan token tanpa antarmuka pengguna apa pun. Ini juga dapat bertindak sebagai gateway federasi untuk menyatukan penyedia autentikasi.

IdentityServer dirancang untuk menjadi solusi yang dapat disesuaikan. Setiap instans biasanya disesuaikan agar sesuai dengan organisasi individu atau kebutuhan serangkaian aplikasi.

Skenario aplikasi web umum

Biasanya, aplikasi perlu mendukung beberapa atau semua skenario berikut:

  • Pengguna manusia mengakses aplikasi web dengan browser.
  • Pengguna manusia mengakses API Web back-end dari aplikasi berbasis browser.
  • Pengguna manusia di klien seluler/asli yang mengakses API Web back-end.
  • Aplikasi lain yang mengakses API Web back-end (tanpa pengguna aktif atau antarmuka pengguna).
  • Aplikasi apa pun mungkin perlu berinteraksi dengan API Web lainnya, menggunakan identitasnya sendiri atau mendelegasikan ke identitas pengguna.

Jenis dan skenario aplikasi

Gambar 8-1. Jenis dan skenario aplikasi.

Dalam setiap skenario ini, fungsionalitas yang diekspos perlu diamankan terhadap penggunaan yang tidak sah. Minimal, ini biasanya memerlukan autentikasi pengguna atau prinsipal yang membuat permintaan untuk sumber daya. Autentikasi ini dapat menggunakan salah satu dari beberapa protokol umum seperti SAML2p, WS-Fed, atau OpenID Connect. Berkomunikasi dengan API biasanya menggunakan protokol OAuth 2 dan dukungannya untuk token keamanan. Memisahkan keprihatinan keamanan lintas fungsi yang penting ini dan detail implementasinya dari aplikasi itu sendiri memastikan konsistensi serta meningkatkan keamanan dan pemeliharaan. Mengalihdayakan masalah ini ke produk khusus seperti IdentityServer membantu persyaratan bagi setiap aplikasi untuk menyelesaikan masalah ini sendiri.

IdentityServer menyediakan middleware yang berjalan dalam aplikasi ASP.NET Core dan menambahkan dukungan untuk OpenID Connect dan OAuth 2.x (lihat spesifikasi yang didukung). Dengan menggunakan IdentityServer, organisasi dapat membuat aplikasi ASP.NET Core mereka sendiri menggunakan middleware IdentityServer untuk bertindak sebagai server otorisasi untuk semua protokol keamanan berbasis token mereka. Middleware IdentityServer mengekspos titik akhir untuk mendukung fungsionalitas standar, termasuk:

  • Otorisasi (autentikasi pengguna akhir)
  • Token (meminta token secara terprogram)
  • Penemuan (metadata mengenai server)
  • Info Pengguna (dapatkan informasi pengguna dengan token akses yang valid)
  • Otorisasi Perangkat (digunakan untuk memulai otorisasi alur perangkat)
  • Introspeksi (validasi token)
  • Pencabutan (pencabutan token)
  • Akhiri Sesi (mengaktifkan keluar tunggal di semua aplikasi)
  • Permintaan Otorisasi yang Didorong (untuk proses autentikasi yang lebih aman)

Memulai

IdentityServer tersedia:

Untuk informasi selengkapnya tentang harga, lihat halaman harga produk resmi .

Anda dapat menambahkannya ke aplikasi Anda menggunakan paket NuGet-nya. Paket utamanya adalah IdentityServer, yang telah diunduh lebih dari empat juta kali. Paket dasar tidak menyertakan kode antarmuka pengguna apa pun dan hanya mendukung konfigurasi dalam memori. Untuk menggunakannya dengan database, Anda juga menginginkan penyedia data seperti Duende.IdentityServer.Storage, yang menggunakan Entity Framework Core untuk menyimpan konfigurasi dan data operasional untuk IdentityServer. Untuk antarmuka pengguna, Anda dapat menyalin file dari repositori sampel ke aplikasi ASP.NET Core MVC Anda untuk menambahkan dukungan untuk masuk dan keluar menggunakan middleware IdentityServer.

Konfigurasi

IdentityServer mendukung berbagai jenis protokol dan penyedia autentikasi sosial yang dapat dikonfigurasi sebagai bagian dari setiap penginstalan kustom. Ini biasanya dilakukan di kelas aplikasi Program ASP.NET Core. Konfigurasi melibatkan penentuan protokol yang didukung dan jalur ke server dan titik akhir yang akan digunakan. Gambar 8-2 menunjukkan contoh konfigurasi yang diambil dari IdentityServer Quickstart untuk aplikasi ASP.NET Core proyek:

// some details omitted
builder.Services.AddIdentityServer();

builder.Services.AddAuthentication(options =>
    {
        options.DefaultScheme = "Cookies";
        options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("Cookies")
    .AddGoogle("Google", options =>
    {
        options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

        options.ClientId = "<insert here>";
        options.ClientSecret = "<insert here>";
    })
    .AddOpenIdConnect("oidc", options =>
    {
        options.Authority = "https://localhost:5001";

        options.ClientId = "web";
        options.ClientSecret = "secret";
        options.ResponseType = "code";

        options.Scope.Clear();
        options.Scope.Add("openid");
        options.Scope.Add("profile");

        options.MapInboundClaims = false; // Don't rename claim types

        options.SaveTokens = true;
    });
}

Gambar 8-2. Mengonfigurasi IdentityServer.

Klien JavaScript

Banyak aplikasi cloud-native menggunakan API sisi server dan aplikasi halaman tunggal klien (SPAs) yang kaya di ujung depan, misalnya, menggunakan React, Angular, atau Blazor WebAssembly. Pola backend-for-frontend (BFF) digunakan untuk jenis klien ini, yang memungkinkan untuk menjaga token keluar dari jangkauan browser. Pola ini mengikuti spesifikasi OAuth 2.0 untuk aplikasi Browser-Based IETF.

Referensi

Berikutnya Sebelumnya