Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Avviso
ASP.NET webhook è deprecato e non riceverà più aggiornamenti o correzioni di sicurezza.
La ricezione di WebHook dipende da chi è il mittente. A volte sono disponibili passaggi aggiuntivi per la registrazione di un webhook che verifica che il sottoscrittore sia effettivamente in ascolto. Alcuni webhook forniscono un modello push-to-pull in cui la richiesta HTTP POST contiene solo un riferimento alle informazioni sull'evento che devono essere recuperate in modo indipendente. Spesso il modello di sicurezza varia molto.
Lo scopo di Microsoft ASP.NET webhook è quello di rendere più semplice e coerente collegare l'API senza dedicare molto tempo a capire come gestire una particolare variante di webhook.
Un ricevitore webhook è responsabile dell'accettazione e della verifica dei webhook da un mittente specifico. Un ricevitore webhook può supportare qualsiasi numero di webhook, ognuno con la propria configurazione. Ad esempio, il ricevitore GitHub WebHook può accettare webhook da un numero qualsiasi di repository GitHub.
URI dei ricevitori WebHook
Installando Microsoft ASP.NET WebHook si ottiene un controller WebHook generale che accetta le richieste webhook da un numero di servizi aperto. Quando arriva una richiesta, seleziona il ricevitore appropriato che hai installato per gestire un particolare mittente Webhook.
L'URI di questo controller è l'URI del WebHook che registri con il servizio e ha il seguente formato:
https://<host>/api/webhooks/incoming/<receiver>/{id}
Per motivi di sicurezza, molti ricevitori webhook richiedono che l'URI sia un URI https e in alcuni casi deve contenere anche un parametro di query aggiuntivo che viene usato per imporre che solo le entità desiderate possano inviare webhook all'URI precedente.
Il <receiver> componente è il nome del ricevitore, ad esempio github o slack.
{ id} è un identificatore facoltativo che può essere usato per identificare una specifica configurazione del ricevitore WebHook. Può essere usato per registrare N WebHooks con un ricevitore specifico. Ad esempio, è possibile usare i tre URI seguenti per eseguire la registrazione per tre webhook indipendenti:
https://<host>/api/webhooks/incoming/github
https://<host>/api/webhooks/incoming/github/12345
https://<host>/api/webhooks/incoming/github/54321
Installazione di un ricevitore webhook
Per ricevere WebHook usando Microsoft ASP.NET WebHooks, devi prima di tutto installare il pacchetto NuGet per il provider o i provider WebHook da cui si desidera ricevere WebHook. I pacchetti Nuget sono denominati Microsoft.AspNet.WebHooks.Receivers.* dove l'ultima parte indica il servizio supportato. Ad esempio:
Microsoft.AspNet.WebHooks.Receivers. GitHub fornisce supporto per la ricezione di webhook da GitHub e Microsoft.AspNet.WebHooks.Receivers.Custom fornisce supporto per la ricezione di webhook generati da ASP.NET WebHook.
È possibile trovare supporto per Dropbox, GitHub, MailChimp, PayPal, Pusher, Salesforce, Slack, Stripe, Trello e WordPress, ma è possibile supportare qualsiasi numero di altri provider.
Configurazione di un ricevitore webhook
I ricevitori webhook vengono configurati tramite l'interfaccia IWebHookReceiverConfig e specifiche implementazioni di tale interfaccia possono essere registrate usando qualsiasi modello di inserimento delle dipendenze. L'implementazione predefinita usa Impostazioni applicazione che possono essere impostate nel file di Web.config oppure, se si usa Azure Web Apps, può essere impostata tramite Azure Portal.
Il formato per le chiavi dell'impostazione dell'applicazione è il seguente:
MS_WebHookReceiverSecret_<receiver>
Il valore è un elenco delimitato da virgole di valori corrispondenti ai valori {id} per i quali sono stati registrati i webhook, ad esempio:
MS_WebHookReceiverSecret_GitHub = <secret1>, 12345=<secret2>, 54321=<secret3>
Inizializzazione di un ricevitore webhook
I ricevitori webhook vengono inizializzati registrandoli, in genere nella classe statica WebApiConfig , ad esempio:
namespace WebHookReceivers
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Load receivers
config.InitializeReceiveGitHubWebHooks();
}
}
}