Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Piotr Czapiewski Wydział Informatyki ZUT. Wzajemne uwierzytelnienieAutoryzacja użytkownikówPoufność komunikatówNienaruszalność komunikatów.

Podobne prezentacje


Prezentacja na temat: "Piotr Czapiewski Wydział Informatyki ZUT. Wzajemne uwierzytelnienieAutoryzacja użytkownikówPoufność komunikatówNienaruszalność komunikatów."— Zapis prezentacji:

1 Piotr Czapiewski Wydział Informatyki ZUT

2

3 Wzajemne uwierzytelnienieAutoryzacja użytkownikówPoufność komunikatówNienaruszalność komunikatów

4 Bezpieczna warstwa transportowaAutoryzacja użytkownikówWS-Security

5 Certyfikaty X.509 Zapewnienie poufności Zapewnienie integralności (nienaruszalności komunikatów) Uwierzytelnienie serwera Opcjonalnie: uwierzytelnienie klienta Protokół HTTPS (SSL) Włączenie obsługi protokołu HTTPS Wymuszenie dostępu do usługi sieciowej przez HTTPS Wygenerowanie certyfikatu serwera Konfiguracja serwera aplikacji Połączenie z usługą przez HTTPS W razie potrzeby: dodanie certyfikatu serwera do zaufanych wystawców Konfiguracja klienta

6 HTTP-based authentication Dane logowania przesyłane w nagłówku żądania HTTP Role-based authorization Serwer aplikacji zarządza rolami użytkowników i dostępem do usług Miejsce przeprowadzenia autoryzacji Wskazane oddzielenie kodu usługi od mechanizmu autoryzacjiAutoryzacja przez klasę publikującą – EndpointAutoryzacja przez serwer aplikacji (np. Tomcat, Glassfish)

7 Autoryzacja przez HTTP dla usługi publikowanej przez klasę Endpoint

8 InetSocketAddress addr = new InetSocketAddress("localhost", 666); HttpServer server = HttpServer.create(addr, 5); server.start(); HttpContext context = server.createContext("/zegarynka"); context.setAuthenticator(new BasicAuthenticator("test") { public boolean checkCredentials(String user, String pass) { return "student".equals(user) && "pandatrzy".equals(pass); } }); Zegarynka z = new Zegarynka(); Endpoint endpoint = Endpoint.create(z); endpoint.publish(context); InetSocketAddress addr = new InetSocketAddress("localhost", 666); HttpServer server = HttpServer.create(addr, 5); server.start(); HttpContext context = server.createContext("/zegarynka"); context.setAuthenticator(new BasicAuthenticator("test") { public boolean checkCredentials(String user, String pass) { return "student".equals(user) && "pandatrzy".equals(pass); } }); Zegarynka z = new Zegarynka(); Endpoint endpoint = Endpoint.create(z); endpoint.publish(context);

9 BasicHttpBinding binding = new BasicHttpBinding(); binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; EndpointAddress remoteAddr = new EndpointAddress("http://localhost:666/zegarynka"); ZegarynkaClient zc = new ZegarynkaClient(binding, remoteAddr); zc.ClientCredentials.UserName.UserName = "student"; zc.ClientCredentials.UserName.Password = "pandatrzy"; string s = zc.ktoraGodzina(); BasicHttpBinding binding = new BasicHttpBinding(); binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; EndpointAddress remoteAddr = new EndpointAddress("http://localhost:666/zegarynka"); ZegarynkaClient zc = new ZegarynkaClient(binding, remoteAddr); zc.ClientCredentials.UserName.UserName = "student"; zc.ClientCredentials.UserName.Password = "pandatrzy"; string s = zc.ktoraGodzina();

10 POST /zegarynka HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic c3R1ZGVudDpwYW5kYXRyenk= Host: :666 Content-Length: 142 ope/ POST /zegarynka HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic c3R1ZGVudDpwYW5kYXRyenk= Host: :666 Content-Length: 142 ope/ HTTP/ OK Transfer-encoding: chunked Content-type: text/xml;charset="utf-8" Tu e Mar 23 21:19:09 CET pe/http://javaapplication2/ HTTP/ OK Transfer-encoding: chunked Content-type: text/xml;charset="utf-8" Tu e Mar 23 21:19:09 CET pe/http://javaapplication2/

11 POST /zegarynka HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic c3R1ZGVudDpkc2Zhc2Rm Host: :666 Content-Length: 142 ope/ POST /zegarynka HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic c3R1ZGVudDpkc2Zhc2Rm Host: :666 Content-Length: 142 ope/ HTTP/ Unauthorized Content-length: 0 Www-authenticate: Basic realm="test" HTTP/ Unauthorized Content-length: 0 Www-authenticate: Basic realm="test"

12 Publikowanie usługi na serwerze Tomcat Zabezpieczenie usługi (HTTPS, autoryzacja)

13 Kod usługi Niezależny od sposobu publikacji Taki sam jak w przykładzie publikowanym przez Endpoint package pc.ws; public class Zegarynka public String ktoraGodzina() { return Calendar.getInstance().getTime().toString(); public String zakukaj(int ileRazy) { String s = ""; for(int i=0; i

14 ... com.sun.xml.ws.transport.http.servlet.WSServletContextListener Zegarynka com.sun.xml.ws.transport.http.servlet.WSServlet 1 Zegarynka /Zegarynka... com.sun.xml.ws.transport.http.servlet.WSServletContextListener Zegarynka com.sun.xml.ws.transport.http.servlet.WSServlet 1 Zegarynka /Zegarynka...

15

16 Wygenerowanie klucza – narzędzie keytool Konfiguracja serwera – plik server.xml keytool -genkey -alias tomcat –keyalg RSA

17 ... Zabezpieczenie usług ZegarynkaService Usługa Zegarynka /Zegarynka Wymuś HTTPS CONFIDENTIAL... Zabezpieczenie usług ZegarynkaService Usługa Zegarynka /Zegarynka Wymuś HTTPS CONFIDENTIAL...

18 Plik tomcat-users.xml

19 ... zegarmistrz TylkoHTTPS ZegarynkaService Usługa Zegarynka /Zegarynka Tylko dla zegarmistrzów zegarmistrz Poufne CONFIDENTIAL BASIC uslugi... zegarmistrz TylkoHTTPS ZegarynkaService Usługa Zegarynka /Zegarynka Tylko dla zegarmistrzów zegarmistrz Poufne CONFIDENTIAL BASIC uslugi zegarmistrz... zegarmistrz BASIC uslugi

20 Generowanie klas pośredniczących Netbeans New project -> Java Application New file -> Web Service Client Z linii poleceń – narzędzie wsimport wsimport -keep -p nazwa.pakietu

21 ZegarynkaService zs = new ZegarynkaService(); Zegarynka zp = zs.getZegarynkaPort(); String s = zp.ktoraGodzina(); System.out.println(s);

22 ZegarynkaService zs = new ZegarynkaService(); Zegarynka zp = zs.getZegarynkaPort(); BindingProvider prov = (BindingProvider)zp; prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "student"); prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "pandatrzy"); String s = zp.ktoraGodzina(); System.out.println(s);

23

24 WS-Security WS-Policy WS-Secure Conversation WS-TrustWS-FederationWS-PrivacyWS-Authorization

25 Rozszerzenie protokołu SOAP Protokół komunikacyjny określający sposób zabezpieczania usług sieciowych Zapewnienie integralności i poufności SAML (Security Assertion Markup Language), Kerberos, certyfikaty X.509 XML Encryption, XML Signature Protokół określa: sposób dołączania podpisów do komunikatów SOAP sposób szyfrowania komunikatów SOAP sposób dołączania tokenów (także binarnych; Kerberos tickets, certfykaty X.509)

26 Uwierzytelnienie UsernameToken Profile X.509 Certificate Token Profile SAML (Security Assertion Markup Language) Token Profile

27

28 dGhpcyBpcyBub3QgYSBzaWduYXR1cmUK.../DigestValue>

29 A23B45C56

30 Specyfikowanie i komunikowanie polityki zabezpieczeń WS-Policy Wydawanie, odnawianie i walidacja tokenów zabezpieczających Sposoby ustanawiania zaufania pomiędzy stronami WS-Trust Współdzielenie kontekstu zabezpieczeń Bezpieczne konwersacje pomiędzy witrynami z użyciem Web Services WS-SecureConversation Mechanizmy współdzielenia informacji o autentykacji WS-Federation Określenie mechanizmów i polityki autoryzacji klientów usługi WS-Authorization

31

32 Specyfikacje rozszerzające możliwości Web Services WS-Security, WS-Policy, WS-Authorization, WS-Trust, WS- Federation, WS-Secure Conversation, WS-Privacy… WS-Reliability WS-Transaction WS-Addressing, WS-Transfer, WS-Eventing, WS-Notification, WS- Discovery, WS-MetadataExchange, …

33 Protokół wiarygodnej wymiany komunikatów pomiędzy usługami sieciowymi Reliable Messaging Reliable Messaging (RM) is the execution of a transport-agnostic, SOAP-based protocol providing quality of service in the reliable delivery of messages

34 Specyfikacja definiuje następujące mechanizmy: Guaranteed message delivery, or At-Least-Once delivery semantics. Guaranteed message duplicate elimination, or At-Most-Once delivery semantics. Guaranteed message delivery and duplicate elimination, or Exactly- Once delivery semantics. Guaranteed message ordering for delivery within a group of messages.

35 Specyfikacja określająca sposób obsługi transakcji w usługach sieciowych Określa dwa rodzaje koordynacji działań w usługach sieciowych: Atomic Transaction (AT) – dla pojedynczych operacji Business Activity (BA) – dla transakcji długoterminowych Powiązane specyfikacje: WS-Coordination WS-AtomicTransaction WS-BusinessActivity


Pobierz ppt "Piotr Czapiewski Wydział Informatyki ZUT. Wzajemne uwierzytelnienieAutoryzacja użytkownikówPoufność komunikatówNienaruszalność komunikatów."

Podobne prezentacje


Reklamy Google