Botframework-solutions: [docs] Buat dokumentasi HowTo tentang cara menambahkan Auth ke VA secara langsung daripada mengandalkan Skill

Dibuat pada 12 Jul 2019  ·  17Komentar  ·  Sumber: microsoft/botframework-solutions

Apakah permintaan fitur Anda terkait dengan masalah? Tolong jelaskan.

Meskipun template menghasilkan kode untuk api grafik, tidak ada contoh atau prosedur sederhana untuk menguji otentikasi asisten virtual baru yang dibuat dan kemudian menggunakan api ini.

Apa solusi yang Anda cari?

Prosedur, contoh atau konfigurasi untuk mengaktifkan penggunaan klien grafik yang meminta aktivasi otentikasi, setelah kode sumber yeoman yang dihasilkan untuk asisten virtual di TypeScript, dan cara dengan contoh untuk menyebarkan keterampilan lokal di TypeScript.

Alternatif apa yang telah Anda pertimbangkan?

kembangkan keterampilan baru dalam TypeScript dan gunakan alat botskills connect untuk mencoba melihat perubahan pada solusi asisten virtual dan melihat bagian kode yang diubah.

Apakah ada konteks lain yang bisa Anda berikan?

keterampilan baru yang dihasilkan memiliki sebagian besar kode sumber dari generator bantuan virtual asli. Untuk beberapa skenario penerapan sederhana, tidak praktis untuk membuat solusi bot baru hanya untuk sebagian fungsi asisten virtual secara keseluruhan (yaitu: ketika beban permintaan tidak berarti). Jadi ada beberapa deskripsi parameter dari alat botskills untuk mengenali manifes lokal, tetapi tidak ada satu contoh naskah asli yang bekerja dengan keterampilan lokal dan tidak ada contoh keterampilan yang meminta kredensial oauth dalam naskah.

Docs

Semua 17 komentar

@andhdo Apakah halaman dokumentasi yang menunjukkan bagaimana Anda dapat menggunakan Asisten Virtual dan menambahkan langkah otentikasi sebelum memanggil Grafik cukup untuk apa yang Anda butuhkan? Ini juga akan mencakup langkah-langkah konfigurasi manual yang diperlukan untuk membuat koneksi otentikasi?

Ya, Ini bisa menjadi titik awal awal, seperti contoh dasar otentikasi yang serupa. Maka itu bisa menjadi pelengkap yang baik untuk pengembangan keterampilan TypeScript lokal yang mengaktifkan & menonaktifkan otentikasi.

OK - masuk akal - Saya akan memperbarui item pekerjaan ini dan memperbarui dokumen minggu depan untuk ini. Itu muncul beberapa kali ketika Anda mengatakan itu berguna untuk melakukan otentikasi murni dalam VA dan tidak bergantung pada Keterampilan untuk beberapa skenario.

Fondasinya tercakup di sini dan saya akan memfokuskannya untuk VA (dan itu akan jauh lebih sederhana dari ini)
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-authentication?view=azure-bot-service-4.0&tabs=aadv1%2Ccsharp%2Cbot-oauth

Ya; Saya telah membuat latihan untuk menjalankan skenario ini, tetapi idenya adalah untuk mengimplementasikannya dengan cara terbaik di dalam asisten virtual tanpa menduplikasi kode yang sudah dibuat oleh Microsoft.
Terima kasih atas bantuan Anda, dan berharap untuk melihat hasilnya.

Hai @andhdo , dokumen ini harus mencakup apa yang Anda butuhkan: https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md

Buka kembali jika diperlukan.

Hai @andhdo , dokumen ini harus mencakup apa yang Anda butuhkan: https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md

Buka kembali jika diperlukan.

Hai @lauren-mills, Maukah Anda memberi tahu kami Bagaimana cara membuka kembali masalah ini ?

Karena itu:

  • Tanggapan Anda secara tidak langsung diteruskan ke CARA PROGRAMATIS yang telah disebutkan dalam masalah ini,
  • dengan demikian, Anda tidak menggunakan mekanisme otentikasi yang digunakan oleh VA dalam keterampilan: Anda sedang membangun yang baru.
  • itu diuji dalam TypeScript, dan tidak berfungsi: (1: melakukan konfigurasi bot-registration, kemudian 2: menambahkan pendaftaran penyedia layanan aad dengan izin grafik api, dan 3: menghubungkan pendaftaran bot dengan pendaftaran iklan sebelumnya langkah, dan 4: menambahkan konfigurasi pengaturan aplikasi). praktis VA masih berfungsi tanpa otentikasi mengikuti [langkah-langkah manual ditunjukkan]
    (https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md).
  • Saya tidak ingin menggunakan keterampilan karena itu adalah biaya tambahan yang akan dibayarkan untuk bot yang tidak bermaksud menggunakan elemen pra-bangun lainnya; saya hanya ingin mengaktifkan Asisten untuk mengautentikasi terhadap Azure AD. Sejauh yang saya tahu ketika Anda membuat keterampilan baru, Anda dapat mengaktifkan otentikasi; mengapa tidak mendokumentasikan strategi ini untuk mengaktifkan skenario autentikasi lokal?, atau mohon klarifikasi jika Anda hanya dapat menggunakan cara terprogram untuk menambahkan autentikasi ke asisten virtual. Terima kasih

Langkah-langkah untuk menambahkan otentikasi langsung ke VA harus sama dengan langkah-langkah untuk menambahkannya ke keterampilan seperti yang tercantum dalam dokumen (karenanya saya mengarahkan Anda ke sana.)

Saya ingin mengonfirmasi bahwa Anda membuat semua perubahan ini pada pendaftaran Bot VA, dan pendaftaran aplikasi VA, benar?

Bisakah Anda masuk ke pendaftaran bot, di tab pengaturan, lalu pilih koneksi OAuth Anda dan klik "uji koneksi" di bagian atas dan beri tahu saya apa yang dikatakannya? Terima kasih.

Ya; semua sesuai prosedur. lihat di bawah langkah-langkah yang dijalankan:

LANGKAH-LANGKAH UNTUK MEREPRODUKSI / ASISTEN VIRTUAL

instal semua persyaratan untuk menjalankan perancah VA:

PRERREQ

npm uninstall -g yo
npm install -g yo
  • alat pembuatan jendela
npm install -g windows-build-tools
  • npm (perbarui jika diperlukan)
npm install -g npm
  • kemudian instal kebutuhan generator
npm install -g botdispatch 
npm install -g ludown luis-apis qnamaker [email protected]
npm install -g chatdown
npm install -g botskills
  • pasang genset
npm uninstall -g generator-botbuilder-assistant
# select the following line according release or development versions you want to run. see https://github.com/microsoft/botframework-solutions#user-content-js table for versions
npm install -g generator-botbuilder-assistant 
  • jalankan generatornya
yo botbuilder-assistant --assistantName "bot-1835" --assistantDesc "my assistant" --assistantLang "es,en" --assistantGenerationPath "." --noPrompt

kemudian generasi memulai dan membangun proses segera setelahnya.

  • lalu perbaiki masalah jika diperlukan untuk menjalankan aplikasi yang berjalan secara lokal
    -> index.ts: hilangkan parameter kredensial return new MultiProviderAuthDialog(oauthConnections) dalam pengembangan, versi master;
    -> index.ts: ubah skill.msaAppId dengan skill.msAppId dalam pengembangan, versi master
    -> tambahkan msAppId dan atribut ke file skills.json.
    -> abaikan sumber daya yang dibuat secara otomatis dalam proses pembuatan oleh alat pembuat bot (yang mengelola model kognitif)

  • penyediaan komponen di biru:
    berhati-hatilah agar Anda tidak memiliki komponen yang masuk dalam konflik dengan yang ditetapkan sebagai kode (hapus grup sumber daya sebelumnya, pendaftaran-iklan-zure dan model luis.ai dengan pengenal yang sama menggunakan konsol atau alat baris perintah).

pertama, Anda perlu membuat koneksi dengan azure, dan memilih berlangganan dengan uang (karena semuanya adalah uang di az)

az login 
az account set --subscription <SUBSCRIPTION_TO_WORK>

=

dan kemudian jalankan skrip yang dihasilkan

cd bot-1835

.\deployment\scripts\deploy.ps1 -languages "es-es" -name "<VA_NAME>" -location "westus"  -appPassword "<VA_PASS>" -luisAuthoringRegion "westus" -luisAuthoringKey "<LUIS_AUTHORING_KEY>" -parametersFile ".\deployment\resources\parameters.template.json" -debug

VA_NAME:
VA_PASS:
LUIS_AUTHORING_KEY: dari

setelah itu (dan menyilangkan jari untuk semua menjadi sukses), maka Anda dapat mulai menurunkan tingkat sumber daya yang mahal untuk berlangganan

keluaran lok seperti itu:

> Creating resource group ...
> Validating Azure deployment ...
> Deploying Azure services (this could take a while)...
> Updating appsettings.json ...
> Deploying cognitive models ...
> Initializing dispatch model ...
> Parsing general LU file ...
> Deploying general LUIS app ...
> Setting LUIS subscription key ...
> Adding general app to dispatch model ...
> Parsing chitchat LU file ...
> Deploying chitchat QnA kb ...
> Adding chitchat kb to dispatch model ...
> Parsing faq LU file ...
> Deploying faq QnA kb ...
> Adding faq kb to dispatch model ...
> Creating dispatch model...
> Setting LUIS subscription key ...
+ To publish your bot, run 'C:\MyPathToDir\bot-1835\deployment\scripts\publish.ps1 -name 1835-dev1 -resourceGroup 1835-dev1 -projFolder "C:\MyPathToDir\bot-1835\src '
> Done.
  • jalankan bot dalam mode lokal:
npm run start

LANGKAH-LANGKAH UNTUK MEREPRODUKSI / Otentikasi

  • buat pendaftaran iklan biru
$appReg2 = (az ad app create --display-name "<VA_AZADREG_NAME>" --password "<VA_AZADREG_PASS>" --available-to-other-tenants false --reply-urls "https://token.botframework.com/.auth/web/redirect")
$appReg2json = ($appReg2 | ConvertFrom-Json)

VA_AZADREG_NAME=
VA_AZADREG_PASS=

lalu tambahkan izin api grafik

  • untuk: microsoft grafik
  • jenis: izin yang didelegasikan
  • izin: (ya esta User.Read):
profile
Mail.Read
Mail.Send
User.Read
User.ReadBasic.All

dan

  • tambahkan hibah implisit, untuk token id ([] AccessToken o [x] IDToken)
  • rekam kunci dari proses sebelumnya
  • ID direktori (penyewa): (pendaftaran aplikasi/ikhtisar)
  • ID Aplikasi (klien): (pendaftaran aplikasi/ikhtisar)
  • Rahasia Klien:

  • gunakan thinfo dari langkah sebelumnya untuk memperbarui oauth di botchannels-registration yang dihasilkan

    • nama (namakoneksi): Outlook
    • serviceProvider: Azure Active Directory v2
    • ID klien:
    • rahasia klien:
    • ID penyewa:
    • lingkup:
  • lalu tes koneksinya
    (ia meminta klaim oauth) dan kemudian menunjukkan tokennya

Sepertinya Anda memiliki pengaturan otentikasi pada proyek Asisten Virtual Anda. Apa yang Anda lewatkan sehingga Anda ingin bantuan kami?

Meskipun konfigurasi dibuat, proyek tidak pernah meminta otentikasi kepada pengguna menggunakan VA. Saya sudah menambahkan otentikasi untuk proyek tetapi tidak akan pernah mengaktifkan dialog untuk otentikasi. Saya telah menambahkan otentikasi untuk proyek tetapi tidak pernah mengaktifkan dialog untuk otentikasi

langkah-langkah tambahan yang dibuat dalam aplikasi sesuai dokumentasi dan kesalahan yang terlihat di kudu:

LANGKAH-LANGKAH UNTUK MEREPRODUKSI / AUTHENTICATION-APP-CHANGES

  • tambahkan konfigurasi oauth di file appsettings.json, menunjuk ke kebijakan oauth yang dideklarasikan pada langkah sebelumnya. pulihkan kata sandi amd msAppId jika sebelumnya Anda telah bekerja dalam mode lokal.
{
  "oauthConnections": [
    {
      "name": "Outlook",
      "provider": "Azure Active Directory v2"
    }
  ], ...
  • ubah package.json untuk membedakan run lokal dari tindakan menjalankan Azure atau memodifikasi file web.config seperlunya untuk melakukan penerapan yang berhasil di Azure.
  "local:start": "npm run build && node ./lib/index.js NODE_ENV=development",
  "start": "node ./lib/index.js",
  • publikasikan solusi aplikasi di Azure
npm run clean
npm run build
.\deployment\scripts\publish.ps1 -name <VA_NAME> -resourceGroup <VA_NAME>
  • buat koneksi menggunakan emulator botframework untuk menguji otentikasi menggunakan msAppId dan msPwd

Untuk meminta otentikasi, Anda perlu menambahkan OAuthPrompt ke dalam dialog Anda di tempat yang diinginkan, memberikan informasi koneksi saat Anda mengonfigurasinya.

Dialog sampel dari repo Microsoft/botbuilder-samples ini akan membantu: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/18.bot-authentication/dialogs/mainDialog.js

Ini adalah klarifikasi yang bagus karena metode ini benar-benar tidak menambahkan otentikasi ke bot Anda, Anda harus melakukan beberapa langkah tambahan untuk mengamankan tindakan Anda:

  • itu berarti saya harus memanggil oauthPrompt secara manual di setiap langkah yang saya inginkan.

Beberapa pertanyaan tambahan:

  • bagaimana saya bisa menggunakan kembali token autentikasi pengguna sebelumnya?
  • apakah ada strategi atau pola traversal untuk menambahkan otentikasi sebelumnya untuk mengeksekusi panggilan apa pun ke layanan kognitif? (versi sebelumnya tampaknya memiliki otentikasiMiddleware tetapi saya belum melihat yang serupa di v4)
  • Apakah ini berarti MultiProviderAuthDialog yang sudah dibuat yang berfungsi dengan keterampilan dalam metode buildAuthDialog di index.ts tidak digunakan untuk tujuan apa pun .
  1. OAuthPrompt akan secara otomatis mengambil token untuk pengguna jika mereka sudah masuk di tempat lain untuk koneksi OAuth tersebut. Jika Anda menambahkan OAuthPrompt di tempat yang Anda inginkan, dan pengguna telah masuk, itu hanya akan melanjutkan ke langkah berikutnya.

  2. Saya tidak yakin apa yang Anda tanyakan di sini. Anda tidak perlu pengguna untuk mengautentikasi untuk menggunakan Layanan Kognitif (LUIS, QnA, dll). Anda hanya perlu kunci untuk layanan itu. Tolong jelaskan pertanyaan ini untuk saya.

  3. Pendaftaran MultiProviderAuthDialog di startup hanya dibuat untuk keterampilan yang dikonfigurasi dalam konfigurasi skills.json Anda. Jika tidak ada keterampilan, itu tidak digunakan.

2: Maksud saya: jika ada (tidak tahu apakah sudah ada atau direncanakan) Middleware untuk meminta kredensial otentikasi kepada pengguna sebelum membawa akses untuk menjalankan logika permintaan maindialog, sehingga Anda dapat membiarkan logika ini utuh

Saya pikir saya telah menemukan solusi sesuai komentar Anda:

  • buat dialog (di sini: LoginActivityDialog), untuk menahan logika permintaan login. ia menerima informasi koneksi oauth dari pengaturan, tetapi logikanya mirip dengan contoh yang dirujuk . juga mewarisi dari LogoutDialog
  • buat semacam dialog CircuitBreaker: dialog air terjun dari 2 langkah: langkah otentikasi dan langkah utama. langkah pertama memanggil loginActivityDialog dan yang kedua, memanggil dialog utama yang dibuat sebelumnya hanya jika oauthPrompt telah membuat token.

  • di index.ts lakukan sesuatu yang mirip dengan logika buildAuthDialog , untuk mendapatkan konfigurasi oauthConnection dari pengaturan dan bypass ke LoginActivityDialog

/* eslint-disable */
function buildAuthDialog2(settings: Partial<IBotSettings>): LoginActivityDialog|undefined {

    const oauthConnections: IOAuthConnection[] | undefined = botSettings.oauthConnections;
    if(oauthConnections!==undefined) {
        const loginDialog = new LoginActivityDialog(oauthConnections);
        console.log(`created`);
        return loginDialog;
    } else {
        throw new Error(`You must configure at least one supported OAuth connection to use authentication`);
    }
    return undefined;
};
/* eslint-enable */

ini adalah metode yang kurang invasif yang saya temukan sampai sekarang; namun tidak memiliki 2 hal: (1) tidak dapat menyebarkan token untuk memanggil grafik jika diperlukan. (2) itu bukan middleware asli yang saya pikir

Senang mendengar Anda bisa membuat prompt bekerja. Untuk mengakses token, itu harus tersedia di langkah berikutnya (setelah OAuthPrompt) di stepContext.Result.

Jika Anda menginginkan beberapa saran untuk membuat Middleware yang Anda inginkan, saya sarankan pergi ke Stack Overflow kami, karena lebih baik untuk saran bot umum daripada repo ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat