Autentikasi pengguna

BERLAKU UNTUK: SDK v4

Terkadang bot harus mengakses sumber daya online aman atas nama pengguna, seperti memeriksa email, memeriksa status penerbangan, atau melakukan pemesanan. Pengguna harus mengotorisasi bot untuk melakukannya atas nama mereka, dan untuk mengotorisasi bot, pengguna harus mengautentikasi identitas mereka. OAuth digunakan untuk mengautentikasi pengguna dan mengotorisasi bot. Lihat juga Jenis autentikasi.

Jika Anda ingin me-refresh pengetahuan OAuth Anda, lihat yang berikut ini:

Autentikasi pengguna dalam percakapan

Untuk melakukan operasi tertentu atas nama pengguna, seperti memeriksa email, merujuk kalender, memeriksa status penerbangan, atau melakukan pesanan, bot harus memanggil layanan eksternal, seperti Microsoft Graph, GitHub, atau layanan REST perusahaan. Setiap layanan eksternal memiliki cara untuk mengamankan panggilan tersebut. Cara umum untuk mengeluarkan permintaan tersebut adalah dengan menggunakan token pengguna yang secara unik mengidentifikasi pengguna pada layanan eksternal tersebut (terkadang disebut sebagai JSON Web Token (JWT)).

Untuk mengamankan panggilan ke layanan eksternal, bot harus meminta pengguna untuk masuk, sehingga dapat memperoleh token pengguna untuk layanan tersebut. Banyak layanan mendukung pengambilan token melalui protokol OAuth atau OAuth2 .

Azure AI Bot Service menyediakan kartu dan layanan masuk khusus yang berfungsi dengan protokol OAuth dan mengelola siklus hidup token. Bot dapat menggunakan fitur-fitur ini untuk memperoleh token pengguna.

  • Sebagai bagian dari konfigurasi bot, koneksi OAuth terdaftar dalam sumber daya Azure AI Bot Service di Azure.

    Koneksi berisi informasi tentang penyedia identitas yang akan digunakan, bersama dengan ID dan rahasia klien OAuth yang valid, cakupan OAuth untuk diaktifkan, dan metadata koneksi lain yang diperlukan oleh penyedia identitas tersebut.

  • Dalam kode bot, koneksi OAuth digunakan untuk membantu masuk pengguna dan mendapatkan token pengguna.

Gambar berikut menunjukkan elemen yang terlibat dalam proses autentikasi.

Diagram illustrating the relationship between authentication components in Azure AI Bot Service.

Tentang Layanan Token Kerangka Kerja Bot

Layanan Token Kerangka Kerja Bot bertanggung jawab untuk:

  • Memfasilitasi penggunaan protokol OAuth dengan berbagai layanan eksternal.
  • Menyimpan token dengan aman untuk bot, saluran, percakapan, dan pengguna tertentu.
  • Memperoleh token pengguna.

    Tip

    Jika bot memiliki token pengguna yang kedaluwarsa, bot harus:

    • Keluarkan pengguna
    • Memulai alur masuk lagi

Misalnya, bot yang dapat memeriksa email terbaru pengguna, menggunakan Microsoft Graph API, memerlukan token pengguna dari Penyedia Identitas, dalam hal ini ID Microsoft Entra. Pada waktu desain, pengembang bot melakukan dua langkah penting ini:

  1. Mendaftarkan aplikasi ID Microsoft Entra, Penyedia Identitas, dengan Bot Framework Token Service, melalui portal Azure.
  2. Mengonfigurasi koneksi OAuth (bernama misalnya GraphConnection) untuk bot.

Gambar berikut menunjukkan urutan waktu interaksi pengguna dengan bot saat permintaan email dibuat menggunakan layanan Microsoft Graph.

Sequence diagram outlining the steps for a bot to send an email on behalf of a user.

  1. Pengguna membuat permintaan email ke bot.

  2. Aktivitas dengan pesan ini dikirim dari pengguna ke layanan saluran Bot Framework. Layanan saluran memastikan bahwa userid bidang dalam aktivitas telah diatur dan pesan dikirim ke bot.

    Catatan

    ID pengguna adalah channel spesifik, seperti ID Facebook pengguna atau nomor telepon SMS mereka.

  3. Bot membuat permintaan ke Layanan Token Kerangka Kerja Bot yang menanyakan apakah bot tersebut sudah memiliki token untuk UserId untuk koneksi GraphConnectionOAuth .

  4. Karena ini adalah pertama kalinya pengguna ini berinteraksi dengan bot, Bot Framework Token Service belum memiliki token untuk pengguna ini, dan mengembalikan hasil NotFound ke bot.

    Catatan

    Jika token ditemukan, langkah-langkah autentikasi dilewati dan bot dapat membuat permintaan email menggunakan token yang disimpan.

  5. Bot membuat OAuthCard dengan nama GraphConnection koneksi dan membalas pengguna yang meminta untuk masuk menggunakan kartu ini.

  6. Aktivitas melewati Bot Framework Channel Service, yang memanggil ke Bot Framework Token Service untuk membuat URL masuk OAuth yang valid untuk permintaan ini. URL masuk ini ditambahkan ke OAuthCard dan kartu dikembalikan kepada pengguna.

  7. Pengguna disajikan dengan pesan untuk masuk dengan mengklik tombol masuk OAuthCard.

  8. Saat pengguna mengklik tombol masuk, layanan saluran membuka browser web dan memanggil layanan eksternal untuk memuat halaman masuknya.

  9. Pengguna masuk ke halaman ini untuk layanan eksternal. Kemudian layanan eksternal menyelesaikan pertukaran protokol OAuth dengan Bot Framework Token Service, yang mengakibatkan layanan eksternal mengirim Bot Framework Token Service token pengguna. Layanan Token Kerangka Kerja Bot menyimpan token ini dengan aman dan mengirim aktivitas ke bot dengan token ini.

  10. Bot menerima aktivitas dengan token dan dapat menggunakannya untuk melakukan panggilan terhadap MS Graph API.

Mengamankan URL masuk

Pertimbangan penting ketika Bot Framework memfasilitasi login pengguna adalah cara mengamankan URL masuk. Saat pengguna disajikan dengan URL masuk, URL ini dikaitkan dengan ID percakapan dan ID pengguna tertentu untuk bot tersebut. Jangan bagikan URL iniā€”hal ini akan menyebabkan proses masuk yang salah terjadi untuk percakapan bot tertentu. Untuk mengurangi serangan keamanan yang menggunakan URL masuk bersama, pastikan bahwa komputer dan orang yang mengklik URL masuk adalah orang yang memiliki jendela percakapan.

Beberapa saluran seperti Microsoft Teams, Direct Line, dan WebChat dapat melakukan ini tanpa pemberitahuan pengguna. Misalnya, WebChat menggunakan cookie sesi untuk memastikan bahwa alur masuk berlangsung di browser yang sama dengan percakapan WebChat. Namun, untuk saluran lain pengguna sering disajikan dengan kode ajaib 6 digit. Ini mirip dengan autentikasi multifaktor bawaan, karena Bot Framework Token Service tidak akan merilis token ke bot kecuali pengguna menyelesaikan autentikasi akhir, membuktikan bahwa orang yang masuk memiliki akses ke pengalaman obrolan dengan memasukkan kode 6 digit.

Penting

Harap diingat pertimbangan Keamanan penting ini. Anda dapat menemukan informasi tambahan dalam posting blog ini: Menggunakan WebChat dengan Autentikasi Azure AI Bot Service.

Langkah berikutnya

Sekarang setelah Anda tahu tentang autentikasi pengguna, mari kita lihat cara menerapkannya ke bot Anda.

Baca juga