Gradnja varnih, naslovno agnostičnih spletnih storitev Matevž Gačnik Microsoft regionalni direktor Microsoft MVP – XML Vodja področja razvoja aplikacij Gama System d.o.o.
Download
Report
Transcript Gradnja varnih, naslovno agnostičnih spletnih storitev Matevž Gačnik Microsoft regionalni direktor Microsoft MVP – XML Vodja področja razvoja aplikacij Gama System d.o.o.
Gradnja varnih,
naslovno agnostičnih spletnih storitev
Matevž Gačnik
Microsoft regionalni direktor
Microsoft MVP – XML
Vodja področja razvoja aplikacij
Gama System d.o.o.
Agenda
Stanje varnostnih mehanizmov v trenutnem
skladu tehnologije spletnih storitev
WS-Seturity, et al.
Predlagane arhitekture
Naslovna agnostičnost
Akronimi
GXA
Global XML Web Services Architecture
Množica specifikacij
Trenutno podprte z WSE:
WS-Security (varnost)
WS-Addressing
WS-Policy
WS-SecureConversation
WS-Trust
WSE 2.0
Modularne
Delujejo s pomočjo glav SOAP (SOAP header)
Web Services Enhancements 2.0
Produkt, ki se integrira v ogrodje .NET
Implementira specifikacije GXA
Staro ime WSDK (Web Services Development Kit)
SOAP, XML, WSDL, UDDI, bla bla bla,...
Kompatibilnost
Ne obstaja
WSE 1.0 in WSE 2.0
WSE 2.0 in WSE 3.0
Žica: Nekompatibilno
Objektni model: Nekompatibilno
WSE X.0 in WSE X-1.0
Žica: Nekompatibilno
Objektni model: Nekompatibilno
Žica: Nekompatibilno
Objektni model: Nekompatibilno
WSE X.0 in Indigo: Slabo kompatibilno
Žica: Kompatibilno
Objektni model: Nekompatibilno
Problem specifikacij
Opisne specifikacije
Protokoli
WSDL
UDDI
DISCO
SOAP
WS-Security
WS-Policy
…
Problem
Opisne specifikacije zaostajajo, kritična je WSDL
Arhitektura
Nalaganje specifikacij / standardov
HTTP
SOAP
IP
TCP
HTTP
IP
TCP
HTTP
SOAP
SOAP
WS-Security
IP
TCP
HTTP
SOAP
WS-Security
HTTP
TCP
IP
Kaj prinaša WSE, GXA?
Standardizacija
(Relativno) preprosta uporaba
Sploh
glede na kompleksnost tehnologij
Vse je mogoče narediti brez WSE
Pač
uporabimo druge tehnologije...
WS-Security
= SSL + lastna glava SOAP
WS-Addressing = lastna glava SOAP
Veliko
dela
Nestandardno
Kako
standardni so nestandardni standardi?
Procesni model – spletne
storitve
SOAP
Request
Strežnik
Odjemalec
- Metoda
- Parametri
SOAP
Respons
e
- Izvedba metode
- Rezultat
Procesni model - GXA
TraceInputFilter
TraceOutputFilter
SecurityOuputFilter
SOAP
TimestampOutputFilter
Request
SecurityInputFilter
TimestampInputFilter
PolicyInputFilter
PolicyOutputFilter
TraceOutputFilter
TraceInputFilter
SecurityOuputFilter
SecurityInputFilter
TimestampInputFilter
SOAP
PolicyInputFilter
Respons
e
Odjemalec
- Metoda
- Parametri
TimestampOutputFilter
PolicyOutputFilter
Strežnik
- Izvedba metode
- Rezultat
Zakaj potrebujemo WS-Security?
Imamo SSL
Enkripcija
Digitalni podpis
Prečkanje varnostnih domen
Kompleksnejše aplikacije želijo več od request/response
Identiteta, integriteta, varnost sporočila mora preživeti
HTTP preskok
WS-Security
Obstoječi standardi
Industrija že rešuje mnogo problemov:
X.509, Kerberos: avtentikacija
XML Encryption, XML Signature: enkripcija in podpis XML
Podaja način vključevanja zgornjih mehanizmov v
sporočilo SOAP
Problemi SSL
Točka – točka
Negotovost preskoka/preusmeritve
Standardna implementacija samo na HTTP
SOAP je/bo tuneliran tudi drugje
Avtentikacija končnega prejemnika in
pošiljatelja
Slabosti:
Neskalabilno
Nezanesljivo
Varnost
s stališča varnosti
ni zagotovljena, ne-varno
WS-Security
Aplikacija – aplikacija (end to end)
Zagotavlja
Integriteto sporočila
Zaupnost sporočila
Digitalni podpis, XML Signature
Simetrična, asimetrična kriptografija, XML Encryption
Varnost vgrajena v sporočilo SOAP
Prednosti:
Skalabilnost
Protokoli
Preusmeritve
Dodatna mrežna zahteva je nepotrebna
Standardizacija
Delovanje WS-Security 1
Specifikacija obravnava:
Avtentikacijo
Digitalni podpis
Enkripcijo
Odgovarja na vprašanja:
Koga avtoriziram? (avtorizacija <> avtentikacija)
Je bilo sporočilo med preskoki spremenjeno?
Je sporočilo res od pošiljatelja?
Je sporočilo prišlo, od kogar mislim, da je?
Kako zapišem stvari, za katere želim, da jih preberejo
samo izbrani?
Kako to rešujemo v realnem življenju?
Delovanje WS-Security 2
Tipičen potek sporočil
1.) Zahtevek za žeton
(ne nujno z uporabo SS)
Odjemalec
spletne
storitve
Servis žetonov
2.) Žeton, ki ga dodamo
sporočilu SOAP
4.) Validacija žetonov
3.) Podpis in pošiljanje
sporočila
5.) Odgovor
Spletna storitev
Digitalni podpis<>enkripcija
Različen namen
Enkripcija:
Namenjena
varovanju
Samo prejemnik lahko prebere sporočilo (če
asimetrična)
Digitalni podpis:
Namenjen
verovanju
Pošiljatelj je gotovo poslal vsebino
Pravno
Prebere
veljaven kot lastnoročni podpis
ga lahko kdorkoli, ki sporočilo ima
Asimetrična enkripcija
Prejemnik: Javni ključ
+
=
+
=
Prejemnik: Privatni ključ
Simetrična enkripcija
Ključ
+
=
+
=
Ključ
Digitalni podpis
Pošiljatelj: Privatni ključ
+
=
+
=
Pošiljatelj: Javni ključ
Zaščiten dialog
A (odjemalec) [PA, JA)
Digitalni podpis (PA)
Enkripcija (JB)
Pripnemo JA
B (strežnik) [PB, JB]
Vzamemo JA
Preverjanje podpisa (JA)
Dekripcija (PB)
Izvedba metode (gremo nazaj)
Enkripcija (JA)
Digitalni podpis (PB)
Nivoji objektnega modela
Dva nivoja
Programski
Deklarativni
SoapSender, SoapReceiver
SoapClient, SoapService
Visoko-nivojski
WS-Policy
Kaj uporabiti?
Odvisno od zahtev
Deklarativni nivo je primeren pri znanih odjemalcih, kjer
avtorizacija ni potrebna
Programski nivo lahko vključuje ročne nivoje avtorizacije
Programski nivo
Pridobivanje certifikata
byte[] certHash = {0x98, 0xec, 0x08, 0x4b, 0xa5,
0x7a, 0x6c, 0x2f, 0x39 ,0x26 ,0xb3 ,0x0a ,0x58,
0xbf ,0x65 ,0x25, 0x61, 0xc5, 0x64 ,0x59};
// iskanje certifikata
X509CertificateCollection certs =
store.FindCertificateByHash(certHash);
// izbira certifikata
X509Certificate cert = ((X509Certificate) certs[0]);
Načini za iskanje certifikata
FindCertificateByHash
FindCertificateByKeyIdentifier
FindCertificateBySubjectName
FindCertificateBySubjectString
Programski nivo
Preverjanje certifikata
Instanciranje vmesnega razreda in
pridobivanje konteksta SOAP
if ((!cert.SupportsDigitalSignature ||
(!cert.SupportsDataEncryption) ||
(cert.Key == null)) { MessageBox.Show(); }
Service1 svc = new Service1();
SoapContext reqContext = svc.RequestSoapContext;
Pridobivanje žetona iz certifikata
securityToken = new X509SecurityToken(cert);
Programski nivo
Digitalno podpisovanje
// dodajanje žetona
reqContext.Security.Tokens.Add(signatureToken);
// podpisovanje
MessageSignature sig = new
MessageSignature(signatureToken);
// dodajanje podpisa
reqContext.Security.Elements.Add(sig);
Enkripcija
// enkripcija, žeton je iz drugega certifikata!
EncryptedData enc = new
EncryptedData(encryptionToken);
// dodajanje enkripcije
reqContext.Security.Elements.Add(enc);
Programski nivo
Časovni žig
requestContext.Security.Timestamp.
TtlInSeconds = 60;
Klic metode
svc.sayHello();
Varnost in WSE
Kako do kriptiranega sporočila SOAP?
Digitalni podpis?
Naslovna agnostika
Cilj
Vzrok
Zagotoviti transparenco odjemalcem
Sprememba fizičnega naslova znotraj vaše
varnostne meje
Načrtovan izpad strežnika
Nadgradnja strežnika
Način
Usmerjevalnik SOAP
UDDI
Usmerjevalnik SOAP
Temelji na WS-Addressing
Princip delovanja
Usmerjevalnik SOAP
WS-Addressing
Internet
Storitev B
Storitev C
Ponudnik storitve
Končna stranka
Odjemalec
Storitev A
Arhitektura storitve
Usmerjevalnik SOAP
Ponudnik storitve
Storitev
Informacijski
vir
Usmerjevalnik SOAP
Internet
WS-Addressing
vmesnik storitve
Izhodna storitev
WS-Security + WS-SecureConversation
(Brez certifikata)
Vhodna storitev
Odjemalska
aplikacija
WS-Security + WS-SecureConversation
vmesnik storitve
(Osebni certifikat)
Varnostna meja
Varnostna meja
Končna stranka
Odjemalska
aplikacija
Informacijski
vir
Naslov končne točke določi usmerjevalnik SOAP
Odjemalec/uporabnik ima zagotovljeno
transparenco
Informacijski
vir
Usmerjevalnik SOAP
Princip delovanja
<?xml version="1.0" ?>
<r:referrals
xmlns:r="http://schemas.xmlsoap.org/ws/2001/10/referral">
<r:ref>
<r:for>
<r:exact>
http://www.request-response.com/router.asmx
</r:exact>
</r:for>
<r:if />
<r:go>
<r:via>
soap.tcp://MAINSERVER:5511/Service
</r:via>
</r:go>
<r:refId>
uuid:fa468856-0057-4e11-962a-81c5e292f2ae
</r:refId>
</r:ref>
</r:referrals>
Informacijski
vir
Informacijski
vir
Ponudnik storitve
Varnostna meja
Izhodna storitev
WS-Security + WS-SecureConversation
(Brez certifikata)
Vhodna storitev
Odjemalska
aplikacija
Varnostna meja
(Osebni certifikat)
Končna stranka
Odjemalska
aplikacija
Internet
WS-Security + WS-SecureConversation
vmesnik storitve
Storitev
Informacijski
vir
Naslov končne točke dobimo iz repozitorija UDDI
UDDI
Arhitektura storitve
Register UDDI
Povzetek
Kako?
Zakaj?
Web Services Enhancements 2.0
http://msdn.microsoft.com/webservices
Standardizacija
Preprostost
Varnost
Kdaj?
Lahko danes – odjemalec in strežnik sta prisiljena
uporabjati isto tehnologijo
Microsoft, IBM (WS-Security) imata implementacijo
BEA Systems, Oracle, Iona, RSA, SAP, Cisco, Intel, celo
Sun
?
Matevž Gačnik
Vodja področja razvoja aplikacij
Microsoft regionalni direktor
Microsoft MVP - XML
Gama System d.o.o.
http://www.gama-system.si
[email protected]