Botframework-solutions: [مستندات] إنشاء وثائق HowTo حول كيفية إضافة المصادقة إلى VA مباشرة بدلاً من الاعتماد على المهارات

تم إنشاؤها على ١٢ يوليو ٢٠١٩  ·  17تعليقات  ·  مصدر: microsoft/botframework-solutions

هل طلب الميزة الخاص بك متعلق بمشكلة؟ يرجى الوصف.

على الرغم من أن النموذج يولد رمزًا لواجهة برمجة تطبيقات الرسم البياني ، إلا أنه لا يوجد مثال أو إجراء بسيط لاختبار مصادقة مساعد افتراضي تم إنشاؤه جديدًا ومن ثم استهلاك واجهة برمجة التطبيقات هذه.

ما هو الحل الذي تبحث عنه؟

إجراء ، مثال أو تكوين لتمكين استخدام عميل الرسم البياني الذي يطلب تنشيط المصادقة ، بعد الحصول على كود المصدر yeoman الذي تم إنشاؤه للمساعد الظاهري في الكتابة المطبوعة ، وطريقة مع أمثلة لنشر المهارات المحلية في الكتابة المطبوعة.

ما البدائل التي فكرت فيها؟

طور مهارة جديدة في الكتابة المطبوعة واستخدم الأداة botskills connect لمحاولة رؤية التغييرات في حل المساعد الافتراضي ومشاهدة أجزاء من الكود تم تغييرها.

هل هناك أي سياق آخر يمكنك تقديمه؟

تحتوي مهارة العلامة التجارية الجديدة التي تم إنشاؤها على جزء كبير مشابه من الكود المصدري لمولد المساعدة الافتراضية الأصلي. بالنسبة إلى بعض سيناريوهات النشر البسيطة ، ليس من العملي إنشاء حل روبوت جديد تمامًا لمجرد جزء من وظائف المساعد الظاهري الكلي (على سبيل المثال: عندما يكون تحميل الطلب غير ذي معنى). لذلك هناك بعض الأوصاف لمعلمات أداة botskills للتعرف على البيان المحلي ، ولكن لا يوجد مثال مطبعي حقيقي واحد يعمل مع المهارات المحلية ولا يوجد مثال على المهارات التي تطلب بيانات اعتماد oauth في الكتابة المطبوعة.

Docs

ال 17 كومينتر

andhdo هل ستكون صفحة التوثيق التي توضح كيف يمكنك أن تأخذ مساعدًا افتراضيًا وتضيف خطوة مصادقة قبل استدعاء الرسم البياني كافية لما تحتاجه؟ قد يشمل ذلك أيضًا خطوات التكوين اليدوي المطلوبة لإنشاء اتصال المصادقة؟

نعم ، يمكن أن تكون نقطة بداية أولية ، كما تفعل الأمثلة الأساسية للمصادقة. ثم يمكن أن يكون مكملاً جيدًا لتطوير مهارات الكتابة المطبوعة المحلية لتمكين المصادقة وتعطيلها.

حسنًا - هذا منطقي - سأحدِّث عنصر العمل هذا وأحدث المستندات في الأسبوع المقبل لهذا الغرض. لقد ظهر عدة مرات كما تقول أنه من المفيد إجراء مصادقة بحتة داخل VA وعدم الاعتماد على المهارات لبعض السيناريوهات.

الأساس مغطى هنا وسأركز عليه لأسفل لـ VA (وسيكون أبسط بكثير من هذا)
https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-authentication؟view=azure-bot-service-4.0&tabs=aadv1٪2Ccsharp٪2Cbot-oauth

نعم؛ لقد قمت بإجراء التمرين لتشغيل هذه السيناريوهات ، ولكن الفكرة تكمن في تنفيذه بأفضل طريقة داخل المساعد الافتراضي دون تكرار الرمز الذي تم إنشاؤه بالفعل بواسطة Microsoft.
شكرا لمساعدتكم ، وآمل أن أرى النتيجة.

مرحبًا andhdo ، يجب أن يغطي هذا المستند ما تحتاجه: https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md

أعد فتح إذا لزم الأمر.

مرحبًا andhdo ، يجب أن يغطي هذا المستند ما تحتاجه: https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md

أعد فتح إذا لزم الأمر.

مرحبًا @ lauren-mills ، هل تمانع في إخبارنا كيف يمكنني إعادة فتح هذه المشكلة ؟

ذلك بسبب:

  • يتم توجيه ردك بشكل غير مباشر إلى الطريقة PROGRAMATIC WAY التي سبق ذكرها في المشكلة ،
  • وبالتالي ، فأنت لا تستخدم آلية المصادقة التي يستخدمها المساعدون الافتراضيون في المهارات: فأنت تبني واحدة جديدة.
  • تم اختباره في الكتابة المطبوعة ، ولا يعمل: (1: إجراء تكوين تسجيل bot ، ثم 2: إضافة تسجيل مقدم خدمة aad مع أذونات واجهة برمجة تطبيقات الرسم البياني ، و 3: ربط تسجيل bot بتسجيل aad السابق الخطوة و 4: إضافة تكوين إعدادات التطبيقات). عمليا لا يزال VA يعمل بدون مصادقة باتباع [الخطوات اليدوية المشار إليها]
    (https://github.com/microsoft/botframework-solutions/blob/next/docs/reference/skills/manualauthsteps.md).
  • لا أرغب في استخدام مهارة لأنها تكلفة إضافية سيتم دفعها مقابل روبوت لا ينوي استخدام عناصر أخرى سابقة الإنشاء ؛ أريد فقط تمكين المساعد من المصادقة مقابل اللازوردية AD. بقدر ما أعرف عند إنشاء مهارة جديدة ، يمكنك تنشيط المصادقة ؛ لماذا لا توثق هذه الإستراتيجية لتمكين سيناريو مصادقة محلي؟ أو يرجى توضيح ما إذا كان يمكنك استخدام الطريقة البرمجية فقط لإضافة المصادقة إلى المساعد الظاهري. شكرا

يجب أن تكون خطوات إضافة المصادقة مباشرة إلى VA هي نفس الخطوات لإضافتها إلى مهارة كما هو مذكور في المستند (ومن هنا سبب توجيهك إليها.)

أريد أن أؤكد أنك تجري كل هذه التغييرات على تسجيل VA Bot وتسجيل تطبيق VA ، أليس كذلك؟

هل يمكنك الانتقال إلى تسجيل الروبوت ، في علامة التبويب "الإعدادات" ، ثم تحديد اتصال OAuth والنقر فوق "اختبار الاتصال" في الجزء العلوي وإخباري بما يقوله؟ شكرا.

نعم؛ كل حسب الإجراء. انظر أدناه الخطوات المنفذة:

خطوات الاستنساخ / المساعد الافتراضي

قم بتثبيت جميع المتطلبات لتشغيل سقالة VA:

PRERREQS

npm uninstall -g yo
npm install -g yo
  • أدوات بناء النوافذ
npm install -g windows-build-tools
  • npm (التحديث إذا لزم الأمر)
npm install -g npm
  • ثم تثبيت متطلبات المولد
npm install -g botdispatch 
npm install -g ludown luis-apis qnamaker [email protected]
npm install -g chatdown
npm install -g botskills
  • تثبيت المولد
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 
  • تشغيل المولد
yo botbuilder-assistant --assistantName "bot-1835" --assistantDesc "my assistant" --assistantLang "es,en" --assistantGenerationPath "." --noPrompt

ثم بدأ الجيل وعملية البناء بعد ذلك مباشرة.

  • ثم تصحيح المشكلات إذا لزم الأمر لتشغيل التطبيقات محليًا
    -> index.ts: حذف معامل بيانات الاعتماد return new MultiProviderAuthDialog(oauthConnections) قيد التطوير ، الإصدار الرئيسي ؛
    -> index.ts: تغيير skill.msaAppId بواسطة skill.msAppId في التطوير ، الإصدار الرئيسي
    -> إضافة msAppId والسمات إلى ملف Skills.json.
    -> تجاهل الموارد التي تم إنشاؤها تلقائيًا في عملية الإنشاء بواسطة أدوات bot-builder (التي تدير النماذج المعرفية)

  • توفير المكونات في اللازوردية:
    مع الحرص على عدم وجود أي مكونات تدخل في تعارض مع الموفر كرمز (احذف مجموعات الموارد السابقة والتسجيلات اللازوردية ونماذج luis.ai ذات المعرف نفسه باستخدام وحدة التحكم أو أدوات سطر الأوامر).

أولاً ، تحتاج إلى إنشاء اتصال بـ azure ، واختيار الاشتراك بالمال (لأن كل شيء هو المال بالألف إلى الياء)

az login 
az account set --subscription <SUBSCRIPTION_TO_WORK>

=

ثم تنفيذ البرنامج النصي الذي تم إنشاؤه

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: من

بعد ذلك (وتصبح أصابع الاتهام كلها ناجحة) ، عندها يمكنك البدء في خفض مستوى الموارد الغالية للاشتراك

loks الإخراج مثل هذا:

> 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.
  • قم بتشغيل الروبوت في الوضع المحلي:
npm run start

خطوات النسخ / المصادقة

  • إنشاء تسجيل إعلان اللازوردية
$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 =

ثم أضف أذونات واجهة برمجة تطبيقات الرسم البياني

  • لـ: Microsoft Graph
  • النوع: الأذونات المفوضة
  • الأذونات: (ya esta User.Read):
profile
Mail.Read
Mail.Send
User.Read
User.ReadBasic.All

و

  • إضافة منح ضمنية لرموز معرف ([] AccessToken o [x] IDToken)
  • مفاتيح التسجيل للعملية السابقة
  • معرف الدليل (المستأجر): (تسجيل التطبيق / نظرة عامة)
  • معرّف التطبيق (العميل): (تسجيل التطبيق / نظرة عامة)
  • العميل

  • استخدم Thinfo من الخطوة السابقة لتحديث oauth في botchannels-Registration التي تم إنشاؤها

    • الاسم (اسم الاتصال): Outlook
    • serviceProvider: Azure Active Directory v2.0.0
    • معرف العميل:
    • سر العميل:
    • معرف المستأجر:
    • النطاقات:
  • ثم اختبر الاتصال
    (يسأل عن مطالبات oauth) ثم يعرض الرمز المميز

يبدو أن لديك إعداد المصادقة في مشروع Virtual Assistant الخاص بك. ما الذي تفتقده وتريد مساعدتنا به؟

على الرغم من التكوين الذي تم إجراؤه ، لا يطلب المشروع أبدًا المصادقة على المستخدم باستخدام VA. لقد أضفت بالفعل المصادقة للمشروع ولكنها لن تنشط مربعات الحوار للمصادقة أبدًا. لقد أضفت بالفعل المصادقة للمشروع ولكنها لا تنشط مربعات الحوار للمصادقة أبدًا

خطوات إضافية يتم إجراؤها في التطبيق وفقًا للوثائق والأخطاء التي تظهر في kudu:

خطوات النسخ / التوثيق - تغييرات التطبيق

  • أضف تكوين oauth في ملف appsettings.json ، مع الإشارة إلى سياسات oauth المعلنة في الخطوات السابقة. استعادة كلمة مرور msAppId amd إذا كنت قد عملت مسبقًا في الوضع المحلي.
{
  "oauthConnections": [
    {
      "name": "Outlook",
      "provider": "Azure Active Directory v2"
    }
  ], ...
  • قم بتعديل package.json لتمييز التشغيل المحلي لإجراء تشغيل azure أو تعديل ملف web.config حسب الحاجة للقيام بنشر ناجح في اللازوردية.
  "local:start": "npm run build && node ./lib/index.js NODE_ENV=development",
  "start": "node ./lib/index.js",
  • نشر حل التطبيق باللون الأزرق السماوي
npm run clean
npm run build
.\deployment\scripts\publish.ps1 -name <VA_NAME> -resourceGroup <VA_NAME>
  • قم بإنشاء الاتصال باستخدام botframework emulator لاختبار المصادقة باستخدام msAppId و msPwd

للمطالبة بالمصادقة ، ستحتاج إلى إضافة OAuthPrompt إلى مربع الحوار الخاص بك في المكان المطلوب ، مع توفير معلومات الاتصال عند تكوينه.

نموذج مربع الحوار هذا من Microsoft / botbuilder-sample repo يجب أن يساعد: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/18.bot-authentication/dialogs/mainDialog.js

هذا توضيح جيد لأن الطريقة لا تضيف حقًا مصادقة إلى الروبوت الخاص بك ، يجب عليك القيام ببعض الخطوات الإضافية لتأمين إجراءاتك:

  • هذا يعني أنه يجب علي استدعاء موجه oauthPrompt يدويًا في كل خطوة أرغب فيها.

بعض الأسئلة الإضافية:

  • كيف يمكنني إعادة استخدام رمز المصادقة السابقة للمستخدم؟
  • هل توجد استراتيجية أو نمط اجتياز لإضافة المصادقة السابقة لتنفيذ أي استدعاء للخدمات المعرفية؟ (يبدو أن الإصدار السابق يحتوي على برنامج مصادقة وسيط ولكني لم أر بعضًا مشابهًا في الإصدار 4)
  • هل هذا يعني أن MultiProviderAuthDialog الذي تم إنشاؤه بالفعل والذي يعمل مع المهارات الموجودة في طريقة buildAuthDialog في index.ts لا يستخدم لأي غرض من الأغراض.
  1. سيقوم OAuthPrompt تلقائيًا باسترداد رمز مميز للمستخدم إذا كان قد سجل الدخول بالفعل في مكان آخر لاتصال OAuth هذا. إذا قمت بإضافة OAuthPrompt في المكان الذي تريده ، وكان المستخدم قد قام بتسجيل الدخول بالفعل ، فسيستمر في الخطوة التالية.

  2. لست متأكدًا مما تطلبه هنا. لن تحتاج إلى مستخدم للمصادقة لاستخدام الخدمات المعرفية (LUIS ، QnA ، إلخ). أنت فقط بحاجة إلى مفتاح تلك الخدمة. من فضلك وضح هذا السؤال بالنسبة لي.

  3. يتم إنشاء تسجيل MultiProviderAuthDialog عند بدء التشغيل فقط للمهارات التي تم تكوينها في تكوين المهارات. إذا لم تكن هناك مهارات ، فلن يتم استخدامها.

2: أعني: إذا كان موجودًا (لا أعرف ما إذا كان موجودًا بالفعل أم أنه مخطط له) ، فبرنامج وسيط لطلب بيانات اعتماد المصادقة للمستخدم قبل جلب الوصول لتنفيذ منطق طلبات الحوار الرئيسي ، لذا يمكنك ترك هذا المنطق سليمًا

أعتقد أنني وجدت حلاً وفقًا لتعليقاتك:

  • قم بإنشاء مربع حوار (هنا: LoginActivityDialog) ، للاحتفاظ بمنطق مطالبات تسجيل الدخول. يتلقى معلومات اتصالات oauth من الإعدادات ، لكن منطقها مشابه للمثال المشار إليه . يرث أيضا من LogoutDialog
  • أنشئ نوعًا من حوار الدائرة الكهربية: مربع حوار شلال من خطوتين: خطوة مصادقة وخطوة رئيسية. تستدعي الخطوة الأولى loginActivityDialog والخطوة الثانية ، تستدعي مربع الحوار الرئيسي الذي تم إنشاؤه مسبقًا فقط إذا كان oauthPrompt قد أنشأ رمزًا مميزًا.

  • في index.ts ، افعل شيئًا مشابهًا لمنطق buildAuthDialog ، للحصول على تكوين oauthConnection من الإعدادات وتجاوز إلى 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 */

هذه هي الطريقة الأقل توغلًا التي وجدتها حتى الآن ؛ ومع ذلك ، فإنه يفتقر إلى شيئين: (1) لا يمكنه نشر الرمز المميز لاستدعاء الرسم البياني إذا لزم الأمر. (2) أعتقد أنها ليست البرامج الوسيطة الأصلية

سعيد لسماع أنك تمكنت من الحصول على العمل الفوري. للوصول إلى الرمز المميز ، يجب أن يكون متاحًا في الخطوة التالية (بعد OAuthPrompt) في stepContext.Result.

إذا كنت ترغب في الحصول على بعض النصائح حول إنشاء البرامج الوسيطة التي تريدها ، فإنني أقترح عليك الذهاب إلى Stack Overflow ، حيث إنه من الأفضل الحصول على مشورة عامة من برنامج الروبوت بدلاً من هذا الريبو.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات