Bagikan melalui


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.

    SSO sequence diagram for a root bot.

  • Diagram berikut mengilustrasikan alur, dan alur fallback, untuk kontrol Web Chat.

    SSO sequence diagram for a Web Chat control.

    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.

  1. Klien memulai percakapan dengan bot yang memicu skenario OAuth.

  2. Bot mengirim kembali Kartu OAuth ke klien.

  3. Klien mencegat kartu OAuth sebelum menampilkannya kepada pengguna dan memeriksa apakah berisi TokenExchangeResource properti.

  4. 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 dengan TokenExchangeResource.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>"
        }
    }
    
  5. Bot memproses TokenExchangeInvokeRequest dan mengembalikan TokenExchangeInvokeResponse kembali ke klien. Klien harus menunggu sampai menerima TokenExchangeInvokeResponse.

    {
        "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>"
        }
    }
    
  6. TokenExchangeInvokeResponse Jika memiliki status dari 200, maka klien tidak menunjukkan kartu OAuth. Lihat diagram alur normal. Untuk yang lain status atau jika TokenExchangeInvokeResponse 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.

Langkah berikutnya