Pokročilé Webové služby a Caché security Š. Havlíček
Webové služby co se tím míní? Webová služba metoda komunikace mezi dvěma elektronickými zařízeními přes internet Typicky jsou pomocí rozhraní přístupné z internetu...... a mohou být vykonávány na vzdáleném systému, který funguje jako hostitel ymíněných služeb 2
Webové služby - Základní pojmy XML (Extensible Markup Language): Navrhnut pro ukládání a transport dat SOAP (Simple Object Access Protocol): Protokol používaný pro zasílání XML zpráv mezi Webovými službami a jejich klienty WSDL (Web Services Description Language): Jazyk založený na XML poskytující model pro popis Webových služeb WSDL dokument popisuje Webovou službu a jeji metody 3
Co nabízí SOAP Základní messagingový framework nad kterým jsou webové služby vybudovány Protokol založený na XML obsahující 3 části: Obálku definuje co je ve zprávě uloženo a jak s obsahem zprávy nakládat Množinu pravidel popisujici definice datových typů Dohodu reprezentující způsob volání metod webových služeb a jejich odpovědi 4
SOAP Enevelope <soap:envelope> Kořenový element XML dokumentu reprezentujícího zprávu SOAP Obsahuje Hlavičku (Header) a Tělo zprávy </soap:envelope> 5
SOPA Header <soap:header> Hlavička obsahuje specifické informace specifikující vztah mezi aplikací a obsahem zprávy (např. autentikace) Je volitelná... Pokud není vyžadována službou Je stěžejní pro naše téma týkající se bezpečnosti WS </soap:header> 6
SOAP body <soap:body> Obsahuje obsah zprávy SOAP Reprezentuje volání webové služby Obsahuje názvy volaných metod WS, jejich názvy argumentů a jejich hodnoty </soap:body> 7
Podporované verze SOAP as WS InterSystems podporuje jak SOAP 1.1 tak 1.2 Podpora obou verzí je zabudována přímo do jádra Caché a tudíž nevyžaduje žádná middlewarová rozšíření a ani rozšíření operačního systému Tudíž jsou přístupné na všech podporovaných platformách 8
Způsoby vytváření webových služeb Modifikací existujících třid implementováním několika metod Vytvořením WS pomocí Web Service Wizzarda Použitím SOAP Wizzarda a WSDL dokumentu k automatickému vygenerování webové služby 9
Zabezpečení WS Zajistit, aby zprávy WS: které jsou přijaty, byly důvěryhodné mohly být čteny pouze autorizovaným příjemcem zprávy nemohly být znovu použity Prostředky: Public Key Infrastructure (PKI) Digitální certifikáty a šifrovací klíče 10
Security a infrastruktra WS Zabezpečení komunikace: HTTPS (HTTP over TLS/SSL) Užitečné pro zabezpeční point to point komunikaci Zabezpečení zprávy: WS security Užitečné pro zabezpeční komunikace end to end 11
WS-security? Je členem rodiny WS-* (Web Service specification) pocházející z dílny OASIS-Open standards organization Nábízí flexibilní rozšíření k SOAP Specifikuje bezpečnostní rozšíření Webových Služeb: Integrita zpráv Zabezpečení zpráv Identifikaci zpráv 12
Zjednodušený přístup ke standardům WS-Security Pro naše účely se vše zredukuje na: Implementaci standardu X.509 (PKI) a pomocí něho zajistit: Elektronické podepisování zpráv Ověřování el. podpisu Šifrování zpráv 13
Co je PKI? Public Key Infrastructure (PKI) Je to framework pro správu digitálnch certifikátů Obsahuje: Certifikační Autoritu (CA) Procesu Vytváření/Přijímání žádostí o vydání certikátu Nástroje pro správu certifikátů 14
Podpora PKI v Caché 2012.2 Klient a Server CA jsou zabudovány do Admistračního portálu: Zasílání žádostí o vydání certifikátu Vydání certifikátu Příjetí certifikátu Použití: Testování Používání vlastni CA 15
Ukázka PKI Vytvoření CA Vytvoření žádosti o certifikát Odeslání žádosti Certifikace žádosti a odslání certifikátu žadateli Import certifikátu Kontrola obsahu certifikátu 16
Základní komponenty WS-Security WS-Security Tokens: UserName Token využívá se k atentikaci webových služeb (TLS/SSL) Binary Security Token určen pro elektronické podepisování zpráv a jejich šifrování Timestamp token brání znovu použití zprávy 17
API pro WS-Security API, které lze využít v programovém kódu: %SOAP.Security classes %XML.Security classes %SYS.X509Credentials class 18
Hlavička zprávy WS 19
Binary Security Token Binární reprezentace certifikátu X.509 Může být použit jako referneční podklad pro ověřování El. Podpisu a k šifrování: Code example: 20 // Handle to the proper X.509 credentials set x509alias = SIGNCONSUMER // Access the proper X.509 Credentials set creds=##class(%sys.x509credentials).getbyalias(x509alias) // Create a Binary Security Token (X.509 Certificate) set cert=##class(%soap.security.binarysecuritytoken).createx509token(creds) // Add Binary Security Token do..securityout.addtoken(cert)
Časové razítko a podpis Časové razítko specifikuje dobu platnosti zprávy Podpisy jsou určeny pro zajištění integrity zprávy Code example: //-------- Binary Security Token Code from previous slide omitted --------// // Create and add a Timestamp Set timestamp = ##class(%soap.security.timestamp).create() do..securityout.addtoken(timestamp) // Create and add a Signature set sig=##class(%xml.security.signature).createx509(cert) do..securityout.addelement(sig) 21
Trasování a logování SOAP The SOAP Log zachytí komunikaci jak Webové služby tak Klienta webové služby