Botframework-solutions: Authentifizierung funktioniert nicht in TypeScript Skill

Erstellt am 20. Juli 2020  ·  38Kommentare  ·  Quelle: microsoft/botframework-solutions

Welches Projekt ist betroffen?

Virtueller Assistent und Skill von TypeScript

In welcher Sprache ist das?

Typoskript

Was geschieht?

Beim Authentifizierungsversuch wird der folgende Fehler ausgegeben

Fehler: DialogContext.beginDialog(): Ein Dialog mit der ID 'AuthPrompt' wurde nicht gefunden.
bei WasserfallStepContext.(D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:123:23)
bei Generator.nächste ()
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:7:71
bei neuem Versprechen ()
at __awaiter (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:3:12)
at WaterfallStepContext.beginDialog (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:119:16)
at MultiProviderAuthDialog.firstStep (D:\home\site\wwwroot\node_modules\bot-solutions\lib\authentication\multiProviderAuthDialog.js:75:34)
bei WasserfallDialog.(D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:192:48)
bei Generator.nächste ()
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:7:71

Was sind die Schritte, um dieses Problem zu reproduzieren?

Stellen Sie virtuellen Assistenten und Fähigkeiten bereit. Aktivieren Sie den MultiProviderAuthDialog im Skill
Verwenden Sie den Authentifizierungsdialog, um sich bei Azure Active Directory v2 zu authentifizieren

Was haben Sie erwartet?

Erhalten Sie eine Login-Karte, um sich anzumelden

Können Sie Protokolle, Fehlerausgaben usw. freigeben?

Fehler: DialogContext.beginDialog(): Ein Dialog mit der ID 'AuthPrompt' wurde nicht gefunden.
bei WasserfallStepContext.(D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:123:23)
bei Generator.nächste ()
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:7:71
bei neuem Versprechen ()
at __awaiter (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:3:12)
at WaterfallStepContext.beginDialog (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:119:16)
at MultiProviderAuthDialog.firstStep (D:\home\site\wwwroot\node_modules\bot-solutions\lib\authentication\multiProviderAuthDialog.js:75:34)
bei WasserfallDialog.(D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:192:48)
bei Generator.nächste ()
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:7:71

Irgendwelche Screenshots oder zusätzlichen Kontext?

Skills Bot Services Kobuk bug customer-replied-to customer-reported in-progress

Hilfreichster Kommentar

Nochmals vielen Dank @Batta32! Ich habe das 1.0- Paket zum Testen verwendet. Ich muss immer noch eine Verbindungseinstellung im Skill beibehalten, aber ich kann die Authentifizierung zum Laufen bringen. Ich konnte sehen, wo die VA die Token-Antwort empfängt und diese zur Verarbeitung an den Skill weiterleitet.

Alle 38 Kommentare

Danke @tomSauret847 für die Meldung dieses Problems! Sobald wir ein Update haben, melden wir uns wieder .

Hallo @tomSauret847 - Entschuldigung für die Verzögerung. Wir haben das Problem mit dem TypeScript-Skill erfolgreich reproduziert , indem wir die folgenden Schritte ausführen:

  1. Entkommentieren Sie die Zeilen in skillDialogBase, die für die Authentifizierung markiert sind
  2. Übergeben Sie ein OAuthPromptSettings Array an den MultiProviderAuthDialog Konstruktor
  3. appsettings.oauthConnections zu den Eigenschaften von botSettings Add
  4. Fügen Sie eine AADv2 Verbindung hinzu
  5. Richten Sie eine AADv2 Verbindung zur Registrierung in Azure ein

Sobald wir ein Update haben, melden wir uns wieder .

image

Hallo @tomSauret847 - wir haben dieses Problem in diesem Commit behoben .

Dies war tatsächlich ein Problem in der Bibliothek bot-solutions , und wir haben geplant, dass der Fix mit der Version 1.0 der Bibliothek veröffentlicht wird.

Wenn Sie die Fehlerbehebung in der Zwischenzeit selbst testen möchten, können Sie die folgenden Schritte ausführen :

  1. Checken Sie diesen Zweig aus , wobei der Fix für Version 0.8 der Bibliothek angewendet wurde.
  2. Gehe zum Bot-Solutions- Ordner
  3. Führen Sie npm install , um die Abhängigkeiten zu installieren.
  4. Führen Sie npm run build , um die Lösung zu erstellen.
  5. Führen Sie npm pack , um eine .tgz Datei zu generieren. Es sollte am selben Ort eine Datei namens bot-solutions-version.tgz erstellen
  6. Zeigen Sie auf die generierte tgz in Ihrem Skill-Bot und ersetzen Sie die bot-solutions-Referenz in der package.json des Bots von "bot-solutions": "^1.0.0" zu "bot-solutions": "<PATH_TO_TGZ>"
  7. Validieren Sie die Authentifizierung mit dem Skill

image

Wir werden auf Ihre Antworten aufmerksam sein 😊.

Vielen Dank, dass Sie sich mit diesem @Batta32 befasst haben. Ich
Fehler: Verbindungseinstellung mit dem Namen {Verbindungsname} konnte nicht gefunden werden

Ich richte die Verbindung wie hier beschrieben ein , um das SSO für einen Skill einzurichten.

Benötigen wir weiterhin eine Authentifizierungsverbindung in jedem Skill mit den Typoskript-Skills?
Oder können wir das einzelne SSO verwenden, wie es für die C#-Kenntnisse beschrieben ist?

Wenn ich die Verbindung zum Skill hinzufüge, erhalte ich die Anmeldeaufforderung wie Sie, aber ich erhalte das Token nach Abschluss der Anmeldung nicht zurück. Wenn Sie klären könnten, ob wir eine einzelne Verbindung in der VA einrichten müssen oder wenn Wir müssen Verbindungen in jedem der Skills einrichten, die eine Authentifizierung erfordern.

Danke @tomSauret847 für deine Antwort. Sobald wir ein Update haben, melden wir uns wieder !

Hallo @tomSauret847 - wir haben das Problem erfolgreich reproduziert . Das liegt daran, dass sich die Eigenschaft name in oauthConnections von appsettings.json von der Eigenschaft connectionName in OAuthPromptSettings Sie verwenden.

Wir werden dies weiterhin überprüfen und die von Ihnen oben genannten Fragen analysieren. Sobald wir ein Update haben, melden wir uns wieder .

Die Schritte, die wir befolgten, um das Problem zu reproduzieren, waren:

  1. Folgen Sie den Schritten dieses Kommentars
  2. Folgen Sie danach den Schritten dieses Kommentars
  3. Überprüfen Sie, ob sich die Eigenschaft name in oauthConnections von appsettings.json von der Eigenschaft connectionName in OAuthPromptSettings Sie verwenden
  4. Starten Sie den Skill und geben Sie "Beispieldialog ausführen" ein und sehen Sie den Fehler

_Wenn Verbindungsname und Name unterschiedlich sind, wird das Problem reproduziert_
image

_Problem reproduziert_
image

Hallo @tomSauret847

Benötigen wir weiterhin eine Authentifizierungsverbindung in jedem Skill mit den Typoskript-Skills?

Sie benötigen in jedem TypeScript-Skill eine Authentifizierungsverbindung, bis die Version 1.0 des TypeScript-Skills veröffentlicht wird.

Oder können wir das einzelne SSO verwenden, wie es für die C#-Kenntnisse beschrieben ist?

SSO für TypeScript kann nicht verwendet werden, wie es für die C#-Kenntnisse beschrieben ist, da die Version 1.0 von TypeScript noch nicht veröffentlicht wurde.

Lass uns wissen, ob dir diese weiterhelfen 😊.

@tomSauret847 - Der Fehler Error: Could not find Connection Setting with name {connection name} liegt daran, dass sich die Eigenschaft name in oauthConnections von appsettings von der Eigenschaft connectionName in OAuthPromptSettings Sie verwenden.

Um dies zu lösen, müssen Sie überprüfen, ob beide Eigenschaften gleich sind .

Für weitere Informationen können Sie den Kommentar oben überprüfen.

Danke @Batta32, dass du dir das

Wird dieser Fix für die Authentifizierung vor der Version 1.0 in NPM veröffentlicht?

Für unsere Produktionsumgebung benötigen wir veröffentlichte NPM-Pakete, daher müssen wir diesen Fix veröffentlichen, bevor wir diese VA in die Produktion verschieben können. Ich werde auf Ihre Antwort aufmerksam sein.

@tomSauret847 - Danke für deine Antwort! Wir fügen diese Fixes in die PRs von TypeScript Version 1.0 ein:

  • PR #3583: [TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
  • PR #3584: [TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
  • PR #3585: [TypeScript][Skill] Implement changes in Skill to 1.0 release

Wir werden Sie informieren, sobald wir dazu ein Update haben. In der Zwischenzeit arbeiten wir daran, den Authentifizierungsprozess in TypeScript zu validieren.

@tomSauret847 - Wir haben ein weiteres Problem festgestellt, dass die Skill State- Variable während des Authentifizierungsprozesses _undefined_ war.

Wir haben uns den PR #3561 als Richtlinie genommen, der einen Standardwert für den Skill State-Accessor festlegt, den wir in dieses Commit integriert haben .
Nach dem Anwenden dieser Änderungen funktioniert der Authentifizierungsprozess ordnungsgemäß. Dieses Problem wird behoben, sobald TypeScript v1.0 zusammengeführt wird.

Dies ist unsere Umgebung, die diesen Zweig verwendet : feature/southworks/test-fix-auth-skill :

Wenn Sie den Fix in der Zwischenzeit selbst testen möchten, können Sie die folgenden Schritte ausführen:

  1. Gehe zum Bot-Solutions- Ordner
  2. Führen Sie npm install , um die Abhängigkeiten zu installieren.
  3. Führen Sie npm run build , um die Lösung zu erstellen.
  4. Führen Sie npm pack , um eine .tgz-Datei zu generieren. Es sollte am selben Ort eine Datei namens bot-solutions-version.tgz erstellen
  5. Gehe zum Skill Sample- Ordner
  6. Zeigen Sie auf die generierte tgz im Skill Sample-Bot und ersetzen Sie die bot-solutions-Referenz in der package.json des Bots von "bot-solutions": "^1.0.0" zu "bot-solutions": "<PATH_TO_TGZ>"
  7. Führen Sie npm install , um die Abhängigkeiten zu installieren.
  8. Führen Sie npm run build , um die Lösung zu erstellen.
  9. Validieren Sie den Authentifizierungsprozess

Wir sind aufmerksam auf Ihre Antwort. 😊

_SkillState-Variable erhält einen undefinierten Wert_
image

_Authentifizierungsprozess funktioniert korrekt_
image

Nochmals vielen Dank @Batta32! Ich habe das 1.0- Paket zum Testen verwendet. Ich muss immer noch eine Verbindungseinstellung im Skill beibehalten, aber ich kann die Authentifizierung zum Laufen bringen. Ich konnte sehen, wo die VA die Token-Antwort empfängt und diese zur Verarbeitung an den Skill weiterleitet.

@Batta32 Wir haben die Authentifizierung in 2 unserer Fähigkeiten eingerichtet und sie funktioniert im Teams-Kanal gut. Der Direktleitungskanal kommt an der Authentifizierungsaufforderung nicht vorbei. Der Skill erhält das Token nach erfolgreicher Anmeldung nicht zurück. Dieses Problem tritt nur in unserem Direktverbindungskanal auf. Wir verwenden den bereitgestellten Beispiel-Direktverbindungsclient und aktivierten die erweiterten Authentifizierungsoptionen, sodass wir den "Magischen Code" nicht eingeben. Es funktionierte vor dem Hinzufügen der erweiterten Authentifizierung, aber nach dem Hinzufügen dieser Funktion erhält der Skill die Token-Antwort nicht mehr zurück. Wenn wir den Skill abbrechen und in diesen Dialog zurückkehren, ist das Token vorhanden und wir können den Dialog abschließen. Lassen Sie es mich wissen, wenn Sie eine Idee haben, woran das liegen könnte.

Danke @tomSauret847 , wir werden dieses Szenario überprüfen und uns so schnell wie möglich bei Ihnen

Um das Szenario zu überprüfen:

  1. Was meinst du mit "Beispiel-Direktleitungs-Client"?
  2. Welchen Client verwendest du?
  3. Was meinst du mit "Magischer Code"?

Nochmals vielen Dank angeschaut haben. Wir verwenden das Direct Line-Beispiel aus dem Botbuilder-Solutions-Repository, das sich hier befindet
Der "magische Code" wird in dieser Stack-Überlauf-Frage hier etwas erklärt
Es ist nur der Code, den der Bot-Benutzer nach erfolgreicher Authentifizierung kopieren und wieder in die Konversation einfügen muss. Durch die Implementierung der erweiterten Authentifizierung entfällt dieser Schritt für den Bot-Benutzer, sodass er sich nur noch authentifizieren muss und die Konversation voranschreitet, während das Token im Hintergrund an den Bot zurückgegeben wird.

Vielen Dank @tomSauret847 , wir werden dies überprüfen und Sie hier über Updates informieren 😊!

Hallo @tomSauret847 , wir konnten dieses Problem

Wir haben uns einige Fragen für Sie ausgedacht:

  1. Haben Sie überprüft, ob dieses Problem auftritt, wenn Sie direkt mit dem Skill sprechen, ohne sich mit einem virtuellen Assistenten zu verbinden?
  2. Wenn Sie eine VA verwenden, um sich mit dem Skill zu verbinden, aktivieren Sie dann auch den Directline-Kanal in der VA? Was haben Sie sonst noch darin festgelegt, Azure AD v2-Authentifizierung, erweiterte Authentifizierung?
  3. Was meinst du mit "Wenn wir den Skill abbrechen und in diesen Dialog zurückkehren, ist das Token vorhanden und wir können den Dialog abschließen"?

Dies ist das Setup, das wir verwendet haben:

  • Ein TypeScript-Skill, der mit dem [email protected] erstellt wurde
  • Einrichtung der Azure AD v2-Typauthentifizierung für diesen Skill
  • Directline-Kanal aktiviert mit erweiterter Authentifizierung auf dem Skill
  • Die Directbahnprobe aus dem Repository , für eine bestimmte Benutzer - ID ( „dl_xxxx“)
  • Die appsettings.json im Directline-Client wird ähnlich wie folgt festgelegt:
{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "AllowedHosts": "*",
    "BotName": "skillbot-name",
    "DirectLineSecret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "EnableDirectLineEnhancedAuthentication": true,
    "SpeechServiceRegionIdentifier": "",
    "SpeechServiceSubscriptionKey": ""
}

Die Schritte, die wir befolgt haben, sind:

  1. Kontaktaufnahme mit dem Skill über den Directline-Client
  2. Aufruf des Anmeldedialogs ("Beispieldialog ausführen")
  3. Anklicken des Login-Buttons (kein "Zaubercode" erforderlich)
  4. Wir loggen uns erfolgreich ein und der Bot begrüßt uns
  5. Von diesem Zeitpunkt an werden wir jedes Mal, wenn wir die Schritte 1 und 2 wiederholen, automatisch eingeloggt und vom Bot begrüßt

Wir werden auf Ihre Antwort aufmerksam sein.

Vielen Dank @matiasroldan6, dass Sie sich das angesehen haben. Um deine Fragen zu beantworten

  1. Wir können den Skill nicht direkt kontaktieren, da wir ihn in einem VNET haben, sodass er von den Kanälen nicht erreicht werden kann
  2. Wir erreichen den Skill über die VA und haben den Direktleitungskanal nur auf der VA konfiguriert. Wir verwenden Azure AD V2-Authentifizierung in den Verbindungseigenschaften für Skill und VA. Wir haben das erweiterte Authentifizierungsset auf der VA
  3. wenn wir die Anmeldung bei Vorlage der Anmeldekarte abschließen. Der Bot bleibt hängen und bewegt sich nicht vorwärts. Wenn wir abbrechen, kehren Sie zu einem Skill zurück, der über eine Authentifizierung verfügt, das Token hat und die Anmeldeaufforderung umgeht und es uns ermöglicht, fortzufahren. Wir haben 2 Fähigkeiten mit Authentifizierung und wenn wir uns in einer authentifizieren, werden wir auch in der zweiten authentifiziert.
    hier ist ein Screenshot unserer Konfiguration für den direkten Leitungskanal auf dem VA
    image

Wir haben die Benutzer-ID im Direktverbindungsclient auf "dl_xxxx" gesetzt
Wir haben die Azure AD v2 Authentifizierung in der Verbindung auf dem Skill und VA
Wir haben die appsettings.json des Direktverbindungsclients genauso eingestellt wie oben
Wir können den Direktleitungskanal nicht für die Fertigkeit verwenden und verwenden ihn nur für die VA
Wir können die Authentifizierung im Teams-Kanal verwenden, wobei das einzige Problem darin besteht, dass die Dialognachrichten nicht in Ordnung sind. Die erste stepContext.context.sendActivity('message') kann erst eine Minute später in der Konvertierung gesendet werden. Dies geschieht nur in Dialogfeldern, in denen die Authentifizierung enthalten ist, und nur im Teams-Kanal.
Wir verwenden die Bot-Lösungen 1.0, die sich hier befindet

Bitte lassen Sie es mich wissen, wenn Sie weitere Informationen zum Skill und zur VA benötigen

Hallo @tomSauret847 , wir konnten ein Auftreten dieses Problems
In unserem Szenario waren die vertrauenswürdigen Ursprungsadressen im Directline-Kanal das Problem. Zum Beispiel müssen die Direct Popup besagt , dass der Ursprung

Um zu überprüfen, ob dies auch Ihr Problem ist, können Sie versuchen, als vertrauenswürdige Ursprünge festzulegen:
Ihre Bot-Adresse (entweder https://xxxxx.azurewebsites.net oder https://xxxx.ngrok.io, wenn Sie lokal debuggen)
Ihr localhost, wenn Sie ihn brauchen, als http://localhost
image

Die Einstellung, um dies zu reproduzieren, war:

  • Ein 1.0 virtueller Assistent mit

    • Bot-Solutions 1.0 bei den Abhängigkeiten

    • Azure AD v2-Authentifizierung aktiviert

    • Directline-Kanal aktiviert mit aktivierter erweiterter Authentifizierung

    • Vertrauenswürdige Ursprünge im Directline-Kanal auf https://localhost :xxxx (_xxxx_ ist die Directline-Client-Adresse) und die Bot-Adresse (https://xxxxx.azurewebsites.net oder https://xxxx.ngrok.io für lokale Verbindungen) eingestellt ). Wir haben dies getan, indem wir die Einstellungen aus dem Bild emuliert haben, das Sie in Ihrer letzten Nachricht angehängt haben.

  • Eine 1.0-Fähigkeit mit

    • Bot-Solutions 1.0 bei den Abhängigkeiten

    • Azure AD v2-Authentifizierung aktiviert

    • Verbunden mit dem virtuellen Assistenten.

  • Der Directline-Web-Client- Satz mit Benutzer-ID und erweiterter Authentifizierung mit derselben Konfiguration wie in unserer vorherigen Nachricht.

Unsere Reproschritte waren:

  1. Verbinden Sie das Directline-Beispiel mit dem Assistenten.
  2. Versuchen Sie, die Authentifizierung auszulösen ("Beispieldialog ausführen").
  3. Der Authentifizierungsdialog wird angezeigt, aber nach dem Klicken auf die Schaltfläche passiert nichts und der Bot reagiert nicht mehr, selbst auf weitere Versuche, die Authentifizierung aufzurufen.
    image
  1. Brechen Sie den Flow ab und führen Sie dann die Schritte 1 und 2 erneut aus, dann werden wir automatisch authentifiziert und vom Bot begrüßt.

Bitte lassen Sie es uns wissen, wenn dies hilfreich ist. Wir werden auf Ihre Antworten aufmerksam sein.

Vielen Dank @matiasroldan6, dass Sie sich das angesehen haben. Die oben angezeigten Einstellungen sind die gleichen, die wir verwenden. Wir haben die localhost-Route entfernt und haben nur die Bot-Adresse in den vertrauenswürdigen Ursprüngen für den Direktleitungskanal (https://xxxxx.azurewebsites.net). Der Skill reagiert nach der Anmeldeaufforderung immer noch nicht und wenn wir die Konversation abbrechen und den Skill erneut aufrufen, erhält er das Token und setzt den Dialog fort. Wir können den Skill immer noch nicht abrufen, um das Token zu erhalten, nachdem sich der Benutzer angemeldet hat.

Danke für deine Antwort @tomSauret847 - wir werden weiter daran arbeiten, um die Lösung für dieses Problem zu finden 😊.

Wir haben Fragen, um zu verstehen, wie Sie den azurewebsites.net Endpunkt unter Berücksichtigung der Version 1.0 der Bot-Lösungen (PR #3583) verwenden:

  1. Verwenden Sie das Messaging endpoint Ihres veröffentlichten Web App Bot (Virtual Assistant)?
  2. Wie haben Sie die Version 1.0 der Bot-Lösungen in Ihren veröffentlichten Virtual Assistant und Skill integriert? Uns ist bekannt, dass Sie das Paket .tgz der Bibliothek verwendet haben. Ist das richtig?
  3. Gibt es eine Möglichkeit zum Testen mit dem localhost-Endpunkt, der wie oben in der Direct Line Channel-Konfiguration konfiguriert wurde?

Danke @Batta32

  1. Wir verwenden den Messaging-Endpunkt der VA in der vertrauenswürdigen Hostkonfiguration.
  2. Wir verwenden das .tgz-Paket, das aus der Version 1.0 geklont wurde. Wir haben den Ordner node_modules und die Dateien package-lock.json entfernt, bevor wir das .tgz-Paket verschoben haben. Dann die Datei package.json aktualisiert und dann die npm-Installation ausgeführt
  3. Wir haben mit dem lokalen Host getestet und die gleiche Antwort erhalten. Wir können den Token immer noch nicht dazu bringen, die Konversation zu durchlaufen, aber wenn der Dialog abgebrochen und erneut gestartet wird, ist der Token vorhanden.

Danke @tomSauret847 , wir werden dieses Problem mit diesen neuen Informationen, die Sie bereitgestellt

Hallo @tomSauret847 , wir haben ein Vorkommen dieses Problems erfolgreich reproduziert.

Bei Ihren vorherigen Antworten ist uns aufgefallen, dass Sie Ihre Bot-URL als vertrauenswürdigen Ursprung verwenden.
Laut diesem Kommentar und dieser Dokumentation sollten Sie die URL Ihres Chat-Clients haben.
image

Unsere Aufstellung war:

Schritte:

  1. Verwenden Sie den Directline-Webclient, um den virtuellen Assistenten zu kontaktieren
  2. Rufen Sie den Skill auf ("Beispieldialog ausführen")
  3. Lassen Sie sich vom Skill die Authentifizierungsschaltfläche anzeigen, klicken Sie darauf (nichts passiert)
  4. Das Wiederholen von Schritt 2 authentifiziert uns automatisch, ohne die Authentifizierungsschaltfläche anzuzeigen.

Wir werden dieses Problem weiterhin überprüfen, da wir bestätigt haben und wie Sie erwähnt haben, dass dies in Microsoft Teams und Emulator funktioniert.
image

Hallo @tomSauret847 , wir haben den Authentifizierungsprozess mit Enhanced Authentication erfolgreich ausgeführt.

Wir haben uns einige Fragen ausgedacht, damit Sie auf unserer Seite nachsehen können:

  1. Können Sie überprüfen, ob Sie die veröffentlichten Ordner der bereitgestellten Bots haben, die auf Kudu zugreifen (https://.scm.azurewebsites.net/ZipDeployUI) <WEB_APP_BOT_NAME> durch den Namen Ihrer Bot-Ressource ersetzen? Überprüfen Sie, ob Sie node_modules , lib und den Rest der Ordner haben.
  2. Können Sie überprüfen, ob der Messaging-Endpunkt der Bots der Produktionsendpunkt ist (azurewebsites.net)?
  3. Haben Sie den virtuellen Assistenten über den Produktionsendpunkt mit den Skills verbunden?
  4. Können Sie überprüfen, ob Sie auf das Skill-Manifest des veröffentlichten Skills zugreifen können? Wenn nicht, fügen Sie die Änderungen des PR #3601 hinzu

Das ist unsere Umgebung :

Wir sind diesen Schritten gefolgt:

  1. Übernehmen Sie die Änderungen des PR #3601 im Skill
  2. Erstellen Sie einen Ordner, um die Bot-Solutions 1.0 .tgz Datei in beiden Beispielen zu speichern
  3. Zeigen Sie die Bot-Solutions-Referenz auf die lokale tgz, z. B. "bot-solutions": ".//TGZ//bot-solutions-1.0.0.tgz" der Bots
  4. Bereitstellen der Bots mit deploy.ps1
  5. Verbinden Sie beide Beispiele mit Botskills mit dem remoteManifest
  6. Konfigurieren Sie die OAuth-Verbindungseinstellungen beider Beispiele mit einem AADv2
  7. Konfigurieren Sie die oauthConnections in den App-Einstellungen jedes Beispiels
  8. Veröffentlichen Sie beide Beispiele mit dem publish.ps1 Skript
  9. Directline-Kanal auf dem virtuellen Assistenten aktivieren
  10. Aktivieren Sie die erweiterte Authentifizierung in der Direktverbindung des virtuellen Assistenten
  11. Verbinden Sie das Directline-Beispiel mit dem virtuellen Assistenten

    1. Hinweis : Aktualisieren Sie diese Zeile auf eine statische GUID, wenn Sie die Konversation beibehalten möchten

  12. Lösen Sie schließlich die Authentifizierung mit run sample dialog
  13. Nach dem Login fragt der Skill nach einem Namen
  14. Überprüfen Sie, ob die erweiterte Authentifizierung korrekt funktioniert

Last but not least haben wir bestätigt , die gleichen Schritte C # Bots verwenden und prüfen, richtig zu arbeiten.

Wir werden auf Ihre Antwort aufmerksam sein 😊

_Konfiguration der erweiterten Authentifizierung_
image

_Erfolgreiche Kommunikation mit Enhanced Authentication und TypeScript-Bots_
auth fixed

_Erfolgreiche Kommunikation mit Enhanced Authentication und C#-Bots_
image

Danke @VictorGrycuk. Wir entschuldigen uns für die späte Antwort, die wir zum Einrichten einer Testinstanz zur Überprüfung des Fixes benötigt haben. Wir konnten die Authentifizierung in der Testinstanz zum Laufen bringen und das Problem eingrenzen.

Für unsere Instanz der VA /Skills haben wir sie hinter einem App-Gateway mit einer Firewall. Dies scheint der Grund zu sein, warum die erweiterte Authentifizierung nicht funktioniert. Wenn wir dies auf einer VA und einem Skill außerhalb dieser Konfiguration implementieren, funktioniert es ordnungsgemäß. Das App-Gateway fügt einen anderen Host in die Mischung ein und wir denken, dass dies das Token blockiert. Wir haben also folgende Frage,

Gibt es eine Möglichkeit, die erweiterte Authentifizierung mit einem Bot hinter einem App Gateway zum Laufen zu bringen?

Großartig @tomSauret847! Wir werden eine Recherche und einige Tests durchführen, um einen Weg zu überprüfen, wie die erweiterte Authentifizierung mit einem Bot hinter einem App-Gateway funktioniert.

Sobald wir dazu ein Update haben, geben wir hier Bescheid 😊.

Hallo @tomSauret847 , wir haben ein wenig recherchiert und sind auf einige Fragen gekommen .

  1. Testen Sie mit den Bots, die in Azure oder auf dem Server von Promises bereitgestellt werden?
  2. Ist Ihr Anwendungsgateway ein Azure Application Gateway ?
  3. Verwenden Sie TypeScript- oder C#-Bots? Wie Sie bereits erwähnt haben, sind Sie auf C#-Bots umgestiegen.

Wir werden auf Ihre Antwort aufmerksam sein 🙂

Vielen Dank, dass Sie @VictorGrycuk geantwortet haben. Hier sind die Antworten auf unsere Fragen.

  1. Wir testen mit den Bots, die in Azure bereitgestellt werden. Wir können keinen Tunnel erstellen, um lokal zu testen.

  2. Ja, wir verwenden ein Azure-Anwendungsgateway mit einer WAF, wie in Ihrem Link beschrieben

  3. Dies sind TypeScript-Bots (VA und 2 Skills mit Authentifizierung). Wir verwenden nur 1 C#-Skill, um das Problem mit der synchronen Schleife zu

Hallo @tomSauret847 , entschuldigen Sie die Verzögerung - wir denken, dass es möglich sein sollte , Enhanced Authentication mit einem Azure App Gateway mit den Bots dahinter zu verwenden.

Ein paar zusätzliche Fragen :

  1. Können Sie mit einem Emulator über die öffentliche IP des Gateways eine Verbindung zum Virtual Assistant herstellen? In unseren Tests haben wir bestätigt, dass dies möglich ist
  2. Können Sie sich über die VA ohne erweiterte Kommunikation mit einem Skill verbinden und mit ihm kommunizieren?

Komponenten :

Konfiguration :

  • Virtueller Assistent mit erweiterter Authentifizierung, wie in diesem Kommentar erläutert
  • Der Skill, der mit dem mit der Authentifizierung konfigurierten virtuellen Assistenten verbunden ist
  • Direct Line wie im gleichen Kommentar wie oben konfiguriert
  • Application Gateway, das auf den bereitgestellten Bot verweist, wie in diesem Artikel erläutert

Wir werden daran arbeiten, dieses Szenario zu replizieren.

Danke @VictorGrycuk Die Antworten auf deine Fragen sind
Können Sie mit einem Emulator über die öffentliche IP des Gateways eine Verbindung zum Virtual Assistant herstellen? In unseren Tests haben wir bestätigt, dass dies möglich ist

  • Wir haben kein Tunneling zur Verfügung, wir können uns nicht mit einem Emulator mit der VA verbinden, aber wir haben einen Web-Chat zur Verfügung. Die VA verbindet sich mit dem Skill und schließt die Dialoge ab.

Können Sie sich über die VA ohne erweiterte Kommunikation mit einem Skill verbinden und mit ihm kommunizieren?

  • Ja, wenn wir keine erweiterte Authentifizierung verwenden, können wir den Code kopieren und einfügen und die Authentifizierung funktioniert wie erwartet. Wir wünschen uns die nahtlose Integration, die die erweiterte Authentifizierung unseren Benutzern bietet.

Hallo @tomSauret847 , wir können bestätigen, dass die erweiterte Authentifizierung mit den Bots hinter einem Azure Application Gateway funktioniert .

Wir haben die PR #3694 erstellt , die eine neue Dokumentation zum Konfigurieren eines Azure Application Gateway mit einem bereitgestellten Bot enthält.

Wir haben unseren Test mit diesen Schritten durchgeführt :

  1. Befolgen Sie die in diesem Kommentar beschriebenen Schritte, um Bots mit erweiterter Authentifizierung bereitzustellen
  2. Befolgen Sie die Schritte im Dokument Konfigurieren des
  3. Testen Sie die Anmeldung des bereitgestellten Skills mit dem Directline-Beispiel
  4. Die Enhanced Authentication funktionierte und der Skill Sample Dialog wurde wie erwartet fortgesetzt

Da dies ein Konfigurationsproblem von Azure Application Gateway zu sein scheint, empfehle ich Ihnen, unter https://stackoverflow.com/questions/tagged/botframework nach Vorschlägen zu fragen. und wenn Sie in Ordnung sind, können wir dieses Problem schließen 🙂.

Danke @VictorGrycuk Wir werden die von Ihnen geposteten Informationen Link defekt ist.

Danke @tomSauret847 , dieser Link führt zum Konfigurieren der Integritätsprüfung eines Gateways mit einem TypeScript-Bot (sowie dieses Bild ), sobald die Dokumente in den master Zweig zusammengeführt wurden, da die Dokumentation {{site.baseurl}} um die URLs generieren.

@peterinnesmsft - wir können das Problem aufgrund von Inaktivität schließen. @tomSauret847 Wenn weiterhin Probleme auftreten, können Sie sie

Wenn Sie Fragen haben, wenden Sie sich bitte an https://stackoverflow.com/questions/tagged/botframework.

Der gesamte Authentifizierungsprozess wird gelöst, sobald die folgenden PRs für TypeScript Version 1.0 zusammengeführt werden:

  • PR #3583: [TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
  • PR #3584: [TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
  • PR #3585: [TypeScript][Skill] Implement changes in Skill to 1.0 release

Danke @Batta32 für deine Hilfe dabei. Wir müssen diesen Abschnitt vorerst pausieren, daher werde ich diese Ausgabe schließen und bei Problemen erneut öffnen, wenn wir sie wieder aufnehmen.

@Batta32 Wir haben eine

Hallo @tomSauret847 , SSO ist derzeit für TypeScript nicht verfügbar, da es in Version 1.0 eingeführt wird. Die PRs von TypeScript Version 1.0 sollten genehmigt und zusammengeführt werden, um eine neue Version mit dieser Funktion zu veröffentlichen.

Wir werden Sie informieren, sobald wir ein Update haben 😊.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen