Tentang akses menyeluruh
BERLAKU UNTUK: SDK v4
Akses menyeluruh (SSO) memungkinkan akses ke sumber daya dibagikan di seluruh aplikasi independen. Misalnya, pengguna dapat masuk ke layanan di bot root, dan bot root dapat berbagi token akses dengan bot keterampilan. Saat ini, hanya IdP Microsoft Entra yang didukung.
SSO berlaku untuk skenario berikut:
- Bot akar dan satu atau beberapa bot keterampilan. Pengguna masuk dari bot akar. Bot kemudian memanggil beberapa keterampilan atas nama pengguna.
- Kontrol Web Chat yang disematkan di situs web. Pengguna masuk dari situs web. Situs web kemudian memanggil bot atau keterampilan atas nama pengguna.
SSO memberikan keuntungan berikut:
- Pengguna tidak perlu masuk beberapa kali.
- Bot akar atau situs web tidak perlu mengetahui izin pengguna.
Catatan
SSO tersedia di Bot Framework SDK versi 4.8 dan yang lebih baru.
Interaksi komponen SSO
Diagram urutan waktu berikut menunjukkan interaksi antara berbagai komponen SSO.
Diagram berikut mengilustrasikan alur untuk bot akar.
Diagram berikut mengilustrasikan alur, dan alur fallback, untuk kontrol Web Chat.
Jika pertukaran token gagal, fall-back adalah meminta pengguna untuk masuk. Kegagalan tersebut dapat terjadi ketika izin tambahan diperlukan atau token adalah untuk layanan yang salah.
Mari kita analisis alurnya.
Klien memulai percakapan dengan bot yang memicu skenario OAuth.
Bot mengirim kembali Kartu OAuth ke klien.
Klien mencegat kartu OAuth sebelum menampilkannya kepada pengguna dan memeriksa apakah berisi
TokenExchangeResource
properti.Jika properti ada, klien akan mengirim
TokenExchangeInvokeRequest
ke bot. Klien harus memiliki token yang dapat ditukar untuk pengguna, yang harus menjadi token ID Microsoft Entra dan audiensnya harus sama denganTokenExchangeResource.Uri
properti. Klien 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 skill bot (from the OAuth Card)>", "token": "<exchangeable token>" } }
Bot memproses
TokenExchangeInvokeRequest
dan mengembalikanTokenExchangeInvokeResponse
kembali ke klien. Klien harus menunggu sampai menerimaTokenExchangeInvokeResponse
.{ "status": "<response code>", "body": { "id":"<unique ID>", "connectionName": "<connection Name on the skill bot (from the OAuth Card)>", "failureDetail": "<failure reason if status code isn't 200, null otherwise>" } }
TokenExchangeInvokeResponse
Jika memilikistatus
dari200
, maka klien tidak menunjukkan kartu OAuth. Lihat diagram alur normal. Untuk yang lainstatus
atau jikaTokenExchangeInvokeResponse
tidak diterima, maka klien menunjukkan kartu OAuth kepada pengguna. Lihat diagram alur fallback. Ini memastikan bahwa alur SSO kembali ke alur OAuthCard normal, jika ada kesalahan atau dependensi yang tidak terpenuhi, seperti persetujuan pengguna.