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]