Popis a využití eWay-CRM® Gate
eWay-CRM® Gate je webová IIS aplikace, která dovoluje zpřístupnit data eWay-CRM® ve formě HTML uživatelům mimo eWay-CRM® (např. faktura zákazníkovi). Ve výchozí instalaci serverové komponenty eWay-CRM® je funkce eWay-CRM® Gate z bezpečnostních důvodů úplně vypnuta.
Instalace a konfigurace
Samotná IIS aplikace eWay-CRM® Gate se nachází v podadresáři Gate
v kořenové složce serverové komponenty eWay-CRM®. Takové umístění je důležité, protože aplikace eWay-CRM® Gate načítá připojovací řetězec (Connection String) k databázi ze souboru Web.config
(konfigurační soubor webové služby eWay-CRM®), který je o složku výše. Nicméně, v rámci IIS může být aplikace bežící v této složce nastavena v jiné WebSite
na jiné URL než webová služba eWay-CRM®.
Po spuštění IIS aplikace eWay-CRM® Gate je potřeba provést její konfiguraci. Ta spočívá v definici toho, jak se budou jednotlivé procedury v SQL volat - tzv. mapování. Konfigurace se provádí ve vlastním konfiguračním souboru (Gate\Web.config
). Jeho výchozí forma je běžně dodávána s novou instalací serverové komponenty eWay-CRM®.
Nastavení mapování se provádí ve vlastní konfigurační sekci mappedContent
. Každé mapování musí obsahovat název a název SQL procedury. Volitelně potom může obsahovat přejmenování parametrů, aby se název parametru v URL nemusel shodovat s názvem parametru SQL procedury. Ne všechny parametry SQL procedury se musí uvést v seznamu přejmenovaných parametrů. U takových, které jsou vynechány, se předpokládá, že mají stejný název v URL jako v SQL (bez zavináče).
Příklad mapování vypadá takto:
<mappedContent>
<mappings>
<mapping name="username" procedureName="eWaySP_UnitTests_GetHtmlUsername">
<renamedParameters>
<renamedParameter name="id" procedureParameterName="UserItemGUID" />
</renamedParameters>
</mapping>
</mappings>
</mappedContent>
Jde o mapování procedury eWaySP_UnitTests_GetHtmlUsername
, která má 2 parametry (@UserItemGUID
a @Color
). Přes aplikaci eWay-CRM® Gate se bude volat pod názvem username
s parametry id
a Color
.
Volání
Princip je následující: jedno HTTP volání znamená jedno volání dané SQL procedury. Má to ale jistá omezení a specifika. Volání se provádí v tomto tvaru:
https://{adresa aplikace Gate}/{název mapování}/{parametry v base64}
Parametry HTTP volání se předávají jako base64 zakódovaný řetězec. Přesněji jde o řetězec standardních URI parametrů (tzv. Query String zakódovaný procentovou notací - viz https://en.wikipedia.org/wiki/Query_string), jehož UTF8 bytová reprezentace je zakódovaná do base64 řetězce.
Pro zakódování parametrů do base64 je možné použít SQL funkci eWay-CRM® dbo.EncodeToBase64.
Každé volání musí povinně obsahovat parametr s názvem id
. Hodnota tohoto parametru musí mít nutně tvar GUID/UUID (128 bitové číslo v hexadecimálním zápisu se 4 pomlčkami). Nulový GUID je u parametru id
zakázán.
Příklad volání, podle výše popsaného, vypadá takto:
http://server/eWay/Gate/username/aWQ9NzE0RUVCQkMtQkI3MC00MTJELTgzOEMtRTlFOTg2QzYxMEE0JmNvbG9yPXB1cnBsZQ==
Jedná se o volání se zakódovanými parametry:
id=714EEBBC-BB70-412D-838C-E9E986C610A4&color=purple
Parametr Color
nemusí mít velké C, protože dosazování do SQL ignoruje velikost písmen.
Namapovaná SQL procedura poté musí vždy vrátit alespoň jeden řádek výsledků s alespoň jedním sloupcem. Textová hodnota prvního sloupce prvního řádku (indexy 0 a 0) je vrácena jako HTML obsah odpovědi volání. Zbytek vrácených dat je ignorován.
Vytváření odkazu na dokument na serveru
Podmínkou pro možnost vytváření funkčních odkazů, je aktivní ukládání dokumentů do serverové databáze a ne na disk, viz ukládání dokumentů.
Následně je pak možné použít na serverové databázi požít následující příkaz:
SELECT 'https://adresa_webove_sluzby/Gate/doc/' + dbo.EncodeToBase64('id=0C803C29-3F12-11E9-BB42-001C4232EF18&revision=1')
Kde je potřeba nahradit text "adresa_webove_sluzby" skutečnou adresou webové služby a hodnotu za id= je třeba přepsat GUID dokumentu, na který se má odkazovat. Parametr revision pak určuje, o jakou verzi daného dokumentu se jedná. Výsledkem takového volání je pak adresa:
https://adresa_webove_sluzby/Gate/doc/aWQ9MEM4MDNDMjktM0YxMi0xMUU5LUJCNDItMDAxQzQyMzJFRjE4JnJldmlzaW9uPTE=
Chybné pokusy
Pokud volání neobsahuje všechny potřebné náležitosti, v SQL se vyskytne chyba nebo jen používá neexistující mapování, aplikace vrátí chybovou stránku s kódem 404. Pro diagnostiku pravé příčiny chyby volání je potřeba uskutečnit tyto HTTP požadavky skrze localhost
. Přesněji tak, aby procházeli přes loopback IP adresu. Toto se může hodit pro ladění nastavení mapování a SQL procedury.
V případě opakovaného chybného volání je IP adresa volajícího dočasně zablokována. Po tuto dobu dostává pouze chybovou stránku s kódem 503. Seznam blokovaných IP adres je možno vyprázdnit restartováním IIS aplikace eWay-CRM® Gate.
Varování o bezpečnosti
Aplikace eWay-CRM® Gate je přínosný nástroj a v kombinaci s uživatelskými SQL procedurami může pokrýt nespočet požadavků na veřejné výstupy ze systému. K jeho použití je ale potřeba přistupovat s uvědoměním si rizik, které přináší. Nastavením mapování v eWay-CRM® Gate se serverová databáze (jádro celého systému) otevírá k volání dané procedury prakticky kýmkoli, kdykoli a v jakémkoli počtu. Toto je velmi nutno mít stále na paměti! Z toho důvodu velmi nedoporučujeme v aplikaci eWay-CRM® Gate zpřístupnit volání, která:
- vracejí informace o více než jedné položce v systému (např. seznamy, reporty, sumarizace),
- vracejí data polí nebo položek, které jsou určitým uživatelům v rámci eWay-CRM® omezeny právy,
- vracejí osobní či jiná citlivá data, především data spadající pod GDPR,
- cokoliv v databázi mění či dokonce mažou,
- používají transakce,
- odesílají e-maily.
Důležité: Firma eWay System s.r.o. nemá a nemůže nést žádnou zodpovědnost za jakékoliv škody, ztráty nebo úniky dat způsobené nesprávným používáním nebo nastavením aplikace eWay-CRM® Gate. Veškerou zodpovědnost nese uživatel/zákazník dané instalace eWay-CRM®.