Troubleshooting Bot Framework authentication (Problemen met Bot Framework-verificatie oplossen)
VAN TOEPASSING OP: SDK v4
Deze handleiding kan u helpen bij het oplossen van verificatieproblemen met uw bot door een reeks scenario's te evalueren om te bepalen waar het probleem zich voordoet.
Notitie
Als u alle stappen in deze handleiding wilt uitvoeren, moet u de Bot Framework Emulator downloaden en gebruiken en moet u toegang hebben tot de registratie-instellingen van de bot in Azure Portal.
App-id en -wachtwoord
Botbeveiliging wordt geconfigureerd door de Microsoft-app-id en het Microsoft App-wachtwoord dat u verkrijgt wanneer u uw bot registreert bij Bot Framework. Deze waarden worden doorgaans opgegeven in het configuratiebestand van de bot en worden gebruikt om toegangstokens op te halen uit de Microsoft-accountservice.
Als u dit nog niet hebt gedaan, implementeert u uw bot in Azure om een Microsoft-app-id en Een Microsoft App-wachtwoord te verkrijgen dat kan worden gebruikt voor verificatie.
Notitie
Zie MicrosoftAppID en MicrosoftAppPassword voor een al geïmplementeerde bot om de AppID en AppPassword van uw bot te vinden.
Stap 1: Beveiliging uitschakelen en testen op localhost
In deze stap controleert u of uw bot toegankelijk en functioneel is op localhost wanneer beveiliging is uitgeschakeld.
Waarschuwing
Als u de beveiliging voor uw bot uitschakelt, kunnen onbekende aanvallers gebruikers imiteren. Implementeer alleen de volgende procedure als u werkt in een beveiligde foutopsporingsomgeving.
Beveiliging uitschakelen
Als u de beveiliging voor uw bot wilt uitschakelen, bewerkt u de configuratie-instellingen om de waarden voor de app-id en het wachtwoord te verwijderen.
Als u de Bot Framework SDK voor .NET gebruikt, voegt u de instellingen toe of bewerkt u deze in uw appsettings.json-bestand :
"MicrosoftAppId": "",
"MicrosoftAppPassword": ""
Uw bot testen op localhost
Test vervolgens uw bot op localhost met behulp van de Bot Framework Emulator.
- Start uw bot op localhost.
- Start de Bot Framework Emulator.
- Maak verbinding met uw bot met behulp van de emulator.
- Typ
http://localhost:port-number/api/messages
in de adresbalk van de emulator, waarbij het poortnummer overeenkomt met het poortnummer dat wordt weergegeven in de browser waarin uw toepassing wordt uitgevoerd. - Zorg ervoor dat de velden Microsoft App ID en Microsoft App Password beide leeg zijn.
- Klik op Verbinding maken.
- Typ
- Als u de verbinding met uw bot wilt testen, typt u tekst in de emulator en drukt u op Enter.
Als de bot reageert op de invoer en er geen fouten zijn in het chatvenster, hebt u gecontroleerd of uw bot toegankelijk en functioneel is op localhost wanneer de beveiliging is uitgeschakeld. Ga verder met stap 2.
Als een of meer fouten worden aangegeven in het chatvenster, klikt u op de fout(en) voor meer informatie. Veelvoorkomende problemen zijn:
- De emulatorinstellingen geven een onjuist eindpunt voor de bot op. Zorg ervoor dat u het juiste poortnummer hebt opgenomen in de URL en het juiste pad aan het einde van de URL, zoals
/api/messages
. - Met de emulatorinstellingen geeft u een boteindpunt op dat begint met
https
. Op localhost moet het eindpunt beginnen methttp
. - De emulatorinstellingen geven een waarde op voor het veld Microsoft-app-id en/of het veld Wachtwoord voor Microsoft-app. Beide velden moeten leeg zijn.
- Beveiliging is niet uitgeschakeld voor de bot. Controleer of de bot geen waarde opgeeft voor de app-id of het wachtwoord.
Stap 2: de app-id en het wachtwoord van uw bot verifiëren
In deze stap controleert u of de app-id en het wachtwoord die uw bot gebruikt voor verificatie geldig zijn. (Als u deze waarden niet kent, verkrijgt u deze nu.)
Waarschuwing
Met de volgende instructies wordt SSL-verificatie uitgeschakeld voor login.microsoftonline.com
. Voer deze procedure alleen uit op een beveiligd netwerk en overweeg daarna het wachtwoord van uw toepassing te wijzigen.
Een HTTP-aanvraag verzenden naar de Microsoft-aanmeldingsservice
In deze instructies wordt beschreven hoe u cURL gebruikt om een HTTP-aanvraag uit te geven aan de Microsoft-aanmeldingsservice. U kunt een alternatief hulpprogramma zoals Postman gebruiken, om ervoor te zorgen dat de aanvraag voldoet aan het Bot Framework-verificatieprotocol.
Als u wilt controleren of de app-id en het wachtwoord van uw bot geldig zijn, geeft u de volgende aanvraag uit met behulp van cURL, waarbij u de app-id en het wachtwoord van uw bot vervangt APP_ID
en APP_PASSWORD
vervangt.
Tip
Uw wachtwoord kan speciale tekens bevatten die de volgende aanroep ongeldig maken. Zo ja, probeer dan uw wachtwoord te converteren naar URL-codering.
curl -k -X POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token -d "grant_type=client_credentials&client_id=APP_ID&client_secret=APP_PASSWORD&scope=https%3A%2F%2Fapi.botframework.com%2F.default"
Met deze aanvraag wordt geprobeerd de app-id en het wachtwoord van uw bot uit te wisselen voor een toegangstoken. Als de aanvraag is geslaagd, ontvangt u onder andere een JSON-nettolading die een access_token
eigenschap bevat.
{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAJKV1Q..."}
Als de aanvraag is geslaagd, hebt u gecontroleerd of de app-id en het wachtwoord die u in de aanvraag hebt opgegeven, geldig zijn. Ga verder met stap 3.
Als er een fout optreedt in reactie op de aanvraag, bekijkt u het antwoord om de oorzaak van de fout te identificeren. Als het antwoord aangeeft dat de app-id of het wachtwoord ongeldig is, haalt u de juiste waarden op uit de Bot Framework-portal en voert u de aanvraag opnieuw uit met de nieuwe waarden om te bevestigen dat deze geldig zijn.
Stap 3: Beveiliging en testen inschakelen op localhost
Op dit moment hebt u gecontroleerd of uw bot toegankelijk en functioneel is op localhost wanneer de beveiliging is uitgeschakeld en bevestigd dat de app-id en het wachtwoord die de bot voor verificatie zal gebruiken, geldig zijn. In deze stap controleert u of uw bot toegankelijk en functioneel is op localhost wanneer beveiliging is ingeschakeld.
Beveiliging inschakelen
De beveiliging van uw bot is afhankelijk van Microsoft-services, zelfs wanneer uw bot alleen op localhost wordt uitgevoerd. Als u beveiliging voor uw bot wilt inschakelen, bewerkt u de configuratie-instellingen om de app-id en het wachtwoord te vullen met de waarden die u in stap 2 hebt geverifieerd. Zorg er bovendien voor dat uw pakketten up-to-date zijn, met name System.IdentityModel.Tokens.Jwt
en Microsoft.IdentityModel.Tokens
.
Als u de Bot Framework SDK voor .NET gebruikt, vult u deze instellingen in uw appsettings.config
of de bijbehorende waarden in uw appsettings.json
bestand:
<appSettings>
<add key="MicrosoftAppId" value="APP_ID" />
<add key="MicrosoftAppPassword" value="PASSWORD" />
</appSettings>
Als u de Bot Framework SDK voor Node.js gebruikt, vult u deze instellingen in (of werkt u de bijbehorende omgevingsvariabelen bij):
var connector = new builder.ChatConnector({
appId: 'APP_ID',
appPassword: 'PASSWORD'
});
Notitie
Zie MicrosoftAppID en MicrosoftAppPassword om de AppID en AppPassword van uw bot te vinden.
Uw bot testen op localhost
Test vervolgens uw bot op localhost met behulp van de Bot Framework Emulator.
- Start uw bot op localhost.
- Start de Bot Framework Emulator.
- Maak verbinding met uw bot met behulp van de emulator.
- Typ
http://localhost:port-number/api/messages
in de adresbalk van de emulator, waarbij het poortnummer overeenkomt met het poortnummer dat wordt weergegeven in de browser waarin uw toepassing wordt uitgevoerd. - Voer de app-id van uw bot in het veld Microsoft App ID in.
- Voer het wachtwoord van uw bot in het veld Wachtwoord van de Microsoft-app in.
- Klik op Verbinding maken.
- Typ
- Als u de verbinding met uw bot wilt testen, typt u tekst in de emulator en drukt u op Enter.
Als de bot reageert op de invoer en er geen fouten zijn in het chatvenster, hebt u gecontroleerd of uw bot toegankelijk en functioneel is op localhost wanneer beveiliging is ingeschakeld. Ga verder met stap 4.
Als een of meer fouten worden aangegeven in het chatvenster, klikt u op de fout(en) voor meer informatie. Veelvoorkomende problemen zijn:
- De emulatorinstellingen geven een onjuist eindpunt voor de bot op. Zorg ervoor dat u het juiste poortnummer hebt opgenomen in de URL en het juiste pad aan het einde van de URL, zoals
/api/messages
. - Met de emulatorinstellingen geeft u een boteindpunt op dat begint met
https
. Op localhost moet het eindpunt beginnen methttp
. - In de emulatorinstellingen bevatten het veld Microsoft-app-id en/of het Microsoft App-wachtwoord geen geldige waarden. Beide velden moeten worden ingevuld en elk veld moet de bijbehorende waarde bevatten die u in stap 2 hebt geverifieerd.
- Beveiliging is niet ingeschakeld voor de bot. Controleer of de botconfiguratie-instellingen waarden voor zowel app-id als wachtwoord opgeven.
Stap 4: Uw bot testen in de cloud
Op dit moment hebt u gecontroleerd of uw bot toegankelijk en functioneel is op localhost wanneer beveiliging is uitgeschakeld, bevestigt u dat de app-id en het wachtwoord van uw bot geldig zijn en controleert u of uw bot toegankelijk en functioneel is op localhost wanneer beveiliging is ingeschakeld. In deze stap implementeert u uw bot in de cloud en controleert u of deze daar toegankelijk en functioneel is met beveiliging ingeschakeld.
Uw bot implementeren in de cloud
Het Bot Framework vereist dat bots toegankelijk zijn vanaf internet, dus u moet uw bot implementeren op een cloudhostingplatform zoals Azure. Zorg ervoor dat u de beveiliging voor uw bot inschakelt vóór de implementatie, zoals beschreven in stap 3.
Notitie
Als u nog geen cloudhostingprovider hebt, kunt u zich registreren voor een gratis account.
Als u uw bot implementeert in Azure, wordt SSL automatisch geconfigureerd voor uw toepassing, waardoor het HTTPS-eindpunt wordt ingeschakeld dat het Bot Framework vereist. Als u implementeert in een andere cloudhostingprovider, controleert u of uw toepassing is geconfigureerd voor SSL, zodat de bot een HTTPS-eindpunt heeft.
Uw bot testen
Voer de volgende stappen uit om uw bot in de cloud te testen met beveiliging ingeschakeld.
- Zorg ervoor dat uw bot is geïmplementeerd en wordt uitgevoerd.
- Meld u aan bij het Azure-portaal.
- Navigeer in de portal naar de Azure Bot-resource voor uw bot.
- Klik op Testen in Webchat in het deelvenster Botbeheer aan de linkerkant.
- Als u de verbinding met uw bot wilt testen, typt u tekst in het besturingselement voor webchats en drukt u op Enter.
Als er een fout wordt aangegeven in het chatvenster, gebruikt u het foutbericht om de oorzaak van de fout te bepalen. Veelvoorkomende problemen zijn:
- Het berichteindpunt dat is opgegeven op de pagina Instellingen voor uw bot in de Bot Framework-portal, is onjuist. Zorg ervoor dat u het juiste pad aan het einde van de URL hebt opgenomen, zoals
/api/messages
. - Het berichteindpunt dat is opgegeven op de pagina Instellingen voor uw bot in de Bot Framework-portal, begint niet met
https
of wordt niet vertrouwd door Bot Framework. Uw bot moet een geldig, ketenvertrouwenscertificaat hebben. - De bot is geconfigureerd met ontbrekende of onjuiste waarden voor app-id of wachtwoord. Controleer of de botconfiguratie-instellingen geldige waarden voor de app-id en het wachtwoord opgeven.
Als de bot op de juiste wijze reageert op de invoer, hebt u gecontroleerd of uw bot toegankelijk en functioneel is in de cloud met beveiliging ingeschakeld. Op dit moment is uw bot klaar om veilig verbinding te maken met een kanaal zoals Facebook Messenger, Direct Line en anderen.
Aanvullende bronnen
Als u nog steeds problemen ondervindt nadat u de bovenstaande stappen hebt voltooid, kunt u het volgende doen:
- Bekijk instructies voor het opsporen van fouten in een bot en de andere artikelen over foutopsporing in die sectie.
- Fouten opsporen in uw bot in de cloud met behulp van de Bot Framework Emulator en [Dev Tunnels](https://aka.ms/devtunnels tunnelingsoftware.
- Gebruik een proxyprogramma zoals Fiddler om HTTPS-verkeer van en naar uw bot te inspecteren. Fiddler is geen Microsoft-product.
- Raadpleeg de botconnectorverificatiehandleiding voor meer informatie over de verificatietechnologieën die het Bot Framework gebruikt.
- Vraag om hulp van anderen met behulp van de Bot Framework-ondersteuningsbronnen.