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
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
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
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: // 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) 20
Č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