Zum Inhalt springen

„Webhook“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][Sichtung ausstehend]
Inhalt gelöscht Inhalt hinzugefügt
K Tippfehler entfernt, Links optimiert, Kleinkram
Formatierungen
 
Zeile 1: Zeile 1:
Mit '''Webhooks''' (zusammengesetzt aus [[World Wide Web|Web]] ([[Englische Sprache|englisch]] „Netz“) und „[[Hook (Informatik)|Hook]]“ (englisch „Haken“), zu deutsch etwa „Netz-Haken“) wird ein nicht-standardisiertes Verfahren zur Kommunikation von Servern bezeichnet, das im Rahmen des [[Verteiltes Rechnen|verteilten Rechnens]] oder der [[Message Oriented Middleware|Nachrichtenorientierten Middleware]] genutzt wird. Webhooks ermöglichen es, einer [[Server]]-Software mitzuteilen, dass ein bestimmtes [[Ereignis (Programmierung)|Ereignis]] eingetreten ist und eine Reaktion auf das Ereignis auszulösen. Wenn eine Anwendung über ein eingetretenes Ereignis mittels Webhook informiert, müssen an dem Ereignis interessierte andere Anwendungen kein [[Polling (Informatik)|Polling]] betreiben, um von dem Ereignis Kenntnis zu erlangen. Das reduziert das Nachrichtenaufkommen zwischen den Anwendungen.
Mit '''Webhooks''' (zusammengesetzt aus {{enS|[[World Wide Web|Web]]|de=Netz}} und englisch {{lang|en|''[[Hook (Informatik)|Hook]]''|de=Haken}}, zu deutsch etwa ‚Netz-Haken‘) wird ein nicht-standardisiertes Verfahren zur Kommunikation von Servern bezeichnet, das im Rahmen des [[Verteiltes Rechnen|verteilten Rechnens]] oder der [[Message Oriented Middleware|Nachrichtenorientierten Middleware]] genutzt wird. Webhooks ermöglichen es, einer [[Server]]-Software mitzuteilen, dass ein bestimmtes [[Ereignis (Programmierung)|Ereignis]] eingetreten ist und eine Reaktion auf das Ereignis auszulösen. Wenn eine Anwendung über ein eingetretenes Ereignis mittels Webhook informiert, müssen an dem Ereignis interessierte andere Anwendungen kein [[Polling (Informatik)|Polling]] betreiben, um von dem Ereignis Kenntnis zu erlangen. Das reduziert das Nachrichtenaufkommen zwischen den Anwendungen.


Webhooks finden als einfaches [[Rückruffunktion|Callback]]-Verfahren Verwendung zur Daten-Synchronisation, externen Berechnung und zur [[Datenvalidierung]]. Technisch wird dazu eine [[Hypertext Transfer Protocol|HTTP]]-POST-Message an eine dafür vorbereitete [[Uniform Resource Locator|URL]] gesendet, welche die angeforderten Daten zurückliefert.<ref name="webhooks">{{Webarchiv | url=http://wiki.webhooks.org/w/page/13385124/FrontPage | wayback=20120413121142| text=Web Hooks Wiki}} </ref> Im Gegensatz zu [[SOAP]] wird keine zusätzliche Transportschicht verwendet, im Unterschied zum [[Atom (Format)|Atom Syndication Format]] sind Webhooks nicht auf das XML-Format festgelegt.
Webhooks finden als einfaches [[Rückruffunktion|Callback]]-Verfahren Verwendung zur Daten-Synchronisation, externen Berechnung und zur [[Datenvalidierung]]. Technisch wird dazu eine [[Hypertext Transfer Protocol|HTTP]]-POST-Message an eine dafür vorbereitete [[Uniform Resource Locator|URL]] gesendet, welche die angeforderten Daten zurückliefert.<ref name="webhooks">{{Webarchiv | url=http://wiki.webhooks.org/w/page/13385124/FrontPage | wayback=20120413121142| text=Web Hooks Wiki}} </ref> Im Gegensatz zu [[SOAP]] wird keine zusätzliche Transportschicht verwendet, im Unterschied zum [[Atom (Format)|Atom Syndication Format]] sind Webhooks nicht auf das XML-Format festgelegt.


== Authentifizierung ==
== Authentifizierung ==
Sobald der Client (die Ursprungswebseite- oder Applikation) einen Webhook-Aufruf in Richtung des Benutzerservers auslöst, sollte die eingehende POST-Anfrage authentifiziert werden, um [[Spoofing]]-Attacken zu verhindern. Ebenso sollte der [[Zeitstempel|Timestamp]] verifiziert werden, um eine Replay-Attacke auszuschließen.<ref>{{Internetquelle |url=https://docs.svix.com/receiving/verifying-payloads/why |titel=Why Verify Webhooks {{!}} Svix Docs |sprache=en |abruf=2025-02-09}}</ref> Um dies sicherzustellen, gibt es verschiedene Methoden:
Sobald der Client (die Ursprungswebseite- oder Applikation) einen Webhook-Aufruf in Richtung des Benutzerservers auslöst, sollte die eingehende POST-Anfrage authentifiziert werden, um [[Spoofing]]-Attacken zu verhindern. Ebenso sollte der [[Zeitstempel|Timestamp]] verifiziert werden, um eine Replay-Attacke auszuschließen.<ref>{{Internetquelle |url=https://docs.svix.com/receiving/verifying-payloads/why |titel=Why Verify Webhooks |werk=Svix Docs |sprache=en |abruf=2025-02-09}}</ref> Um dies sicherzustellen, gibt es verschiedene Methoden:


* [[HTTP]] [[Basic Authentication]]: Kann für die Authentifizierung des [[Client]]s verwendet werden.<ref>{{Internetquelle |url=https://www.docusign.com/blog/dsdev-docusign-connect-basic-authentication-support |titel=Docusign Connect Now Includes Basic Authentication Support |sprache=en |abruf=2025-02-09}}</ref>
* [[HTTP]] [[Basic Authentication]]: Kann für die Authentifizierung des [[Client]]s verwendet werden.<ref>{{Internetquelle |url=https://www.docusign.com/blog/dsdev-docusign-connect-basic-authentication-support |titel=Docusign Connect Now Includes Basic Authentication Support |werk=docusign.com |sprache=en |abruf=2025-02-09}}</ref>
* Für die Verifizierung des Webhooks, kann dieser Informationen, wie ein [[Gemeinsames Geheimnis|Shared Secret]], Digitale Signaturen oder den Typen des Events enthalten.<ref>{{Internetquelle |url=https://webhooks.fyi/security/shared-secret |titel=Shared Secret - Docs |sprache=en |abruf=2025-02-09}}</ref>
* Für die Verifizierung des Webhooks, kann dieser Informationen, wie ein [[Gemeinsames Geheimnis|Shared Secret]], Digitale Signaturen oder den Typen des Events enthalten.<ref>{{Internetquelle |url=https://webhooks.fyi/security/shared-secret |titel=Shared Secret - Docs |werk=webhooks.fyi |sprache=en |abruf=2025-02-09}}</ref>
* Eine [[HMAC]]-Signatur kann als [[HTTP-Header]] eingefügt werden.<ref>{{Internetquelle |url=https://prismatic.io/blog/how-secure-webhook-endpoints-hmac/ |titel=How to Secure Webhook Endpoints with HMAC |sprache=en |abruf=2025-02-09}}</ref>
* Eine [[HMAC]]-Signatur kann als [[HTTP-Header]] eingefügt werden.<ref>{{Internetquelle |url=https://prismatic.io/blog/how-secure-webhook-endpoints-hmac/ |titel=How to Secure Webhook Endpoints with HMAC |werk=prismatic.io |sprache=en |abruf=2025-02-09}}</ref>


== Anwendungsbeispiele ==
== Anwendungsbeispiele ==
Zeile 18: Zeile 18:
== Anwendungen ==
== Anwendungen ==
Webhooks werden unter anderem verwendet von<ref name="webhooks" />
Webhooks werden unter anderem verwendet von<ref name="webhooks" />
{{Mehrspaltige Liste |breite=15em |liste=
{| width="100%"
| width="33%" valign="top"|
* Cisco Webex Teams (früher Cisco Spark)
* Cisco Webex Teams (früher Cisco Spark)
* [[Cisco Meraki]]
* [[Cisco Meraki]]
Zeile 27: Zeile 26:
* [[Facebook]]
* [[Facebook]]
* [[Google Code]]
* [[Google Code]]
* [[GitHub]]<ref name="github developer webhooks">{{Internetquelle |url=https://developer.github.com/webhooks/ |titel=GitHub Developer Webhooks API |abruf=08.01.2018}}</ref>
| width="33%" valign="top"|
* [[GitHub]]<ref name="github developer webhooks">{{Internetquelle |url=https://developer.github.com/webhooks/ |titel=GitHub Developer Webhooks API |zugriff=08.01.2018}}</ref>
* [[GitLab]]
* [[GitLab]]
* [[IFTTT]]<ref name="IFTTT Webhook">{{Internetquelle |url=https://ifttt.com/maker_webhooks |titel=IFTTT Webhook |zugriff=08.01.2018}}</ref>
* [[IFTTT]]<ref name="IFTTT Webhook">{{Internetquelle |url=https://ifttt.com/maker_webhooks |titel=IFTTT Webhook |abruf=08.01.2018}}</ref>
* [[PayPal]]
* [[PayPal]]
* [[Podio]]
* [[Podio]]
* Pusher<!-- unklar, ob die Erwähnung relevant ist; Primärquelle wäre https://pusher.com/docs/channels/server_api/webhooks -->
* Pusher<!-- unklar, ob die Erwähnung relevant ist; Primärquelle wäre https://pusher.com/docs/channels/server_api/webhooks -->
* [[Synology]]
* [[Synology]]
| width="33%" valign="top"|
* [[Shopify]]
* [[Shopify]]
* [[Slack (Software)|Slack]]
* [[Slack (Software)|Slack]]
* [[Telegram Messenger|Telegram]]<ref name="telegram bot api webhooks access">{{Internetquelle |url=https://core.telegram.org/bots/api#setwebhook |titel=Telegram BotAPI WebHooks |zugriff=08.01.2018}}</ref>
* [[Telegram Messenger|Telegram]]<ref name="telegram bot api webhooks access">{{Internetquelle |url=https://core.telegram.org/bots/api#setwebhook |titel=Telegram BotAPI WebHooks |abruf=08.01.2018}}</ref>
* [[Twitch]]
* [[Twitch]]
* [[WordPress]]<ref name="wordpress webhooks">{{Internetquelle |url=https://en.support.wordpress.com/webhooks/ |titel=WordPress WebHooks |zugriff=08.01.2018}}</ref>
* [[WordPress]]<ref name="wordpress webhooks">{{Internetquelle |url=https://en.support.wordpress.com/webhooks/ |titel=WordPress WebHooks |abruf=08.01.2018}}</ref>
* [[Webhook Center]]<ref>https://webhook.center/</ref>
* [[Webhook Center]]<ref>https://webhook.center/</ref>
|}
}}


== Spezifikationen ==
== Spezifikationen ==

Aktuelle Version vom 14. April 2025, 12:15 Uhr

Mit Webhooks (zusammengesetzt aus englisch Web ‚Netz‘ und englisch Hook ‚Haken‘, zu deutsch etwa ‚Netz-Haken‘) wird ein nicht-standardisiertes Verfahren zur Kommunikation von Servern bezeichnet, das im Rahmen des verteilten Rechnens oder der Nachrichtenorientierten Middleware genutzt wird. Webhooks ermöglichen es, einer Server-Software mitzuteilen, dass ein bestimmtes Ereignis eingetreten ist und eine Reaktion auf das Ereignis auszulösen. Wenn eine Anwendung über ein eingetretenes Ereignis mittels Webhook informiert, müssen an dem Ereignis interessierte andere Anwendungen kein Polling betreiben, um von dem Ereignis Kenntnis zu erlangen. Das reduziert das Nachrichtenaufkommen zwischen den Anwendungen.

Webhooks finden als einfaches Callback-Verfahren Verwendung zur Daten-Synchronisation, externen Berechnung und zur Datenvalidierung. Technisch wird dazu eine HTTP-POST-Message an eine dafür vorbereitete URL gesendet, welche die angeforderten Daten zurückliefert.[1] Im Gegensatz zu SOAP wird keine zusätzliche Transportschicht verwendet, im Unterschied zum Atom Syndication Format sind Webhooks nicht auf das XML-Format festgelegt.

Authentifizierung

[Bearbeiten | Quelltext bearbeiten]

Sobald der Client (die Ursprungswebseite- oder Applikation) einen Webhook-Aufruf in Richtung des Benutzerservers auslöst, sollte die eingehende POST-Anfrage authentifiziert werden, um Spoofing-Attacken zu verhindern. Ebenso sollte der Timestamp verifiziert werden, um eine Replay-Attacke auszuschließen.[2] Um dies sicherzustellen, gibt es verschiedene Methoden:

Anwendungsbeispiele

[Bearbeiten | Quelltext bearbeiten]
  • Event-Notification (Benachrichtigung): Mitteilung, dass ein bestimmtes Event eingetreten ist
  • Pipes: Weiterleitung von Daten. Beispielsweise erhält ein Nutzer eine E-Mail-Benachrichtigung, wenn ein Foto zu einem bestimmten Thema hochgeladen wird.
  • Plugins: Schnittstelle zur Kommunikation einer Webseite mit Plugins oder Apps.

Webhooks werden unter anderem verwendet von[1]

Spezifikationen

[Bearbeiten | Quelltext bearbeiten]

Derzeit existiert kein Standard zur Implementierung. Es werden Möglichkeiten einer Spezifikation auf Basis von REST-Mustern diskutiert.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. a b Web Hooks Wiki (Memento vom 13. April 2012 im Internet Archive)
  2. Why Verify Webhooks. In: Svix Docs. Abgerufen am 9. Februar 2025 (englisch).
  3. Docusign Connect Now Includes Basic Authentication Support. In: docusign.com. Abgerufen am 9. Februar 2025 (englisch).
  4. Shared Secret - Docs. In: webhooks.fyi. Abgerufen am 9. Februar 2025 (englisch).
  5. How to Secure Webhook Endpoints with HMAC. In: prismatic.io. Abgerufen am 9. Februar 2025 (englisch).
  6. https://dracoon.com
  7. GitHub Developer Webhooks API. Abgerufen am 8. Januar 2018.
  8. IFTTT Webhook. Abgerufen am 8. Januar 2018.
  9. Telegram BotAPI WebHooks. Abgerufen am 8. Januar 2018.
  10. WordPress WebHooks. Abgerufen am 8. Januar 2018.
  11. https://webhook.center/