<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Securing webooks in ArcGIS Enterprise Questions</title>
    <link>https://community.esri.com/t5/arcgis-enterprise-questions/securing-webooks/m-p/1349179#M37672</link>
    <description>&lt;P&gt;A few questions? What version of ArcGIS Enterprise are you using? Are you using Organization or Feature Service webhooks?&lt;/P&gt;&lt;P&gt;Some background information:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Organization webhooks do not use the challenge/hash method as referenced in the help link. They use a straight keyword which is included in the payload that the receiver can use to decide if the payload is trustworthy.&lt;/LI&gt;&lt;LI&gt;Enterprise Feature Service webhooks made use of the same pattern as the Org webhooks in 11.0 (Beta) and 11.1. That is, the keyword sent in the payload. Beginning at 11.2 (just released), the Enterprise Feature Service webhooks were updated to match Online Feature Service security model, sending a signature hash in the header based on a given keyword/payload itself. This update matches the security model your referenced in the doc. For Enterprise Feature Service webhooks, you can see the doc note here indicating this change happened in 11.2:&amp;nbsp;&lt;A href="https://developers.arcgis.com/rest/enterprise-administration/server/create-webhook.htm" target="_blank"&gt;https://developers.arcgis.com/rest/enterprise-administration/server/create-webhook.htm&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;As you said you're using Flask (Python), if you want some code that does the CRC/Hash/Signature workflow, you can see the code I have here:&amp;nbsp;&lt;A href="https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/__init__.py" target="_blank"&gt;https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/__init__.py &lt;/A&gt;and&amp;nbsp;&lt;A href="https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/hash_check.py" target="_blank"&gt;https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/hash_check.py&lt;/A&gt;&amp;nbsp;- This code was developed for Online Feature Service webhooks, but you pull the functions out, putting them into Flask and applying them to Enterprise 11.2 Feature Service webhooks&lt;/LI&gt;&lt;/UL&gt;</description>
    <pubDate>Tue, 14 Nov 2023 14:56:12 GMT</pubDate>
    <dc:creator>KevinHibma</dc:creator>
    <dc:date>2023-11-14T14:56:12Z</dc:date>
    <item>
      <title>Securing webooks</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/securing-webooks/m-p/1341851#M37552</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to secure my webhooks by implementing the identity confirmation strategies stated on the official documentation ( &lt;A href="https://developers.arcgis.com/rest/services-reference/online/web-hooks-security-feature-service-.htm" target="_self"&gt;here&lt;/A&gt;. )&lt;/P&gt;&lt;P&gt;According to it, if a signature key is specified, a new header item should popup with a signature and also CRC checks (via HTTP GET) can be performed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Even though I create the Feature Service (and tried with portal webhooks too) with the signature key&amp;nbsp;value, the headers for the webhook creation response and further triggered events contain a&amp;nbsp;&lt;STRONG&gt;&lt;FONT face="courier new,courier"&gt;Signaturekey&lt;/FONT&gt; &lt;/STRONG&gt;header, but no trace of&amp;nbsp;&lt;STRONG&gt;&lt;FONT face="courier new,courier"&gt;x-esriHook-Signature&lt;/FONT&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Besides, my application which is listening for both GET &amp;amp; POSTs to handle the CRC never gets any GET request.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;My webhook handler is a flask application configured properly with trusted certificates, available to the AGE machine and ready to handle both POST and GET requests separately (so I can perform CRC on GET and process the webhook payloads from POST).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;The webhooks are properly processed if no signature key is set up, so there must be something there I am missing or that does not work as expected.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Could anyone who has set up this correctly provide some advice? I don't see what else one needs to add to the create webhook request besides the signature key parameter.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 26 Oct 2023 10:06:56 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/securing-webooks/m-p/1341851#M37552</guid>
      <dc:creator>Francisco_R</dc:creator>
      <dc:date>2023-10-26T10:06:56Z</dc:date>
    </item>
    <item>
      <title>Re: Securing webooks</title>
      <link>https://community.esri.com/t5/arcgis-enterprise-questions/securing-webooks/m-p/1349179#M37672</link>
      <description>&lt;P&gt;A few questions? What version of ArcGIS Enterprise are you using? Are you using Organization or Feature Service webhooks?&lt;/P&gt;&lt;P&gt;Some background information:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Organization webhooks do not use the challenge/hash method as referenced in the help link. They use a straight keyword which is included in the payload that the receiver can use to decide if the payload is trustworthy.&lt;/LI&gt;&lt;LI&gt;Enterprise Feature Service webhooks made use of the same pattern as the Org webhooks in 11.0 (Beta) and 11.1. That is, the keyword sent in the payload. Beginning at 11.2 (just released), the Enterprise Feature Service webhooks were updated to match Online Feature Service security model, sending a signature hash in the header based on a given keyword/payload itself. This update matches the security model your referenced in the doc. For Enterprise Feature Service webhooks, you can see the doc note here indicating this change happened in 11.2:&amp;nbsp;&lt;A href="https://developers.arcgis.com/rest/enterprise-administration/server/create-webhook.htm" target="_blank"&gt;https://developers.arcgis.com/rest/enterprise-administration/server/create-webhook.htm&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;As you said you're using Flask (Python), if you want some code that does the CRC/Hash/Signature workflow, you can see the code I have here:&amp;nbsp;&lt;A href="https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/__init__.py" target="_blank"&gt;https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/__init__.py &lt;/A&gt;and&amp;nbsp;&lt;A href="https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/hash_check.py" target="_blank"&gt;https://github.com/Esri/webhooks-samples/blob/master/Developer/azure/function.python/Hook/hash_check.py&lt;/A&gt;&amp;nbsp;- This code was developed for Online Feature Service webhooks, but you pull the functions out, putting them into Flask and applying them to Enterprise 11.2 Feature Service webhooks&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Tue, 14 Nov 2023 14:56:12 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-enterprise-questions/securing-webooks/m-p/1349179#M37672</guid>
      <dc:creator>KevinHibma</dc:creator>
      <dc:date>2023-11-14T14:56:12Z</dc:date>
    </item>
  </channel>
</rss>

