Felsöka autentisering av Bot Framework

GÄLLER FÖR: SDK v4

Den här guiden kan hjälpa dig att felsöka autentiseringsproblem med din robot genom att utvärdera en serie scenarier för att avgöra var problemet finns.

Kommentar

Om du vill slutföra alla steg i den här guiden måste du ladda ned och använda Bot Framework-emulatorn och ha åtkomst till robotens registreringsinställningar i Azure-portalen.

app-ID och lösenord

Robotsäkerhet konfigureras av Det Microsoft App-ID och Microsoft App Password som du får när du registrerar din robot med Bot Framework. Dessa värden anges vanligtvis i robotens konfigurationsfil och används för att hämta åtkomsttoken från Microsoft-kontotjänsten.

Om du inte har gjort det ännu distribuerar du din robot till Azure för att hämta ett Microsoft App-ID och Microsoft App Password som den kan använda för autentisering.

Kommentar

Information om hur du hittar robotens AppID och AppPassword för en redan distribuerad robot finns i MicrosoftAppID och MicrosoftAppPassword.

Steg 1: Inaktivera säkerhet och testning på localhost

I det här steget kontrollerar du att roboten är tillgänglig och fungerar på localhost när säkerheten är inaktiverad.

Varning

Om du inaktiverar säkerheten för din robot kan okända angripare personifiera användare. Implementera endast följande procedur om du arbetar i en skyddad felsökningsmiljö.

Inaktivera säkerhet

Om du vill inaktivera säkerheten för roboten redigerar du dess konfigurationsinställningar för att ta bort värdena för app-ID och lösenord.

Om du använder Bot Framework SDK för .NET lägger du till eller redigerar inställningarna i filen appsettings.json :

"MicrosoftAppId": "",
"MicrosoftAppPassword": ""

Testa roboten på localhost

Testa sedan din robot på localhost med hjälp av Bot Framework-emulatorn.

  1. Starta roboten på localhost.
  2. Starta Bot Framework-emulatorn.
  3. Anslut till roboten med emulatorn.
    • Skriv http://localhost:port-number/api/messages in i emulatorns adressfält, där portnumret matchar portnumret som visas i webbläsaren där programmet körs.
    • Kontrollera att fälten Microsoft App ID och Microsoft App Password båda är tomma.
    • Klicka på Anslut.
  4. Om du vill testa anslutningen till roboten skriver du text i emulatorn och trycker på Retur.

Om roboten svarar på indata och det inte finns några fel i chattfönstret har du kontrollerat att roboten är tillgänglig och fungerar på localhost när säkerheten är inaktiverad. Fortsätt till steg 2.

Om ett eller flera fel anges i chattfönstret klickar du på felen för mer information. Vanliga problem:

  • Inställningarna för emulatorn anger en felaktig slutpunkt för roboten. Kontrollera att du har inkluderat rätt portnummer i URL:en och rätt sökväg i slutet av URL:en, till exempel /api/messages.
  • Inställningarna för emulatorn anger en robotslutpunkt som börjar med https. På localhost bör slutpunkten börja med http.
  • Inställningarna för emulatorn anger ett värde för fältet Microsoft App-ID och/eller fältet Microsoft AppLösenord. Båda fälten ska vara tomma.
  • Säkerheten har inte inaktiverats för roboten. Kontrollera att roboten inte anger något värde för app-ID eller lösenord.

Steg 2: Verifiera robotens app-ID och lösenord

I det här steget kontrollerar du att app-ID och lösenord som roboten använder för autentisering är giltiga. (Om du inte känner till dessa värden hämtar du dem nu.)

Varning

Följande instruktioner inaktiverar SSL-verifiering för login.microsoftonline.com. Utför endast den här proceduren i ett säkert nätverk och överväg att ändra programmets lösenord efteråt.

Utfärda en HTTP-begäran till Microsofts inloggningstjänst

De här anvisningarna beskriver hur du använder cURL för att utfärda en HTTP-begäran till Microsoft-inloggningstjänsten. Du kan använda ett alternativt verktyg som Postman, se bara till att begäran överensstämmer med Bot Framework-autentiseringsprotokollet.

Kontrollera att robotens app-ID och lösenord är giltiga genom att utfärda följande begäran med cURL, ersätta APP_ID och APP_PASSWORD med robotens app-ID och lösenord.

Dricks

Lösenordet kan innehålla specialtecken som gör följande anrop ogiltigt. I så fall kan du försöka konvertera lösenordet till URL-kodning.

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"

Den här begäran försöker byta robotens app-ID och lösenord mot en åtkomsttoken. Om begäran lyckas får du en JSON-nyttolast som bland annat innehåller en access_token egenskap.

{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAJKV1Q..."}

Om begäran lyckas har du verifierat att app-ID:t och lösenordet som du angav i begäran är giltiga. Fortsätt till steg 3.

Om du får ett fel som svar på begäran granskar du svaret för att identifiera orsaken till felet. Om svaret anger att app-ID:t eller lösenordet är ogiltigt hämtar du rätt värden från Bot Framework-portalen och skickar begäran igen med de nya värdena för att bekräfta att de är giltiga.

Steg 3: Aktivera säkerhet och test på localhost

Nu har du verifierat att roboten är tillgänglig och fungerar på localhost när säkerheten är inaktiverad och bekräftat att app-ID och lösenord som roboten använder för autentisering är giltiga. I det här steget kontrollerar du att roboten är tillgänglig och fungerar på localhost när säkerheten är aktiverad.

Aktivera säkerhet

Robotens säkerhet förlitar sig på Microsoft-tjänster, även om roboten bara körs på localhost. Om du vill aktivera säkerhet för din robot redigerar du dess konfigurationsinställningar för att fylla i app-ID och lösenord med de värden som du verifierade i steg 2. Se dessutom till att dina paket är uppdaterade, särskilt System.IdentityModel.Tokens.Jwt och Microsoft.IdentityModel.Tokens.

Om du använder Bot Framework SDK för .NET fyller du i inställningarna i dina appsettings.config eller motsvarande värden i appsettings.json filen:

<appSettings>
  <add key="MicrosoftAppId" value="APP_ID" />
  <add key="MicrosoftAppPassword" value="PASSWORD" />
</appSettings>

Om du använder Bot Framework SDK för Node.js fyller du i dessa inställningar (eller uppdaterar motsvarande miljövariabler):

var connector = new builder.ChatConnector({
  appId: 'APP_ID',
  appPassword: 'PASSWORD'
});

Kommentar

Information om hur du hittar robotens AppID och AppPassword finns i MicrosoftAppID och MicrosoftAppPassword.

Testa roboten på localhost

Testa sedan din robot på localhost med hjälp av Bot Framework-emulatorn.

  1. Starta roboten på localhost.
  2. Starta Bot Framework-emulatorn.
  3. Anslut till roboten med emulatorn.
    • Skriv http://localhost:port-number/api/messages in i emulatorns adressfält, där portnumret matchar portnumret som visas i webbläsaren där programmet körs.
    • Ange robotens app-ID i fältet Microsoft App-ID .
    • Ange robotens lösenord i fältet Lösenord för Microsoft-appen .
    • Klicka på Anslut.
  4. Om du vill testa anslutningen till roboten skriver du text i emulatorn och trycker på Retur.

Om roboten svarar på indata och det inte finns några fel i chattfönstret har du kontrollerat att roboten är tillgänglig och fungerar på localhost när säkerheten är aktiverad. Fortsätt till steg 4.

Om ett eller flera fel anges i chattfönstret klickar du på felen för mer information. Vanliga problem:

  • Inställningarna för emulatorn anger en felaktig slutpunkt för roboten. Kontrollera att du har inkluderat rätt portnummer i URL:en och rätt sökväg i slutet av URL:en, till exempel /api/messages.
  • Inställningarna för emulatorn anger en robotslutpunkt som börjar med https. På localhost bör slutpunkten börja med http.
  • I emulatorinställningarna innehåller fältet Microsoft App-ID och/eller Microsoft App Password inte giltiga värden. Båda fälten ska fyllas i och varje fält ska innehålla motsvarande värde som du verifierade i steg 2.
  • Säkerhet har inte aktiverats för roboten. Kontrollera att robotkonfigurationsinställningarna anger värden för både app-ID och lösenord.

Steg 4: Testa din robot i molnet

Nu har du kontrollerat att roboten är tillgänglig och fungerar på localhost när säkerheten är inaktiverad, bekräftat att robotens app-ID och lösenord är giltiga och verifierat att roboten är tillgänglig och fungerar på localhost när säkerheten är aktiverad. I det här steget distribuerar du din robot till molnet och kontrollerar att den är tillgänglig och funktionell där med säkerhet aktiverat.

Distribuera din robot till molnet

Bot Framework kräver att robotar är tillgängliga från Internet, så du måste distribuera din robot till en molnvärdplattform som Azure. Se till att aktivera säkerhet för din robot före distributionen, enligt beskrivningen i steg 3.

Kommentar

Om du inte redan har en molnvärdleverantör kan du registrera dig för ett kostnadsfritt konto.

Om du distribuerar din robot till Azure konfigureras SSL automatiskt för ditt program, vilket aktiverar DEN HTTPS-slutpunkt som Bot Framework kräver. Om du distribuerar till en annan molnvärdleverantör kontrollerar du att programmet har konfigurerats för SSL så att roboten har en HTTPS-slutpunkt .

Testa din robot

Utför följande steg för att testa din robot i molnet med säkerhet aktiverat.

  1. Kontrollera att roboten har distribuerats och körs.
  2. Logga in på Azure-portalen.
  3. Gå till Azure Bot-resursen för din robot i portalen.
  4. Klicka på Testa i Webbchatt i fönstret Robothantering till vänster.
  5. Om du vill testa anslutningen till din robot skriver du text i webbchattkontrollen och trycker på Retur.

Om ett fel anges i chattfönstret använder du felmeddelandet för att fastställa orsaken till felet. Vanliga problem:

  • Den meddelandeslutpunkt som anges på sidan Inställningar för din robot i Bot Framework-portalen är felaktig. Kontrollera att du har inkluderat rätt sökväg i slutet av URL:en, till exempel /api/messages.
  • Den meddelandeslutpunkt som anges på sidan Inställningar för din robot i Bot Framework-portalen börjar inte med https eller är inte betrodd av Bot Framework. Roboten måste ha ett giltigt, kedjebetrott certifikat.
  • Roboten har konfigurerats med saknade eller felaktiga värden för app-ID eller lösenord. Kontrollera att inställningarna för robotkonfiguration anger giltiga värden för app-ID och lösenord.

Om roboten svarar korrekt på indata har du kontrollerat att roboten är tillgänglig och fungerar i molnet med säkerhet aktiverat. Nu är roboten redo att ansluta på ett säkert sätt till en kanal som Facebook Messenger, Direct Line och andra.

Ytterligare resurser

Om du fortfarande har problem när du har slutfört stegen ovan kan du:

  • Granska felsökning av en robot och de andra felsökningsartiklarna i det avsnittet.
  • Felsöka din robot i molnet med hjälp av Bot Framework-emulatorn och ngroktunnelprogramvaran . ngrok är inte en Microsoft-produkt.
  • Använd ett proxyverktyg som Fiddler för att inspektera HTTPS-trafik till och från din robot. Fiddler är inte en Microsoft-produkt.
  • Läs autentiseringsguiden för bot Anslut eller för att lära dig mer om de autentiseringstekniker som Bot Framework använder.
  • Be om hjälp från andra med hjälp av Bot Framework-supportresurserna.