Udostępnij za pośrednictwem


Rozwiązywanie problemów z uwierzytelnianiem platformy Bot Framework

DOTYCZY: ZESTAW SDK w wersji 4

Ten przewodnik może pomóc w rozwiązywaniu problemów z uwierzytelnianiem bota, oceniając serię scenariuszy w celu określenia, gdzie istnieje problem.

Uwaga

Aby wykonać wszystkie kroki opisane w tym przewodniku, musisz pobrać i użyć emulatora bota i mieć dostęp do ustawień rejestracji bota w witrynie Azure Portal.

Identyfikator i hasło aplikacji

Zabezpieczenia bota są konfigurowane przez identyfikator aplikacji firmy Microsoft i hasło aplikacji firmy Microsoft, które uzyskujesz podczas rejestrowania bota w usłudze Bot Framework. Te wartości są zwykle określane w pliku konfiguracji bota i używane do pobierania tokenów dostępu z usługi konta Microsoft.

Jeśli jeszcze tego nie zrobiono, wdróż bota na platformie Azure, aby uzyskać identyfikator aplikacji firmy Microsoft i hasło aplikacji firmy Microsoft, których może użyć do uwierzytelniania.

Uwaga

Aby znaleźć identyfikator AppID bota i element AppPassword dla już wdrożonego bota, zobacz MicrosoftAppID i MicrosoftAppPassword.

Krok 1. Wyłączanie zabezpieczeń i testowania na hoście lokalnym

W tym kroku sprawdzisz, czy bot jest dostępny i funkcjonalny na hoście lokalnym, gdy zabezpieczenia są wyłączone.

Ostrzeżenie

Wyłączenie zabezpieczeń bota może umożliwić nieznanym osobom atakującym personifikację użytkowników. Zaimplementuj poniższą procedurę tylko wtedy, gdy pracujesz w chronionym środowisku debugowania.

Wyłączanie zabezpieczeń

Aby wyłączyć zabezpieczenia bota, zmodyfikuj jego ustawienia konfiguracji, aby usunąć wartości identyfikatora aplikacji i hasła.

Jeśli używasz zestawu Bot Framework SDK dla platformy .NET, dodaj lub edytuj ustawienia w pliku appsettings.json :

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

Testowanie bota na hoście lokalnym

Następnie przetestuj bota na hoście lokalnym przy użyciu emulatora platformy Bot Framework.

  1. Uruchom bota na hoście lokalnym.
  2. Uruchom program Bot Framework Emulator.
  3. Połącz się z botem przy użyciu emulatora.
    • Wpisz http://localhost:port-number/api/messages na pasku adresu emulatora, gdzie numer portu odpowiada numerowi portu wyświetlanemu w przeglądarce, w której jest uruchomiona aplikacja.
    • Upewnij się, że pola Identyfikator aplikacji firmy Microsoft i Hasło aplikacji firmy Microsoft są puste.
    • Kliknij Połącz.
  4. Aby przetestować łączność z botem, wpisz tekst w emulatorze i naciśnij Enter.

Jeśli bot odpowiada na dane wejściowe i nie ma żadnych błędów w oknie czatu, sprawdzono, że bot jest dostępny i funkcjonalny na hoście lokalnym, gdy zabezpieczenia są wyłączone. Przejdź do kroku 2.

Jeśli co najmniej jeden błąd jest wskazany w oknie czatu, kliknij błędy, aby uzyskać szczegółowe informacje. Typowe problemy są następujące:

  • Ustawienia emulatora określają niepoprawny punkt końcowy bota. Upewnij się, że na końcu adresu URL dołączono prawidłowy numer portu i odpowiednią ścieżkę, na przykład /api/messages.
  • Ustawienia emulatora określają punkt końcowy bota rozpoczynający się od https. Na hoście lokalnym punkt końcowy powinien zaczynać się od http.
  • Ustawienia emulatora określają wartość pola Identyfikator aplikacji firmy Microsoft i/lub pole Hasło aplikacji microsoft. Oba pola powinny być puste.
  • Zabezpieczenia nie zostały wyłączone dla bota. Sprawdź, czy bot nie określa wartości identyfikatora aplikacji lub hasła.

Krok 2. Weryfikowanie identyfikatora i hasła aplikacji bota

W tym kroku sprawdzisz, czy identyfikator aplikacji i hasło używane przez bota do uwierzytelniania są prawidłowe. (Jeśli nie znasz tych wartości, uzyskaj je teraz).

Ostrzeżenie

Poniższe instrukcje wyłączają weryfikację SSL dla programu login.microsoftonline.com. Wykonaj tę procedurę tylko w bezpiecznej sieci i rozważ zmianę hasła aplikacji później.

Wystawianie żądania HTTP do usługi logowania firmy Microsoft

W tych instrukcjach opisano sposób używania biblioteki cURL do wystawiania żądania HTTP do usługi logowania firmy Microsoft. Możesz użyć alternatywnego narzędzia, takiego jak Postman, po prostu upewnij się, że żądanie jest zgodne z protokołem uwierzytelniania platformy Bot Framework.

Aby sprawdzić, czy identyfikator aplikacji i hasło bota są prawidłowe, wykonaj następujące żądanie przy użyciu biblioteki cURL, zastępując APP_ID element i APP_PASSWORD identyfikatorem aplikacji i hasłem bota.

Napiwek

Hasło może zawierać znaki specjalne, które sprawiają, że następujące wywołanie jest nieprawidłowe. Jeśli tak, spróbuj przekonwertować hasło na kodowanie adresów URL.

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"

To żądanie próbuje wymienić identyfikator aplikacji i hasło bota na token dostępu. Jeśli żądanie zakończy się pomyślnie, otrzymasz ładunek JSON zawierający access_token między innymi właściwość.

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

Jeśli żądanie zakończy się pomyślnie, zweryfikowano, że identyfikator aplikacji i hasło określone w żądaniu są prawidłowe. Przejdź do kroku 3.

Jeśli wystąpi błąd w odpowiedzi na żądanie, sprawdź odpowiedź, aby zidentyfikować przyczynę błędu. Jeśli odpowiedź wskazuje, że identyfikator aplikacji lub hasło są nieprawidłowe, uzyskaj poprawne wartości z portalu Bot Framework i ponownie prześlij żądanie przy użyciu nowych wartości, aby potwierdzić, że są prawidłowe.

Krok 3. Włączanie zabezpieczeń i testowania na hoście lokalnym

W tym momencie sprawdzono, że bot jest dostępny i funkcjonalny na hoście lokalnym, gdy zabezpieczenia są wyłączone i upewnij się, że identyfikator aplikacji i hasło, które bot będzie używał do uwierzytelniania, są prawidłowe. W tym kroku sprawdzisz, czy bot jest dostępny i funkcjonalny na hoście lokalnym po włączeniu zabezpieczeń.

Włączanie zabezpieczeń

Zabezpieczenia bota opierają się na usługi firmy Microsoft, nawet jeśli bot działa tylko na hoście lokalnym. Aby włączyć zabezpieczenia bota, zmodyfikuj jego ustawienia konfiguracji, aby wypełnić identyfikator aplikacji i hasło wartościami zweryfikowanymi w kroku 2. Ponadto upewnij się, że pakiety są aktualne, w szczególności System.IdentityModel.Tokens.Jwt i Microsoft.IdentityModel.Tokens.

Jeśli używasz zestawu Bot Framework SDK dla platformy .NET, wypełnij te ustawienia w pliku appsettings.config lub odpowiednie wartości:appsettings.json

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

Jeśli używasz zestawu Bot Framework SDK dla Node.js, wypełnij te ustawienia (lub zaktualizuj odpowiednie zmienne środowiskowe):

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

Uwaga

Aby znaleźć identyfikatory AppID i AppPassword bota, zobacz MicrosoftAppID i MicrosoftAppPassword.

Testowanie bota na hoście lokalnym

Następnie przetestuj bota na hoście lokalnym przy użyciu emulatora platformy Bot Framework.

  1. Uruchom bota na hoście lokalnym.
  2. Uruchom program Bot Framework Emulator.
  3. Połącz się z botem przy użyciu emulatora.
    • Wpisz http://localhost:port-number/api/messages na pasku adresu emulatora, gdzie numer portu odpowiada numerowi portu wyświetlanemu w przeglądarce, w której jest uruchomiona aplikacja.
    • Wprowadź identyfikator aplikacji bota w polu Identyfikator aplikacji firmy Microsoft.
    • Wprowadź hasło bota w polu Hasło aplikacji firmy Microsoft.
    • Kliknij Połącz.
  4. Aby przetestować łączność z botem, wpisz tekst w emulatorze i naciśnij Enter.

Jeśli bot odpowiada na dane wejściowe i nie ma żadnych błędów w oknie czatu, sprawdzono, że bot jest dostępny i funkcjonalny na hoście lokalnym po włączeniu zabezpieczeń. Przejdź do kroku 4.

Jeśli co najmniej jeden błąd jest wskazany w oknie czatu, kliknij błędy, aby uzyskać szczegółowe informacje. Typowe problemy są następujące:

  • Ustawienia emulatora określają niepoprawny punkt końcowy bota. Upewnij się, że na końcu adresu URL dołączono prawidłowy numer portu i odpowiednią ścieżkę, na przykład /api/messages.
  • Ustawienia emulatora określają punkt końcowy bota rozpoczynający się od https. Na hoście lokalnym punkt końcowy powinien zaczynać się od http.
  • W ustawieniach emulatora pole Identyfikator aplikacji firmy Microsoft i/lub hasło aplikacji firmy Microsoft nie zawierają prawidłowych wartości. Oba pola powinny zostać wypełnione, a każde pole powinno zawierać odpowiednią wartość zweryfikowaną w kroku 2.
  • Zabezpieczenia nie zostały włączone dla bota. Sprawdź, czy ustawienia konfiguracji bota określają wartości zarówno dla identyfikatora aplikacji, jak i hasła.

Krok 4. Testowanie bota w chmurze

W tym momencie sprawdzono, że bot jest dostępny i funkcjonalny na hoście lokalnym po wyłączeniu zabezpieczeń, potwierdził, że identyfikator aplikacji i hasło bota są prawidłowe i zweryfikowane, że bot jest dostępny i funkcjonalny na hoście lokalnym po włączeniu zabezpieczeń. W tym kroku wdrożysz bota w chmurze i sprawdzisz, czy jest dostępny i funkcjonalny z włączonymi zabezpieczeniami.

Wdrażanie bota w chmurze

Platforma Bot Framework wymaga, aby boty były dostępne z Internetu, dlatego należy wdrożyć bota na platformie hostingu w chmurze, takiej jak platforma Azure. Pamiętaj, aby włączyć zabezpieczenia bota przed wdrożeniem, zgodnie z opisem w kroku 3.

Uwaga

Jeśli nie masz jeszcze dostawcy hostingu w chmurze, możesz zarejestrować się w celu uzyskania bezpłatnego konta.

Jeśli wdrożysz bota na platformie Azure, protokół SSL zostanie automatycznie skonfigurowany dla aplikacji, włączając w ten sposób punkt końcowy HTTPS wymagany przez platformę Bot Framework. W przypadku wdrożenia u innego dostawcy hostingu w chmurze upewnij się, że aplikacja jest skonfigurowana pod kątem protokołu SSL, aby bot miał punkt końcowy HTTPS .

Testowanie bota

Aby przetestować bota w chmurze z włączonymi zabezpieczeniami, wykonaj następujące kroki.

  1. Upewnij się, że bot został pomyślnie wdrożony i działa.
  2. Zaloguj się w witrynie Azure Portal.
  3. Przejdź do zasobu usługi Azure Bot dla bota w portalu.
  4. Kliknij pozycję Testuj w czat internetowy w okienku Zarządzanie botami po lewej stronie.
  5. Aby przetestować łączność z botem, wpisz jakiś tekst w kontrolce czatu internetowego i naciśnij Enter.

Jeśli w oknie czatu zostanie wskazany błąd, użyj komunikatu o błędzie, aby określić przyczynę błędu. Typowe problemy są następujące:

  • Punkt końcowy obsługi komunikatów określony na stronie Ustawienia bota w portalu Bot Framework jest niepoprawny. Upewnij się, że na końcu adresu URL dołączono odpowiednią ścieżkę, na przykład /api/messages.
  • Punkt końcowy obsługi komunikatów określony na stronie Ustawienia bota w portalu Bot Framework nie zaczyna się https od lub nie jest zaufany przez platformę Bot Framework. Bot musi mieć prawidłowy, zaufany łańcuch certyfikatu.
  • Bot jest skonfigurowany z brakującymi lub nieprawidłowymi wartościami identyfikatora aplikacji lub hasła. Sprawdź, czy ustawienia konfiguracji bota określają prawidłowe wartości identyfikatora aplikacji i hasła.

Jeśli bot odpowiednio odpowiada na dane wejściowe, sprawdzono, że bot jest dostępny i funkcjonalny w chmurze z włączonymi zabezpieczeniami. W tym momencie bot jest gotowy do bezpiecznego łączenia się z kanałem , takim jak Facebook Messenger, Direct Line i inne.

Dodatkowe zasoby

Jeśli po wykonaniu powyższych kroków nadal występują problemy, możesz wykonać następujące czynności:

  • Zapoznaj się z instrukcjami debugowania bota i innymi artykułami debugowania w tej sekcji.
  • Debugowanie bota w chmurze przy użyciu emulatora platformy Bot Framework i [Dev Tunnels](https://aka.ms/devtunnels oprogramowania tunelowania.
  • Użyj narzędzia proxy, takiego jak Fiddler , aby sprawdzić ruch HTTPS do i z bota. Program Fiddler nie jest produktem firmy Microsoft.
  • Zapoznaj się z przewodnikiem uwierzytelniania łącznika botów, aby dowiedzieć się więcej o technologiach uwierzytelniania używanych przez platformę Bot Framework.
  • Pozyskiwanie pomocy od innych osób przy użyciu zasobów pomocy technicznej platformy Bot Framework.