Některé komponenty sdružené pod MxServicePoints využívají společné komponenty:
•#Uživatelské validátory - umožňují vlastní autorizaci uživatelů webových služeb, např. vůči uživatelům z UMS databáze
•#Uživatelské autorizátory - umožňují vlastní autorizaci volání webových služeb, např. pro povolení IP adresy atd.
•#Auditory - umožňují audit/logování některých služeb (SOAP XML Parseru a některých metod MxWebServices)
Vlastní validátory webových služeb. Ověřují jména a heslo uživatele. Vlastní validátor neřeší, na jaké úrovni se validace bude provádět (Transport, Message ...) - to je dáno konfigurací endpointu (viz binding v konfiguraci služby).
Aktuálně jsou implenetovány validátory:
•DumyValidator - testovací validátor s účty definovanými v konfiguraci
•UmsDbUserValidator - validátor ověřující uživatele a heslo vůči uživatelům z UMS DB (nahrazuje MxWebServiceAuthenticator)
Konfigurace validátoru je určena v nepoviném elementu <customValidatorConfig>
Testovací validátor - ověřuje oproti seznamu účtů definovaných v konfiguraci.
Validátor je definován použitím elementu <dummyValidatorConfig>. Element <accounts> obsahuje elementy definující atributy key a value, které představují uživatelské jméno (key) a heslo (value).
Ukázka konfigurace:
<customValidatorConfig>
<dummyValidatorConfig>
<accounts>
<account key="test" value="test" />
<account key="authtestx" value="pass" />
</accounts>
</dummyValidatorConfig>
</customValidatorConfig>
Zde jsou nakonfigurovány dva účty - test/test a authtestx/pass.
Validátor pro ověření uživatele vůči uživatelům z UMS DB. Ověřuje vůči sloupcům EMAIL (case insensitive) a PASSWORD z tabulky UMS_USER.
Validátor je definován použitím elementu <umsDbUserValidatorConfig>, který obsauje atributy:
•cacheEntryExpirationPeriod = počet vteřin udávající, jak dlouho bude validní záznam v lokální cache validátoru - je-li záznam starší, smaže se z cache a načte z DB. (Tedy pokud by došlo ke smazání nebo změně uživatele v DB, můžou se maximálně po tuto dobu přihlašovat uživatel starými hodnotami)
•wrongPasswordExpirationPeriod = počet vteřin platnosti záznamu po špatně zadaném heslu. Pokud je špatně zadané heslo a záznam v cache je starší než tato hodnota, smaže se záznam z cache a načte z DB. (Aby se změna hesla projevila dříve než je platnost cache a zároveň, aby se při chybné konfiguraci nenačítal záznam při každém špatném požadavku).
Příklad konfigurace:
<customValidatorConfig>
<umsDbUserValidatorConfig cacheEntryExpirationPeriod="1800" wrongPasswordExpirationPeriod="30" />
</customValidatorConfig>
Validátor v zákaznické knihovně implementující rozhraní <code>UserNamePasswordValidator</code> (namespace System.IdentityModel.Selectors).
Validátor je definován použitám elementu <customLibraryValidatorConfig>, který obsauje atributy:
•serviceAssemblyPath = cesta ke knihovně implementující daný validátor
•serviceImplementingType = typ implementující validátor
Pokud validátor implementuje rozhraní INeedCustomConfigParameters (namespace Datasys.Ums.MobilChange.MxServicePoints.Security.Common), bude mu injektována zákaznická konfigurace v elementu customConfigParameters viz příklad:
Příklad konfigurace:
<customLibraryValidatorConfig
serviceAssemblyPath="KicShiftsRestService.dll"
serviceImplementingType="KicShiftsRestService.Security.KicUserValidator">
<customConfigParameters>
<Parametr1>Hodnota 1</Parametr1>
<Parametr2>Hodnota 2</Parametr2>
</customConfigParameters>
</customLibraryValidatorConfig>
Vlastní autorizátor webových služeb. Umožňuje ověřit např. IP adresy volajících apod.
Aktuálně jsou implenetovány autorizátory:
•IPAuhtorizator - autorizátor ověřující IP adresu volajícího
Konfigurace autorizátoru je určena v nepoviném elementu <customAuthorizatorConfig>
Ověřuje IP adresu volajícího, zda je v povolených IP adresách.
Autorizátor je definován použitím elementu <ipAuthorizatorConfig>. Element <allowedIPAddresses> obsahuje elementy definující povolené IP adresy.
Ukázka konfigurace:
<customAuthorizatorConfig>
<ipAuthorizatorConfig>
<allowedIPAddresses>
<ip>127.0.0.1</ip>
<ip>192.168.48.1</ip>
</allowedIPAddresses>
</ipAuthorizatorConfig>
</customAuthorizatorConfig>
Zde jsou nakonfigurovány dvě povolené IP adresy.
Auditory umožňují aduit/logování volání některých služeb (MxWebService, SOAP XML parser). Např. logování hlaviček, vstupních parametrů a výsledků volání do databáze, do souborů nebo prostřednictvím webové služby.
Implementované validátory:
•auditorViaStoredProcedure = auditor ukládající data do databáze prostřednictvím uložené procedury.
Konfigurace validátoru je určena v nepoviném elementu <auditors>.
Auditor ukládá data do databáze prostřednictvím uložené procedury s definovanými výrazy interpretu pro plnění parametrů uložení procedury danými hodnotami (hodnoty HTTP hlaviček, výsledek volání nebo parametry vstupního volání).
Auditor je definován použitím elementu <auditorViaStoredProcedure>, který je konfigurován elementy:
•<auditorName> = jméno auditoru pro snadnější identifikaci
•<storedProcedureName> = jméno uložené procedury, která se bude volat
•<parameters> definice parametrů s hodnotami pro volání uložené procedury
•<parameterMapperField> definice plnění parametru, obsahuje atributy:
•parameterName = jméno parametru v uložené proceduře
•parameterType = typ parametru v uložené proceduře, zatím pouze typ STRING
•expression = výraz interpretu pro mapování hodnoty viz mapování dále
•defaultValue = defaultní hodnota, pokud je vyhodnocení výrazu prázdný řetětec
Příklad konfigurace:
<auditors>
<auditorViaStoredProcedure>
<auditorName>TestSPAuditor</auditorName>
<storedProcedureName>AuditEddie</storedProcedureName>
<parameters>
<parameterMapperField parameterName="Param1" parameterType="STRING" expression="{HttpHeader:Content-Type}" defaultValue=""/>
<parameterMapperField parameterName="Param2" parameterType="STRING" expression="{ResultStatus:Code}" defaultValue=""/>
<parameterMapperField parameterName="Param3" parameterType="STRING" expression="{SendSmsExtProperty:MessageId}" defaultValue=""/>
</parameters>
</auditorViaStoredProcedure>
</auditors>
Výrazy (expression) pro mapování hodnot :
Výraz |
Popis |
Příklad |
|||
<textový řetězec> |
Text neuzavřený ve složených závorkách |
expression="TextMessage" |
|||
{HttpHeader:<jméno hlavičky>} |
Hodnota hlavičky příchozího webového požadavku (case insensitive) |
expression="{HttpHeader:Content-Type}" |
|||
{SendSmsExtProperty:<jméno vlastnosti>} {SendSmsExtProperty:<jméno vlastnosti>|formát} |
Získá vlastnost vygenerované SMS-ky. Vlastnosti mohou být (s významem viz mapper):
Parametr formát určuje formátování položky podle jejího typu - např. formát datumu, číslo výčtového typu apod - pordrobnosti viz [1]. Příklady formátovacích řetězců: •yyyyMMdd HH:mm:ss ... formát pro datum (pozor na rozdíly mezi M vs m a H vs h ) •d ... např. pro výčtový typ (MessageType, Priority, ReportLevel ...) vrátí číselnou hodnotu místo textové reprezentace (např. 4 místo textu default u Priority) •X ... pro čísla, vrátí číslo v hexadecimálním tvaru |
{SendSmsExtProperty:FromNumber} {SendSmsExtProperty:MessageText} {SendSmsExtProperty:MessageId} {SendSmsExtProperty:MessageType|d} {SendSmsExtProperty:MessageSent|yyyy-MM-dd} |
|||
{ResultStatus:<vlastnost>} |
Vlastnost statusu výsledku volání služby. Možné vlastnosti: •Code ... kód výsledku: •0 - OK •1 - nastala výjimka •2 - odesílatel aplikace není zadán •3 - chybí hodnota nějakého povinného parametru •4 - špatný formát telefonního čísla •5 - příliš dlouhý seznam IDček zpráv při potvrzování •Description ... popis výsledku (např. OK, nebo popis chyby] |
{ResultStatus:Code} {ResultStatus:Description} |