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.
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.
Pengguna masuk ke situs web.
Aktivitas pemicu OAuth diterima oleh Web Chat.
Obrolan Web memulai percakapan dengan bot melalui aktivitas pemicu OAuth.
Bot mengirim kembali Kartu OAuth ke Web Chat.
Web Chat mencegat kartu OAuth sebelum menampilkannya kepada pengguna dan memeriksa apakah berisi
TokenExchangeResource
properti.Jika properti ada, Web Chat harus mendapatkan token yang dapat ditukar untuk pengguna, yang harus menjadi token ID Microsoft Entra.
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>" } }
Bot memproses
TokenExchangeInvokeRequest
dengan mengeluarkan permintaan ke Azure AI Bot Service untuk mendapatkan token yang dapat ditukar.Azure AI Bot Service mengirimkan token ke bot.
Bot mengembalikan
TokenExchangeInvokeResponse
kembali ke Web Chat. Web Chat menunggu hingga menerimaTokenExchangeInvokeResponse
.{ "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>" } }
TokenExchangeInvokeResponse
Jika memilikistatus
,200
maka Web Chat tidak menampilkan kartu OAuth. Untuk yang lainstatus
atau jikaTokenExchangeInvokeResponse
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.