Akses menyeluruh dengan Web Chat

BERLAKU UNTUK: SDK v4

Akses menyeluruh (SSO) memungkinkan klien, seperti kontrol Web Chat, untuk berkomunikasi dengan bot atas nama pengguna. Saat ini, hanya IdP Microsoft Entra yang didukung.

Biasanya, Web Chat disematkan di halaman situs web. Saat pengguna masuk ke situs web, Web Chat memanggil bot atas nama pengguna. Token klien situs web, berdasarkan kredensial pengguna, ditukar dengan yang berbeda untuk mengakses bot. Dengan cara ini, pengguna tidak perlu masuk dua kali; pertama kali di situs web, dan kedua kalinya di bot, oleh karena itu istilah SSO.

Diagram berikut menunjukkan alur SSO saat menggunakan klien Web Chat.

Sequence diagram for sign-on flow for Web Chat.

Jika gagal, SSO kembali ke perilaku yang ada untuk menunjukkan kartu OAuth . Kegagalan dapat terjadi ketika persetujuan pengguna diperlukan atau ketika pertukaran token gagal.

Mari kita analisis alurnya.

  1. Pengguna masuk ke situs web.

  2. Aktivitas pemicu OAuth diterima oleh Web Chat.

  3. Obrolan Web memulai percakapan dengan bot melalui aktivitas pemicu OAuth.

  4. Bot mengirim kembali Kartu OAuth ke Web Chat.

  5. Web Chat mencegat kartu OAuth sebelum menampilkannya kepada pengguna dan memeriksa apakah berisi TokenExchangeResource properti.

  6. Jika properti ada, Web Chat harus mendapatkan token yang dapat ditukar untuk pengguna, yang harus menjadi token ID Microsoft Entra.

  7. Web Chat mengirimkan aktivitas Panggil ke bot dengan isi yang ditunjukkan di bawah ini.

    {
        "type": "Invoke",
        "name": "signin/tokenExchange",
        "value": {
            "id": "<any unique ID>",
            "connectionName": "<connection name on the bot (from the OAuth Card)>",
            "token": "<exchangeable token>"
        }
    }
    
  8. Bot memproses TokenExchangeInvokeRequest dengan mengeluarkan permintaan ke Azure AI Bot Service untuk mendapatkan token yang dapat ditukar.

  9. Azure AI Bot Service mengirimkan token ke bot.

  10. Bot mengembalikan TokenExchangeInvokeResponse kembali ke Web Chat. Web Chat menunggu hingga menerima TokenExchangeInvokeResponse.

    {
        "status": "<response code>",
        "body": {
            "id":"<unique ID>",
            "connectionName": "<connection Name on the bot (from the OAuth Card)>",
            "failureDetail": "<failure reason if status code isn't 200, null otherwise>"
        }
    }
    
  11. TokenExchangeInvokeResponse Jika memiliki status , 200maka Web Chat tidak menampilkan kartu OAuth. Untuk yang lain status atau jika TokenExchangeInvokeResponse tidak diterima, maka Web Chat menampilkan kartu OAuth kepada pengguna. Ini memastikan bahwa alur SSO kembali ke alur OAuthCard normal, jika terjadi kesalahan atau dependensi yang tidak terpenuhi seperti persetujuan pengguna.

Untuk contoh implementasi, silakan lihat sampel SSO ini.