Risoluzione dei problemi relativi all'autenticazione di Bot Framework
SI APPLICA A: SDK v4
Questa guida consente di risolvere i problemi di autenticazione con il bot valutando una serie di scenari per determinare l'origine del problema.
Nota
Per completare tutti i passaggi di questa guida, è necessario scaricare e usare Bot Framework Emulator e avere accesso alle impostazioni di registrazione del bot nel portale di Azure.
ID e la password dell'app
La sicurezza del bot si configura tramite l'ID app Microsoft e la password app Microsoft che si ottengono quando si registra il bot in Bot Framework. Questi valori sono in genere specificati nel file di configurazione del bot e consentono di recuperare i token di accesso dal servizio account Microsoft.
Se non è ancora stato fatto, distribuire il bot in Azure per ottenere un ID app Microsoft e una password dell'app Microsoft che può essere usata per l'autenticazione.
Nota
Per trovare gli elementi AppID e AppPassword del bot per un bot già distribuito, vedere MicrosoftAppID e MicrosoftAppPassword.
Passaggio 1: Disabilitare la sicurezza e i test in localhost
In questo passaggio si verificherà che il bot sia accessibile e funzionale in localhost quando la sicurezza è disabilitata.
Avviso
La disattivazione della protezione per il bot potrebbe consentire a utenti malintenzionati di rappresentare utenti. Implementare la procedura seguente solo se si opera in un ambiente di debug protetto.
Disabilitare la sicurezza
Per sicurezza la protezione per il bot, modificarne le impostazioni di configurazione per rimuovere i valori di ID app e password.
Se si usa Bot Framework SDK per .NET, aggiungere o modificare le impostazioni nel file appsettings.json :
"MicrosoftAppId": "",
"MicrosoftAppPassword": ""
Testare il bot in localhost
A questo punto, testare il bot in localhost usando Bot Framework Emulator.
- Avviare il bot in localhost.
- Avviare Bot Framework Emulator.
- Connettersi al bot usando l'emulatore.
- Digitare
http://localhost:port-number/api/messages
nella barra degli indirizzi dell'emulatore, dove numero di porta corrisponde al numero di porta visualizzato nel browser in cui è in esecuzione l'applicazione. - Verificare che i campi Microsoft App ID (ID app Microsoft) e Microsoft App Password (Password app Microsoft) siano vuoti.
- Fare clic su Connetti.
- Digitare
- Per testare la connettività al bot, digitare un testo nell'emulatore e premere INVIO.
Se il bot risponde all'input e non sono presenti errori nella finestra della chat, è stato verificato che il bot è accessibile e funzionale in localhost quando la sicurezza è disabilitata. Andare al Passaggio 2.
Se la finestra della chat segnala uno o più errori, fare clic sugli errori per i dettagli. I problemi comuni includono:
- Le impostazioni dell'emulatore specificano un endpoint non corretto per il bot. Assicurarsi di aver incluso il numero di porta corretto nell'URL e il percorso appropriato alla fine dell'URL, ad esempio
/api/messages
. - Le impostazioni dell'emulatore specificano un endpoint bot che inizia con
https
. In localhost, l'endpoint deve iniziare conhttp
. - Le impostazioni dell'emulatore specificano un valore per il campo ID app Microsoft e/o il campo Password dell'app Microsoft. Entrambi i campi devono essere vuoti.
- La sicurezza non è stata disabilitata per il bot. Verificare che il bot non specifichi un valore per l'ID app o la password.
Passaggio 2: Verificare l'ID e la password dell'app del bot
In questo passaggio si verificherà che l'ID app e la password che il bot userà per l'autenticazione siano validi. Se non si conoscono questi valori, ottenerli ora.
Avviso
Le istruzioni seguenti disabilitano la verifica SSL per login.microsoftonline.com
. Eseguire questa procedura solo in una rete protetta e successivamente considerare la modifica della password dell'applicazione.
Inviare una richiesta HTTP al servizio di accesso Microsoft
Queste istruzioni descrivono come usare cURL per inviare una richiesta HTTP al servizio di accesso Microsoft. È possibile usare uno strumento alternativo, ad esempio Postman, ma assicurarsi che la richiesta sia conforme al protocollo di autenticazione di Bot Framework.
Per verificare che l'ID app e la password del bot siano validi, inviare la richiesta seguente tramite cURL, sostituendo APP_ID
e APP_PASSWORD
con l'ID app e la password del bot.
Suggerimento
La password può contenere caratteri speciali che rendono non valida la chiamata seguente. In questo caso, provare a convertire la password nella codifica 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"
Questa richiesta tenta di scambiare l'ID app e la password del bot con un token di accesso. Se la richiesta ha esito positivo, si riceverà un payload JSON che contiene una access_token
proprietà, tra le altre.
{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAJKV1Q..."}
Se la richiesta ha esito positivo, si è verificato che l'ID app e la password specificati nella richiesta siano validi. Andare al Passaggio 3.
Se si riceve un errore in risposta alla richiesta, esaminare la risposta per identificare la causa dell'errore. Se la risposta indica che l'ID app o la password non è valido, ottenere i valori corretti dal portale di Bot Framework e ripetere la richiesta con i nuovi valori per confermare che sono validi.
Passaggio 3: Abilitare la sicurezza e il test in localhost
A questo punto, è stato verificato che il bot è accessibile e funzionale in localhost quando la sicurezza è disabilitata e ha confermato che l'ID e la password dell'app che il bot userà per l'autenticazione sono validi. In questo passaggio si verificherà che il bot sia accessibile e funzionale in localhost quando la sicurezza è abilitata.
Abilitare la sicurezza
La sicurezza del bot si basa sui servizi Microsoft, anche quando il bot viene eseguito solo in localhost. Per abilitare la sicurezza per il bot, modificarne le impostazioni di configurazione per popolare l'ID app e la password con i valori verificati nel Passaggio 2. Assicurarsi inoltre che i pacchetti siano aggiornati, in particolare System.IdentityModel.Tokens.Jwt
e Microsoft.IdentityModel.Tokens
.
Se si usa Bot Framework SDK per .NET, popolare queste impostazioni nel file appsettings.config
o i valori corrispondenti nel file appsettings.json
:
<appSettings>
<add key="MicrosoftAppId" value="APP_ID" />
<add key="MicrosoftAppPassword" value="PASSWORD" />
</appSettings>
Se si usa Bot Framework SDK per Node. js, popolare queste impostazioni (o aggiornare le variabili di ambiente corrispondenti):
var connector = new builder.ChatConnector({
appId: 'APP_ID',
appPassword: 'PASSWORD'
});
Nota
Per trovare i valori di AppID e AppPassword del bot, vedere MicrosoftAppID e MicrosoftAppPassword.
Testare il bot in localhost
A questo punto, testare il bot in localhost usando Bot Framework Emulator.
- Avviare il bot in localhost.
- Avviare Bot Framework Emulator.
- Connettersi al bot usando l'emulatore.
- Digitare
http://localhost:port-number/api/messages
nella barra degli indirizzi dell'emulatore, dove numero di porta corrisponde al numero di porta visualizzato nel browser in cui è in esecuzione l'applicazione. - Immettere l'ID app del bot nel campo Microsoft App ID (ID app Microsoft).
- Immettere la password del bot nel campo Microsoft App Password (Password app Microsoft).
- Fare clic su Connetti.
- Digitare
- Per testare la connettività al bot, digitare un testo nell'emulatore e premere INVIO.
Se il bot risponde all'input e non sono presenti errori nella finestra della chat, è stato verificato che il bot è accessibile e funzionale in localhost quando la sicurezza è abilitata. Andare al Passaggio 4.
Se la finestra della chat segnala uno o più errori, fare clic sugli errori per i dettagli. I problemi comuni includono:
- Le impostazioni dell'emulatore specificano un endpoint non corretto per il bot. Assicurarsi di aver incluso il numero di porta corretto nell'URL e il percorso appropriato alla fine dell'URL, ad esempio
/api/messages
. - Le impostazioni dell'emulatore specificano un endpoint bot che inizia con
https
. In localhost, l'endpoint deve iniziare conhttp
. - Nelle impostazioni dell'emulatore il campo ID app Microsoft e/o la password dell'app Microsoft non contengono valori validi. Entrambi i campi devono essere popolati e ogni campo deve contenere il valore corrispondente verificato nel Passaggio 2.
- La sicurezza non è stata abilitata per il bot. Verificare che le impostazioni di configurazione del bot specifichino i valori per ID app e password.
Passaggio 4: Testare il bot nel cloud
A questo punto, si è verificato che il bot è accessibile e funzionale in localhost quando la sicurezza è disabilitata, ha confermato che l'ID e la password dell'app del bot sono validi e verificato che il bot sia accessibile e funzionale in localhost quando la sicurezza è abilitata. In questo passaggio si distribuirà il bot nel cloud e si verificherà che sia accessibile e funzionale con la sicurezza abilitata.
Distribuire il bot nel cloud
Bot Framework richiede che i bot siano accessibili da Internet, pertanto è necessario distribuire il bot in una piattaforma di hosting cloud come Azure. Assicurarsi di abilitare la sicurezza per il bot prima della distribuzione, come descritto nel Passaggio 3.
Nota
Se non si ha già un provider di hosting cloud, è possibile registrarsi per ottenere un account gratuito.
Se si distribuisce il bot in Azure, per l'applicazione verrà configurato automaticamente il protocollo SSL, abilitando così l'endpoint HTTPS necessario per Bot Framework. Se si distribuisce in un altro provider di hosting cloud, verificare che l'applicazione sia configurata per SSL, in modo che il bot disponga di un endpoint HTTPS.
Esegui il test del tuo bot
Per testare il bot nel cloud con la sicurezza abilitata, completare i passaggi seguenti.
- Assicurarsi che il bot sia stato distribuito correttamente e sia in esecuzione.
- Accedere al portale di Azure.
- Passare alla risorsa Azure Bot per il bot all'interno del portale.
- Fare clic su Test in Web Chat (Testa nella chat Web) nel riquadro Bot management (Gestione bot) sulla sinistra.
- Per testare la connettività del bot, digitare un testo nel controllo Web Chat e premere INVIO.
Se nella finestra della chat viene segnalato un errore, usare il messaggio di errore per determinarne la causa. I problemi comuni includono:
- L'endpoint di messaggistica specificato nella pagina delle impostazioni del bot nel portale di Bot Framework non è corretto. Assicurarsi di aver incluso il percorso appropriato alla fine dell'URL, ad esempio
/api/messages
. - L'endpoint di messaggistica specificato nella pagina Impostazioni per il bot nel portale di Bot Framework non inizia con
https
o non è considerato attendibile da Bot Framework. Il bot deve avere un certificato valido con trust a livello di catena. - Il bot è configurato con valori mancanti o non corretti per l'ID app o la password. Verificare che le impostazioni di configurazione del bot specifichino valori validi per ID app e password.
Se il bot risponde in modo appropriato all'input, si è verificato che il bot sia accessibile e funzionale nel cloud con sicurezza abilitata. A questo punto, il bot è pronto per la connessione sicura a un canale, ad esempio Facebook Messenger, Direct Line e altri.
Risorse aggiuntive
Se si verificano ancora problemi dopo aver completato i passaggi precedenti, è possibile:
- Vedere come eseguire il debug di un bot e gli altri articoli sul debug in tale sezione.
- Eseguire il debug del bot nel cloud usando Bot Framework Emulator e [Dev Tunnels](https://aka.ms/devtunnels software di tunneling.
- Usare uno strumento di inoltro tramite proxy come Fiddler per ispezionare il traffico HTTPS da e verso il bot. Fiddler non è un prodotto Microsoft.
- Vedere la guida all'autenticazione di Bot Connector per informazioni sulle tecnologie di autenticazione usate da Bot Framework.
- Chiedere assistenza ad altri utenti usando le risorse di supporto di Bot Framework.