<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Extending Gate One on Gate One</title><link>https://clad-one.github.io/gate-one-doc/latest/docs/extending/</link><description>Recent content in Extending Gate One on Gate One</description><generator>Hugo</generator><language>en</language><atom:link href="https://clad-one.github.io/gate-one-doc/latest/docs/extending/index.xml" rel="self" type="application/rss+xml"/><item><title>Plugins</title><link>https://clad-one.github.io/gate-one-doc/latest/docs/extending/plugins/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://clad-one.github.io/gate-one-doc/latest/docs/extending/plugins/</guid><description>&lt;div id="preamble"&gt;&#10;&lt;div class="sectionbody"&gt;&#10;&lt;div class="paragraph"&gt;&#10;&lt;p&gt;Gate One extensions are &lt;strong&gt;out-of-process&lt;/strong&gt; services. The gateway talks&#10;to them over HTTP/JSON; it never loads a third-party authentication&#10;provider and never calls a plugin on the authentication path.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="sect1"&gt;&#10;&lt;h2 id="plugin-families"&gt;Plugin families&lt;/h2&gt;&#10;&lt;div class="sectionbody"&gt;&#10;&lt;table class="tableblock frame-all grid-all stretch"&gt;&#10;&lt;colgroup&gt;&#10;&lt;col style="width: 33.3333%;"/&gt;&#10;&lt;col style="width: 16.6666%;"/&gt;&#10;&lt;col style="width: 16.6666%;"/&gt;&#10;&lt;col style="width: 16.6666%;"/&gt;&#10;&lt;col style="width: 16.6669%;"/&gt;&#10;&lt;/colgroup&gt;&#10;&lt;thead&gt;&#10;&lt;tr&gt;&#10;&lt;th class="tableblock halign-left valign-top"&gt;Family&lt;/th&gt;&#10;&lt;th class="tableblock halign-left valign-top"&gt;Runs in&lt;/th&gt;&#10;&lt;th class="tableblock halign-left valign-top"&gt;Transport&lt;/th&gt;&#10;&lt;th class="tableblock halign-left valign-top"&gt;Decides auth?&lt;/th&gt;&#10;&lt;th class="tableblock halign-left valign-top"&gt;Licence&lt;/th&gt;&#10;&lt;/tr&gt;&#10;&lt;/thead&gt;&#10;&lt;tbody&gt;&#10;&lt;tr&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Auth adapter&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;IAM&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;HTTP/JSON&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;yes, in the IAM&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Gate One licence&lt;/p&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Injection / userscript / UI&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Gate One&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;route &lt;code&gt;inject&lt;/code&gt; bundle (config)&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;no&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;extension licence&lt;/p&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;tr&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Event consumer&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;Gate One&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;HTTP/JSON, signed manifest&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;no&lt;/p&gt;&lt;/td&gt;&#10;&lt;td class="tableblock halign-left valign-top"&gt;&lt;p class="tableblock"&gt;extension licence&lt;/p&gt;&lt;/td&gt;&#10;&lt;/tr&gt;&#10;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;div class="paragraph"&gt;&#10;&lt;p&gt;The injection bundle and the event consumer are extensions; auth adapters&#10;stay in the IAM and remain under the Gate One licence.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;div class="paragraph"&gt;&#10;&lt;p&gt;A &lt;strong&gt;Backend-For-Frontend is not a plugin&lt;/strong&gt;: it is a proxied &lt;code&gt;backend:&lt;/code&gt;&#10;route, post-auth by definition (it receives the identity DTO /&#10;&lt;code&gt;X-Gate-One-Subject&lt;/code&gt;), and can be written in any language. Gate One&#10;never loads it. Response transforms are the gateway’s native injector&#10;chain (&lt;code&gt;inject&lt;/code&gt;, &lt;code&gt;rewriteBody&lt;/code&gt;, &lt;code&gt;responseHeaders&lt;/code&gt;, &lt;code&gt;rewriteRedirects&lt;/code&gt;,&#10;the guard); bespoke logic belongs in the backend or the edge proxy, not&#10;in a plugin.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>Publish and trust a plugin</title><link>https://clad-one.github.io/gate-one-doc/latest/docs/extending/publish-a-plugin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://clad-one.github.io/gate-one-doc/latest/docs/extending/publish-a-plugin/</guid><description>&lt;div id="preamble"&gt;&#10;&lt;div class="sectionbody"&gt;&#10;&lt;div class="paragraph"&gt;&#10;&lt;p&gt;Gate One extensions are &lt;strong&gt;out-of-process services&lt;/strong&gt;. They are trusted&#10;through a &lt;strong&gt;signed manifest&lt;/strong&gt; and a local &lt;strong&gt;trust store&lt;/strong&gt;; code is never&#10;loaded into the gateway. This page is the publisher/operator walkthrough:&#10;develop, sign, install and revoke.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;div class="sect1"&gt;&#10;&lt;h2 id="plugin-families"&gt;Plugin families&lt;/h2&gt;&#10;&lt;div class="sectionbody"&gt;&#10;&lt;div class="paragraph"&gt;&#10;&lt;p&gt;Extension families and what is &lt;strong&gt;not&lt;/strong&gt; a plugin are defined once in&#10;&lt;a href="https://clad-one.github.io/gate-one-doc/latest/docs/extending/plugins/"&gt;Plugins&lt;/a&gt;. For publishers, the only fully&#10;signed extension today is the &lt;strong&gt;event consumer&lt;/strong&gt;; injection bundles are&#10;route configuration and auth adapters stay in the IAM under the Gate&#10;One licence.&lt;/p&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/div&gt;</description></item></channel></rss>