Integracja aplikacji Wykład 4

Slides:



Advertisements
Podobne prezentacje
Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. The OWASP.
Advertisements

Usługi sieciowe Wykład 9 VPN
Usługi sieciowe Wykład 6 Apache2- debian
tworzenie połączeń sieciowych
Java Server Faces Tomasz Nowak.
SQL Server Native XML Web Services
WEB SERVICE Stefan Rutkowski.
YOUTH in Gdynia. YOUTH: step 1 – Recruitment (December 2007) Szkoła Podstawowa nr 21 Szkoła Podstawowa nr 6 Szkoła Podstawowa nr 12 Gimnazjum nr 15 Towarzystwo.
In Katowice Providence Project meeting Poland, Katowice, 8th of June 2010.
Team Building Copyright, 2003 © Jerzy R. Nawrocki Requirements Engineering Lecture.
Router(config)# access-list 1 permit ale można również: Router(config)# access-list 1 permit any.
Gniazda komunikacji sieciowej w języku Java
Łukasz Monkiewicz.
142 JAVA – sterowanie i wątki public class A20 extends javax.swing.JApplet implements ActionListener { private int licznik = 0; private JTextField t =
Aplikacje sieciowe Obiekty typu Socket. ServerSocket ClientSocket Socket ClientSocket Socket.
Technologie informacyjne MCE Pudełko. Zakładanie strony internetowej Technologie informacyjne Marek Pudełko.
„Tworzenie aplikacji sieciowych w języku Java”
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Networking Prezentacja.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Tworzenie aplikacji sieciowych w języku Java Java – overview.
Przegląd zagadnień Struktura sieci systemu Windows 2003
MS SQL SERVER udział w rynku. Source: Gartner Dataquest (May 2006) Company Market Share (%) Market Share (%) Growth (%) Oracle6, ,
MS ASP.NET 2005/2006
1 Building Integration System - Training Internal | ST-IST/PRM1 | 02/2008 | © Robert Bosch GmbH All rights reserved, also regarding any disposal,
Tadeusz Janasiewicz IT Group, Tadeusz Janasiewicz, WSUS, IT Group, r.
1 Office for supporting social initiatives BORIS.
Prof. dr hab. Hubert Izdebski. Projekt : Odpowiedź na wyzwania gospodarki opartej na wiedzy: nowy program nauczania na WSHiP. Projekt współfinansowany.
Platformy Technologiczne web services
Najpopularniejsze aplikacje ASP.NET i PHP.
Aplikacje Internetowe
Integracja aplikacji Wykład 2
Rozproszone transakcje z wykorzystaniem usługi Service Broker w SQL Server 2008 R2 Andrzej Ptasznik.
Dr inż. Piotr Czapiewski. Overloading Znaczenie inne niż w większości języków obiektowych Metoda dynamicznego tworzenia pól i metod Magiczne metody.
Krzysztof Manuszewski
Theory of Computer Science - Basic information
Co nowego w Windows Server „Longhorn”?
Click to show the screen.
db4o Kacper Skory Marcin Talarek
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
PIO. Autor -Zofia Kruczkiewicz1 Wykład 1-część druga Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowania (część biznesowa aplikacji) iteracyjno-rozwojowy.
PIO. Autor -Zofia Kruczkiewicz1 Wykład 1-część druga Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowania (część biznesowa aplikacji) iteracyjno-rozwojowy.
ST/PRM2-EU | April 2013 | © Robert Bosch GmbH All rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution,
Przejście do usługi Office 365 Microsoft Online Services Przejście z pakietu BPOS do Office 365 dla klientów Microsoft Online Services.
Podstawy licencjonowania Exchange, SharePoint oraz Lync.
Technologie tworzenia aplikacji internetowych
Definiowanie i wykonywanie procesów biznesowych z wykorzystaniem Business Process Execution Language Recenzent: prof. dr hab. Mykhaylo Yatsymirskyy Promotor:
Automatyzacja testów akceptacyjnych
Komunikacja z platformą T2S
xHTML jako rozszerzenie HTML
Instalacja serwera WWW na komputerze lokalnym
Sieci komputerowe. Nowe technologie komputerowe
Integracja aplikacji Wykład 4
Uwierzytelnianie (Authentication) Sergiusz Przybylski III r. Informatyka Stosowana.
IBM Tivoli Storage Manager Strojenie A Presentation by Paweł Krawczyk June 8, 2011.
Temat 1: Umieszczanie skryptów w dokumencie
Teksty prymarne (original texts) to teksty autentyczne, nie są przeznaczone dla celów dydaktycznych; teksty adaptowane (simplified/adapted texts)są przystosowane.
Aplikacje WWW Prowadzący: Dr inż. Tomasz Molik Materiały dostępne na stronie: Hasło:
Warsztaty użytkowników programu PLANS – Karwia06 Język makropoleceń JMP programu PLANS Część I mgr inż. Tomasz Zdun.
Rozdział 9: Przegląd usług sieciowych
Rozdział 3: Bezpieczeństwo w sieci opartej na systemie Windows 2000.
Rozdział 6: Analiza protokołu TCP/IP
TROCHĘ HISTORII Marek Zając PO CO UŻYWAĆ OPENCL? Marek Zając.
1.
Department | 1/11/2013 | © Robert Bosch GmbH All rights reserved, also regarding any disposal, exploitation, reproduction, editing, distribution,
Piotr Czapiewski Wydział Informatyki ZUT.  Extensible Markup Language  Język znaczników  Human-readable and machine-readable  Niezależny od platformy.
BVMS 3.0 Moduł 13: Opcje zapisu iSCSI
Zagrożenia.
Active Directory Federation Services w Windows Server 2012 R2
Aplikacje i usługi internetowe
Connecticut Core Standards for English Language Arts & Literacy
© 2018 Al-Nafi. All Rights Reserved.
Zapis prezentacji:

Integracja aplikacji Wykład 4 Piotr Czapiewski Wydział Informatyki ZUT Integracja aplikacji Wykład 4

Bezpieczeństwo usług sieciowych

Cele zabezpieczeń Wzajemne uwierzytelnienie Autoryzacja użytkowników Poufność komunikatów Nienaruszalność komunikatów

Trzy poziomy zabezpieczania Web Services Bezpieczna warstwa transportowa Autoryzacja użytkowników WS-Security

Bezpieczna warstwa transportowa 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 Certyfikaty X.509 Zapewnienie poufności Zapewnienie integralności (nienaruszalności komunikatów) Uwierzytelnienie serwera Opcjonalnie: uwierzytelnienie klienta Protokół HTTPS (SSL)

Autoryzacja użytkowników Miejsce przeprowadzenia autoryzacji Wskazane oddzielenie kodu usługi od mechanizmu autoryzacji Autoryzacja przez klasę publikującą – Endpoint Autoryzacja przez serwer aplikacji (np. Tomcat, Glassfish) 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

Przykład Autoryzacja przez HTTP dla usługi publikowanej przez klasę Endpoint

HTTP Basic Authentication Serwer usługi – Java, JAX-WS, publikacja przez Endpoint 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);

HTTP Basic Authentication Klient usługi – C# 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();

HTTP Basic Authentication Konwersacja HTTP POST /zegarynka HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic c3R1ZGVudDpwYW5kYXRyenk= Host: 192.168.2.104:666 Content-Length: 142 <s:Envelope xmlns:s=http://schemas.xmlsoap.org/soap/envelope/><s:Body><ktoraGodzina xmlns="http://javaapplication2/"/></s:Body></s:Envelope> HTTP/1.1 200 OK Transfer-encoding: chunked Content-type: text/xml;charset="utf-8" <?xml version="1.0" ?><S:Envelope mlns:S=http://schemas.xmlsoap.org/soap/envelope/><S:Body><ns2:ktoraGodzinaResponse xmlns:ns2=http://javaapplication2/><return>Tue Mar 23 21:19:09 CET 2010</return></ns2:ktoraGodzinaResponse></S:Body></S:Envelope>

HTTP Basic Authentication Konwersacja HTTP – błąd autoryzacji POST /zegarynka HTTP/1.1 Content-Type: text/xml; charset=utf-8 SOAPAction: "" Authorization: Basic c3R1ZGVudDpkc2Zhc2Rm Host: 192.168.2.104:666 Content-Length: 142 <s:Envelope xmlns:s=http://schemas.xmlsoap.org/soap/envelope/><s:Body><ktoraGodzina xmlns="http://javaapplication2/"/></s:Body></s:Envelope> HTTP/1.1 401 Unauthorized Content-length: 0 Www-authenticate: Basic realm="test"

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

Instalacja usługi na serwerze Tomcat package pc.ws; import ...; @WebService() public class Zegarynka { @WebMethod public String ktoraGodzina() { return Calendar.getInstance().getTime().toString(); } @WebMethod public String zakukaj(int ileRazy) { String s = ""; for(int i=0; i<ileRazy; i++) s += "ku ku "; return s; } } Kod usługi Niezależny od sposobu publikacji Taki sam jak w przykładzie publikowanym przez Endpoint

Instalacja usługi na serwerze Tomcat Plik web Instalacja usługi na serwerze Tomcat Plik web.xml – deskryptor aplikacji webowej ... <listener> <listener-class> com.sun.xml.ws.transport.http.servlet.WSServletContextListener </listener-class> </listener> <servlet> <servlet-name>Zegarynka</servlet-name> <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Zegarynka</servlet-name> <url-pattern>/Zegarynka</url-pattern> </servlet-mapping>

Instalacja usługi na serwerze Tomcat Plik sun-jaxws.xml <?xml version="1.0" encoding="UTF-8"?> <endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"> <endpoint implementation="pc.ws.Zegarynka" name="Zegarynka" url-pattern="/Zegarynka" /> </endpoints>

Włączenie protokołu HTTPS Wygenerowanie klucza – narzędzie keytool Konfiguracja serwera – plik server.xml keytool -genkey -alias tomcat –keyalg RSA ... <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />

Wymuszenie protokołu HTTPS Konfiguracja usługi – plik web.xml ... <security-constraint> <display-name>Zabezpieczenie usług</display-name> <web-resource-collection> <web-resource-name>ZegarynkaService</web-resource-name> <description>Usługa Zegarynka</description> <url-pattern>/Zegarynka</url-pattern> </web-resource-collection> <user-data-constraint> <description>Wymuś HTTPS</description> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> ...

Autoryzacja – definicja użytkowników Plik tomcat-users.xml ... <tomcat-users> ... <role rolename="zegarmistrz"/> <user username="student" password="pandatrzy" roles="zegarmistrz"/> </tomcat-users>

Autoryzacja – zabezpieczenie usługi Konfiguracja usługi – plik web.xml <security-role> <description/> <role-name>zegarmistrz</role-name> </security-role> ... <security-role> <description/> <role-name>zegarmistrz</role-name> </security-role> <security-constraint> <display-name>TylkoHTTPS</display-name> <web-resource-collection> <web-resource-name>ZegarynkaService</web-resource-name> <description>Usługa Zegarynka</description> <url-pattern>/Zegarynka</url-pattern> </web-resource-collection> <auth-constraint> <description>Tylko dla zegarmistrzów</description> <role-name>zegarmistrz</role-name> </auth-constraint> <user-data-constraint> <description>Poufne</description> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>uslugi</realm-name> </login-config> <auth-constraint> <description>...</description> <role-name>zegarmistrz</role-name> </auth-constraint> <login-config> <auth-method>BASIC</auth-method> <realm-name>uslugi</realm-name> </login-config>

Klient usługi 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 http://adres.usługi?wsdl

Klient usługi Kod wersji bez autoryzacji ZegarynkaService zs = new ZegarynkaService(); Zegarynka zp = zs.getZegarynkaPort(); String s = zp.ktoraGodzina(); System.out.println(s);

Klient usługi Kod wersji z autoryzacją HTTP 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);

WS-Security

WS-Security i powiązane protokoły WS-Policy WS-Secure Conversation WS-Trust WS-Federation WS-Privacy WS-Authorization

WS-Security 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)

WS-Security Uwierzytelnienie UsernameToken Profile X.509 Certificate Token Profile SAML (Security Assertion Markup Language) Token Profile <wsse:UsernameToken wsu:Id="Example"> <wsse:Username> ... </wsse:Username> <wsse:Password Type="..."> ... </wsse:Password> <wsse:Nonce EncodingType="..."> ... </wsse:Nonce> <wsu:Created> ... </wsu:Created> </wsse:UsernameToken>

WS-Security: SOAP header <?xml version="1.0" encoding="utf-8"?> <S11:Envelope xmlns:S11="..." xmlns:wsse="..." xmlns:wsu="..." xmlns:ds="..."> <S11:Header> <wsse:Security xmlns:wsse="..."> <wsse:UsernameToken wsu:Id="Example"> <wsse:Username> ... </wsse:Username> <wsse:Password Type="..."> ... </wsse:Password> <wsse:Nonce EncodingType="..."> ... </wsse:Nonce> <wsu:Created> ... </wsu:Created> </wsse:UsernameToken> </wsse:Security> </S11:Header> <S11:Body wsu:Id="MsgBody"> <tru:getBalance xmlns:tru="http://samplebank.com/ws"> 65712356 </tru:getBalance> </S11:Body> </S11:Envelope>

XML Signature <Signature Id="MyFirstSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2006/12/xml-c14n11"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/> <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/"> <Transforms> <Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>dGhpcyBpcyBub3QgYSBzaWduYXR1cmUK.../DigestValue> </Reference> </SignedInfo> <SignatureValue>...</SignatureValue> <KeyInfo> <KeyValue> <DSAKeyValue> <P>...</P><Q>...</Q><G>...</G><Y>...</Y> </DSAKeyValue> </KeyValue> </KeyInfo> </Signature>

XML Encryption <?xml version='1.0'?> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' MimeType='text/xml'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData>

WS-Security – powiązane specyfikacje 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

Rodzina protokołów WS-*

Rodzina protokołów WS-* 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, …

WS-Reliability 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

WS-Reliability 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.

WS-Transaction 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