Konsep Koneksi/OAuth OpenID Layanan Federasi Direktori Aktif

Berlaku untuk Layanan Federasi Direktori Aktif (AD FS) 2016 dan yang lebih baru

Aktor autentikasi modern

Actor Deskripsi
Pengguna akhir Prinsip keamanan (pengguna, aplikasi, layanan, dan grup) yang mengakses sumber daya.
Klien Aplikasi web Anda, diidentifikasi oleh ID kliennya. Klien biasanya adalah pihak yang berinteraksi dengan pengguna akhir, dan klien meminta token dari server otorisasi.
Server otorisasi/Penyedia identitas (IdP) Server Layanan Federasi Direktori Aktif Anda. Ini bertanggung jawab untuk memverifikasi identitas prinsip keamanan yang ada di direktori organisasi. Ini mengeluarkan token keamanan (token akses pembawa, token ID, dan token refresh) setelah autentikasi yang berhasil dari prinsip keamanan tersebut.
Server sumber daya/Penyedia sumber daya/Pihak yang mengandalkan Tempat sumber daya atau data berada. Ini mempercayai server otorisasi untuk mengautentikasi dan mengotorisasi klien dengan aman dan menggunakan token akses pembawa untuk memastikan bahwa akses ke sumber daya dapat diberikan.

Diagram berikut menyediakan hubungan paling mendasar antara aktor:

Diagram of the modern authentication actors.

Tipe aplikasi

Jenis Aplikasi Deskripsi Peran
Aplikasi asli Terkadang disebut klien publik. Ini dimaksudkan untuk menjadi aplikasi klien yang berjalan pada pc atau perangkat dan dengan mana pengguna berinteraksi. Meminta token dari server otorisasi (AD FS) untuk akses pengguna ke sumber daya. Mengirim permintaan HTTP ke sumber daya yang dilindungi, dengan menggunakan token sebagai header HTTP.
Aplikasi server (aplikasi web) Aplikasi web yang berjalan di server dan dapat diakses oleh pengguna melalui browser. Karena mampu mempertahankan rahasia atau kredensial kliennya sendiri, terkadang disebut klien rahasia. Meminta token dari server otorisasi (AD FS) untuk akses pengguna ke sumber daya. Sebelum meminta token, klien (aplikasi web) perlu mengautentikasi dengan menggunakan rahasianya.
web API Sumber daya akhir yang diakses pengguna. Anggap saja sebagai representasi baru dari pihak yang mengandalkan. Mengonsumsi token akses pembawa yang diperoleh oleh klien.

Grup aplikasi

Anda harus mengaitkan grup aplikasi dengan setiap klien OAuth atau sumber daya API web asli atau aplikasi web yang dikonfigurasi dengan Layanan Federasi Direktori Aktif. Konfigurasikan klien dalam grup aplikasi untuk mengakses sumber daya dalam grup yang sama. Grup aplikasi dapat memiliki beberapa klien dan sumber daya.

Token keamanan

Autentikasi modern menggunakan jenis token berikut:

  • id_token: Token JWT yang dikeluarkan oleh server otorisasi (AD FS) dan digunakan oleh klien. Klaim dalam token ID berisi informasi tentang pengguna sehingga klien dapat menggunakannya.
  • access_token: Token JWT yang dikeluarkan oleh server otorisasi (AD FS) dan dimaksudkan untuk digunakan oleh sumber daya. Klaim 'aud' atau audiens dari token ini harus cocok dengan pengidentifikasi sumber daya atau API web.
  • refresh_token: Dikeluarkan oleh Layanan Federasi Direktori Aktif untuk digunakan klien saat perlu me-refresh id_token dan access_token. Token buram untuk klien dan hanya dikonsumsi oleh Layanan Federasi Direktori Aktif.

Merefresh masa pakai token

  • Masuk sederhana, tidak ada KMSI, perangkat yang tidak terdaftar: Layanan Federasi Direktori Aktif berlaku SsoLifetime dan DeviceUsageWindowInDays. Token refresh pertama memiliki lifetime=DeviceUsageWindowInDays atau SsoLifetime, berdasarkan bidang mana yang lebih rendah tetapi tidak ada token refresh lebih lanjut yang dikeluarkan.
  • Masuk KMSI, EnableKmsi=true di ad FS conf dan kmsi=true diteruskan sebagai parameter: LAYANAN Federasi Direktori Aktif berlaku KmsiLifetimeMins dengan DeviceUsageWindowInDays. Token refresh pertama memiliki lifetime=DeviceUsageWindowInDays dan setiap permintaan berikutnya grant_type=refresh_token mendapatkan token refresh baru. Proses ini hanya terjadi dengan klien asli atau klien rahasia ditambah autentikasi perangkat.
  • Perangkat terdaftar, autentikasi perangkat: Layanan Federasi Direktori Aktif menggunakan PersistentSsoLifetimeMins dan DeviceUsageWindowInDays mirip dengan KMSI. Klien asli dan rahasia harus mendapatkan token refresh baru, berdasarkan autentikasi perangkat.

Untuk mempelajari selengkapnya, lihat dokumentasi akses menyeluruh Layanan Federasi Direktori Aktif.

Cakupan

Saat mendaftarkan sumber daya di Layanan Federasi Direktori Aktif, Anda dapat mengonfigurasi cakupan untuk memungkinkan Layanan Federasi Direktori Aktif melakukan tindakan tertentu. Bersama dengan mengonfigurasi cakupan, Anda harus mengirim nilai cakupan dalam permintaan Ad FS untuk melakukan tindakan. Misalnya, administrator mengonfigurasi cakupan seperti openid selama pendaftaran sumber daya dan aplikasi (klien) harus mengirim scope = openid dalam permintaan autentikasi untuk Layanan Federasi Direktori Aktif untuk menerbitkan Token ID. Berikut ini adalah detail tentang cakupan yang tersedia di Layanan Federasi Direktori Aktif:

  • aza - Jika Anda menggunakan ekstensi protokol OAuth 2.0 untuk klien broker dan jika parameter cakupan berisi cakupan aza, server mengeluarkan token refresh utama baru. Ini mengatur token di refresh_token bidang respons dan mengatur refresh_token_expires_in field ke masa pakai token refresh utama baru jika diberlakukan.
  • openid - Memungkinkan permintaan aplikasi menggunakan openid protokol autentikasi koneksi.
  • logon_cert - Memungkinkan aplikasi meminta sertifikat masuk yang dapat Anda gunakan untuk masuk secara interaktif pada pengguna yang diautentikasi. Server AD FS menghilangkan access_token parameter dari respons dan sebaliknya menyediakan rantai sertifikat CMS yang dikodekan base64 atau respons PKI penuh CMC. Untuk informasi selengkapnya, lihat ekstensi protokol MS-OAPX: OAuth 2.0.
  • user_impersonation - Meminta token akses atas nama dari Layanan Federasi Direktori Aktif. Untuk detail tentang cara menggunakan cakupan ini, lihat Membangun aplikasi multi-tingkat menggunakan On-Behalf-Of (OBO) menggunakan OAuth dengan LAYANAN Federasi Direktori Aktif 2016.
  • allatclaims – Memungkinkan aplikasi meminta klaim dalam token akses untuk ditambahkan ke token ID juga.
  • vpn_cert - Memungkinkan aplikasi meminta sertifikat VPN, yang membuat koneksi VPN dengan menggunakan autentikasi EAP-TLS. Fitur ini tidak didukung lagi.
  • email - Memungkinkan aplikasi meminta klaim email untuk pengguna yang masuk.
  • profile - Memungkinkan aplikasi meminta klaim terkait profil untuk pengguna yang masuk.

Klaim

Token keamanan (akses dan token ID) yang dikeluarkan oleh Layanan Federasi Direktori Aktif berisi klaim, atau pernyataan informasi tentang subjek yang telah diautentikasi. Aplikasi dapat menggunakan klaim untuk berbagai tugas, termasuk:

  • Memvalidasi token
  • Mengidentifikasi penyewa direktori subjek
  • Menampilkan informasi pengguna
  • Menentukan otorisasi subjek

Klaim yang ada dalam token keamanan tertentu tergantung pada jenis token, jenis info masuk yang digunakan untuk mengautentikasi pengguna, dan konfigurasi aplikasi.

Alur autentikasi AD FS tingkat tinggi

Diagram alur tingkat tinggi mengikuti.

Diagram of the AD FS authentication flow.

  1. Layanan Federasi Direktori Aktif menerima permintaan autentikasi dari klien.

  2. Layanan Federasi Direktori Aktif memvalidasi ID klien dalam permintaan autentikasi dengan ID klien yang diperoleh selama pendaftaran klien dan sumber daya di Layanan Federasi Direktori Aktif. Jika menggunakan klien rahasia, AD FS juga memvalidasi rahasia klien yang disediakan dalam permintaan autentikasi. Layanan Federasi Direktori Aktif juga memvalidasi URI pengalihan Klien.

  3. Layanan Federasi Direktori Aktif mengidentifikasi sumber daya yang ingin diakses klien melalui parameter sumber daya yang diteruskan dalam permintaan autentikasi. Jika Anda menggunakan pustaka klien MSAL, parameter sumber daya tidak dikirim. Sebagai gantinya, URL sumber daya dikirim sebagai bagian dari parameter cakupan: cakupan = [url sumber daya]/[nilai cakupan, misalnya, openid].

    Jika sumber daya tidak diteruskan menggunakan parameter sumber daya atau cakupan, AD FS menggunakan sumber daya urn:microsoft:userinfo default yang kebijakannya, seperti, MFA, penerbitan, atau kebijakan otorisasi, tidak dapat dikonfigurasi.

  4. Layanan Federasi Direktori Aktif berikutnya memvalidasi apakah klien memiliki izin untuk mengakses sumber daya. Layanan Federasi Direktori Aktif juga memvalidasi apakah cakupan yang diteruskan dalam permintaan autentikasi cocok dengan cakupan yang dikonfigurasi saat mendaftarkan sumber daya. Jika klien tidak memiliki izin, atau cakupan yang tepat tidak dikirim dalam permintaan autentikasi, alur autentikasi akan dihentikan.

  5. Setelah izin dan cakupan memvalidasi, AD FS mengautentikasi pengguna dengan menggunakan metode autentikasi yang dikonfigurasi.

  6. Jika metode autentikasi lain diperlukan sesuai kebijakan sumber daya atau kebijakan autentikasi global, Layanan Federasi Direktori Aktif memicu autentikasi tambahan.

  7. Layanan Federasi Direktori Aktif menggunakan autentikasi multifaktor Microsoft Entra atau autentikasi multifaktor pihak ketiga untuk melakukan autentikasi.

  8. Setelah pengguna diautentikasi, Layanan Federasi Direktori Aktif menerapkan aturan klaim. Aturan klaim menentukan klaim yang dikirim ke sumber daya sebagai bagian dari token keamanan. Layanan Federasi Direktori Aktif juga menerapkan polisi kontrol akses yang mengonfirmasi pengguna memenuhi kondisi yang diperlukan untuk mengakses sumber daya.

  9. Selanjutnya, Layanan Federasi Direktori Aktif menghasilkan akses dan merefresh token. Layanan Federasi Direktori Aktif juga menghasilkan token ID.

  10. Layanan Federasi Direktori Aktif menerima permintaan autentikasi.

  11. Jika Anda menyertakan scope = allatclaims dalam permintaan autentikasi, ini menyesuaikan token ID untuk menyertakan klaim dalam token akses berdasarkan aturan klaim yang ditentukan.

  12. Setelah token yang diperlukan dihasilkan dan disesuaikan, Layanan Federasi Direktori Aktif merespons klien dan menyertakan token. Respons token ID hanya disertakan dalam respons jika permintaan autentikasi menyertakan scope = openid. Klien selalu bisa mendapatkan token ID setelah autentikasi dengan menggunakan titik akhir token.

Jenis pustaka

Gunakan dua jenis pustaka dengan Layanan Federasi Direktori Aktif:

  • Pustaka klien: Klien asli dan aplikasi server menggunakan pustaka klien untuk mendapatkan token akses untuk memanggil sumber daya seperti API web. Microsoft Authentication Library (MSAL) adalah pustaka klien terbaru dan yang direkomendasikan saat Anda menggunakan LAYANAN Federasi Direktori Aktif 2019.

  • Pustaka middleware server: Aplikasi web menggunakan pustaka middleware server untuk masuk pengguna. API Web menggunakan pustaka middleware server untuk memvalidasi token yang dikirim oleh klien asli atau oleh server lain. Buka Antarmuka Web untuk .NET (OWIN) adalah pustaka middleware yang direkomendasikan.

Menyesuaikan token ID (klaim tambahan dalam token ID)

Dalam skenario tertentu, ada kemungkinan bahwa klien aplikasi web memerlukan klaim tambahan dalam token ID untuk membantu dalam fungsionalitas. Siapkan klaim tambahan dalam token ID dengan menggunakan salah satu opsi berikut:

Opsi 1: Gunakan opsi ini saat Anda memiliki klien publik dan aplikasi web tidak memiliki sumber daya yang coba diaksesnya. Opsi memerlukan:

  • response_mode ditetapkan sebagai form_post
  • Pengidentifikasi pihak yang mengandalkan (pengidentifikasi API web) sama dengan pengidentifikasi klien

Diagram of AD FS customize token option one.

Opsi 2: Gunakan opsi ini saat aplikasi web memiliki sumber daya yang coba diakses dan perlu meneruskan klaim tambahan melalui token ID. Anda dapat menggunakan klien publik dan rahasia. Opsi memerlukan:

  • response_mode ditetapkan sebagai form_post

  • KB4019472 diinstal di server Layanan Federasi Direktori Aktif Anda

  • Cakupan allatclaims ditetapkan ke pasangan klien – RP. Anda dapat menetapkan cakupan dengan menggunakan Grant-ADFSApplicationPermission. Gunakan Set-AdfsApplicationPermission jika sudah diberikan sekali. Cmdlet PowerShell ditunjukkan dalam contoh berikut:

    Grant-AdfsApplicationPermission -ClientRoleIdentifier "https://my/privateclient" -ServerRoleIdentifier "https://rp/fedpassive" -ScopeNames "allatclaims","openid"
    

Diagram of AD FS customize token option two.

Untuk lebih memahami cara mengonfigurasi aplikasi web di Layanan Federasi Direktori Aktif untuk mendapatkan token ID yang disesuaikan, lihat Token ID kustom di LAYANAN Federasi Direktori Aktif 2016 atau yang lebih baru.

Keluar tunggal

Akses menyeluruh mengakhiri semua sesi klien yang menggunakan ID sesi. LAYANAN Federasi Direktori Aktif 2016 dan yang lebih baru mendukung akses menyeluruh untuk OpenID Koneksi/OAuth. Untuk informasi selengkapnya, lihat Akses menyeluruh untuk OpenID Koneksi dengan Layanan Federasi Direktori Aktif.

Titik akhir LAYANAN Federasi Direktori Aktif

Titik Akhir Layanan Federasi Direktori Aktif Deskripsi
/Otorisasi Layanan Federasi Direktori Aktif mengembalikan kode otorisasi yang dapat Anda gunakan untuk mendapatkan token akses.
/Token Layanan Federasi Direktori Aktif mengembalikan token akses yang dapat Anda gunakan untuk mengakses sumber daya, seperti dalam API web.
/userinfo Layanan Federasi Direktori Aktif mengembalikan klaim subjek.
/devicecode Layanan Federasi Direktori Aktif mengembalikan kode perangkat dan kode pengguna.
/logout Layanan Federasi Direktori Aktif mengeluarkan pengguna.
/kunci Kunci publik Layanan Federasi Direktori Aktif yang digunakan untuk menandatangani respons.
/.well-known/openid-configuration Layanan Federasi Direktori Aktif mengembalikan metadata Koneksi OAuth/OpenID.