CPE 401 / 601 Computer Network Systems

Slides:



Advertisements
Similar presentations
Web Service Ahmed Gamal Ahmed Nile University Bioinformatics Group
Advertisements

Introduction to Computing Using Python CSC Winter 2013 Week 8: WWW and Search  World Wide Web  Python Modules for WWW  Web Crawling  Thursday:
SOAP.
Topics Acronyms in Action SOAP 6 November 2008 CIS 340.
SE 370: Programming Web Services Week 4: SOAP & NetBeans Copyright © Steven W. Johnson February 1, 2013.
Web Services Nasrullah. Motivation about web service There are number of programms over the internet that need to communicate with other programms over.
SOAP Lee Jong-uk. Introduction What is SOAP? The features of SOAP The structure of SOAP SOAP exchange message model & message Examples of SOAP.
SOAP Quang Vinh Pham Simon De Baets Université Libre de Bruxelles1.
XML-RPC Remote Procedure Call (RPC) is a model that specifies how cooperating processes on different nodes in a heterogeneous computing environment can.
Naming Computer Engineering Department Distributed Systems Course Asst. Prof. Dr. Ahmet Sayar Kocaeli University - Fall 2014.
XML Technologies and Applications Rajshekhar Sunderraman Department of Computer Science Georgia State University Atlanta, GA 30302
LDAP Jianwen Luo School of CTI, Depaul Univ. Oct.23, 1998.
Slide 1 EE557: Server-Side Development Lecturer: David Molloy Room: XG19 Mondays 10am-1pm Notes:
Directory & Naming Services CS-328 Dick Steflik. A Directory.
SOAP Chandra Dutt Yarlagadda Introduction  Why ?  What ?  How ?  Security Issues in SOAP  Advantages  Uses  Conclusion.
SOAP Same basic functionality as XMLRPC but extensible –complex data structures –intermediate processing possible –more support for classic RPC constructs.
Using XML for Distributed Computing XML-RPC and SOAP Mark Lewis
HTTP Overview Vijayan Sugumaran School of Business Administration Oakland University.
TP2653 Adv Web Programming SOAP and WSDL. SOAP Simple Object Access Protocol – Lightweight XML-based messaging protocol – A protocol for accessing a Web.
Web Servers Web server software is a product that works with the operating system The server computer can run more than one software product such as .
Human-Computer Interface Course 5. ISPs and Internet connection.
1 HTML and CGI Scripting CSC8304 – Computing Environments for Bioinformatics - Lecture 10.
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
SOAP Tutorial Ching-Long Yeh 葉慶隆 Department of Computer Science and Engineering Tatung University
1 Internet Based Applications Lightweight Directory Access Protocol (LDAP) Piotr Wierzejewski.
23/4/2001LDAP Overview - HEPix - LAL 2001 LDAP Overview HEPix – LAL Apr Michel Jouvin
Netprog: LDAP1 Lightweight Directory Access Protocol (LDAP) Refs: –Netscape LDAP server docs – U. of Michigan LDAP docs – docs –RFCs:
LDAP Search Criteria Fall 2004 Rev. 2. LDAP Searches Can be performed on Single directory entry Contents of a single container Entire subtree Required.
SPARCS 10 이대근 (harry). Contents  Directory Service  What is LDAP?  Installation  Configuration  ldap-utils  User authentication with LDAP.
Evaluating Web Services for FDMS Cynthia Loitch OAR/PMEL (PI) Eugene Burger OAR/PMEL NOAA Research Webshop 2003 Longmont, CO 3-5 June 2003.
The Directory A distributed database Distributed maintenance.
Web Services (SOAP, WSDL, and UDDI)
James Holladay, Mario Sweeney, Vu Tran. Web Services Presentation Web Services Theory James Holladay Tools – Visual Studio Vu Tran Tools – Net Beans Mario.
Current Trends in Network- Based Application Developments Bill Chu Department of Software and Information Systems UNC Charlotte.
XML Web Services Architecture Siddharth Ruchandani CS 6362 – SW Architecture & Design Summer /11/05.
Chapter 10 Intro to SOAP and WSDL. Objectives By study in the chapter, you will be able to: Describe what is SOAP Exam the rules for creating a SOAP document.
LDAP (Lightweight Directory Access Protocol ) Speaker: Chang-Yu Wu Adviser: Quincy Wu Date:2007/08/22.
ECEN “Internet Protocols and Modeling”, Spring 2012 Course Materials: Papers, Reference Texts: Bertsekas/Gallager, Stuber, Stallings, etc Class.
1 Web Services Web and Database Management System.
Simple Object Access Protocol. Web Services: SOAP2 Why Simple Object Access Protocol Light weight replacement for complicated distributed object technology.
TCP/IP (Transmission Control Protocol / Internet Protocol)
XML, XSL, and SOAP Building Object Systems from Documents CSC/ECE 591o Summer 2000.
IS-907 Java EE World Wide Web - Overview. World Wide Web - History Tim Berners-Lee, CERN, 1990 Enable researchers to share information: Remote Access.
.NET and SOAP An Overview of SOAP By Raghavendra Aekka.
SOAP Kanda Runapongsa Dept. of Computer Engineering Khon Kaen University.
Web Technologies Lecture 4 XML and XHTML. XML Extensible Markup Language Set of rules for encoding a document in a format readable – By humans, and –
Paulo Repa Lightweight Directory Access Protocol Paulo Repa
RESTful Web Services What is RESTful?
Web Services An Introduction Copyright © Curt Hill.
AJAX. Ajax  $.get  $.post  $.getJSON  $.ajax  json and xml  Looping over data results, success and error callbacks.
Netprog: Soap & XML-RPC1 XML-RPC and SOAP. Netprog: Soap & XML-RPC2 XML Extensible Markup Language Markup Language. –HTML is also a markup language (but.
The LDAP Protocol. Agenda Background and Motivation Understanding LDAP Information Structure Naming Functions/Operations Security Protocol Model Mapping.
Ch 2. Application Layer Myungchul Kim
SOAP, Web Service, WSDL Week 14 Web site:
XML and Distributed Applications By Quddus Chong Presentation for CS551 – Fall 2001.
REST API Design. Application API API = Application Programming Interface APIs expose functionality of an application or service that exists independently.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved Chapter 9 Web Services: JAX-RPC,
Sabri Kızanlık Ural Emekçi
Working at a Small-to-Medium Business or ISP – Chapter 7
Working at a Small-to-Medium Business or ISP – Chapter 7
IS333D: MULTI-TIER APPLICATION DEVELOPMENT
WEB API.
Chapter 9 Web Services: JAX-RPC, WSDL, XML Schema, and SOAP
Working at a Small-to-Medium Business or ISP – Chapter 7
XML Data Introduction, Well-formed XML.
Introduction to Name and Directory Services
Lightweight Directory Access Protocol (LDAP)
Presentation transcript:

CPE 401 / 601 Computer Network Systems Lecture 21 XML, SOAP, LDAP CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger

XML: Extensible Markup Language HTML is also a markup language but it's not extensible! XML allows you to make up your own tags. Document Type Definition Schema XML

Sample XML <?xml version="1.0"?> <student> <rid>660012345</rid> <first>Joe</first> <middle>X.</middle> <last>Smith</last> <courses semester="fall02"> <course> <name>Exploiting the Information World</name> <crn>12345</crn> <num>ITEC-2110</num> </course> </courses> <address>123 main street</address> <phone>555-2929</phone> </student> XML

So What ? XML generation is simple XML Parsing is also pretty simple there are lots of parsers available! Browsers understand XML (somewhat). CSS style sheets XSL: Extensible Stylesheet Language XML can be used for document storage and transfer. XML

XML messaging RPC: XML is used to encode procedure calls and responses. EDI: Electronic Document Interchange transfer documents between applications across a network purchase orders, financial transactions, etc. XML

XML-RPC Use XML to encode requests Response is also an XML document procedure name parameter values Response is also an XML document return value(s) errors (faults) Both are well defined document types tag names are defined in the XML-RPC specification document. XML

Uses HTTP POST Use existing protocol Avoid firewall issues and software! Avoid firewall issues everyone allows HTTP traffic XML-RPC Request is the body of an HTTP POST. XML-RPC Response is the body (content) of the HTTP response. XML

Example Request (swiped from xml-rpc.com) POST /RPC2 HTTP/1.0 Host: betty.userland.com User-Agent: Frontier/5.1.2 (WinNT) Content-Type: text/xml Content-length: 181 <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</i4></value> </param> </params> </methodCall> XML

Sample Response HTTP/1.1 200 OK Connection: close Content-Length: 158 Content-Type: text/xml Date: Fri, 17 Jul 1998 19:55:08 GMT Server: UserLand Frontier/5.1.2-WinNT<p> <xml version="1.0"?> <methodResponse> <params> <param> <value> <string>South Dakota</string> </value> </param> </params> </methodResponse> XML

XML-RPC Data Types <int> or <i4> <boolean> <string> <double> <dateTime.iso8601> <struct> <array> XML

XML-RPC struct <struct> <member> <name>Hostname</name> <value> <string>monte.cs.rpi.edu</string> </value> </member> <name>IPAddress</name> <string>128.213.7.32</string> </struct> XML

XML-RPC array <array> <data> <value><i4>12</i4></value> <value><string>Egypt</string></value> <value><boolean>0</boolean></value> <value><i4>-31</i4></value> </data> </array> XML

XML-RPC Programming Need to be able to generate HTTP requests (client) and responses(server) Need to generate XML documents Need to parse XML documents and extract specific items Need to handle faults (errors) XML

SOAP: Simple Object Access Protocol Same general idea as XML-RPC, but more features: enumerations Polymorphism (type determined at run time) user defined data types SOAP

SOAP Documents are more complex use namespaces formal "envelope" Soap Header Soap Body SOAP

SOAP Request Example POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/ SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> SOAP

XML-RPC vs. SOAP XML-RPC is much simpler There are lots of web services based on XML-RPC. SOAP makes it easier to exchange more complex documents. SOAP runs over many protocols: HTTP, SMTP, FTP, … SOAP

LDAP: Lightweight Directory Access Protocol A "directory" service is a network accessible database Small amount of information in each request/reply. Limited functionality as compared to a complete database system Updates (changes) are much less frequent than queries. LDAP

Directories Some typical examples include: telephone directories lists of addresses (email, network, P.O., etc) Each record is referenced by a unique key: given a name, look up a phone number given a name, look up an email address LDAP

Applications Some applications simply provide a front-end to a directory service. Electronic phone book. Some applications use a directory service to store configuration information, auxiliary databases, LDAP

Information Structure Typically, the information in a directory is structured hierarchically but it doesn't have to be The structure of the data (the hierarchy) is often useful in finding data provides some (minimal) relationship between records. LDAP

Example: DNS The Domain Name System is an example of a directory: hierarchical structure for each item there is a unique key (the hostname) and a number of attributes: IP address Mail exchanger Host information etc... LDAP

X.500 X.500 is a Directory Service that has been used for a while: Based on O.S.I. Protocol Stack requires upper layers (above transport) of the OSI Stack Heavyweight service (protocol). A number of lightweight front-ends to X.500 have been developed The most recent is LDAP LDAP

LDAP Lightweight Directory Access Protocol Based on TCP but can be mapped to other protocols RFC 1777: data representation scheme defines operations and mapping to requests/response protocol RFC 1823: API has become a standard no sockets programming required! LDAP

LDAP Data Representation Each record has a unique key called a distinguished name dn for short A distinguished name is meant to be used by humans not just computers Each dn is a sequence of components. Each component is a string containing an attribute=value pair. LDAP

Example DN CN=Mehmet Gunes, OU=Computer Science, O=University of Nevada Reno, C=US Typically written all on one line. LDAP

CN=Cansin Yaman, OU=EBME, O=UNR, C=US Hierarchy Like Domain Names, the name can be interpreted as part of a hierarchy. The last component of the dn is at the highest level in the hierarchy. CN=Cansin Yaman, OU=EBME, O=UNR, C=US LDAP

Sample Hierarchy C=US O=UNR O=RPI OU=Computer Science OU=EBME CN=Mehmet Gunes LDAP

Component Names The components can be anything, but a standard hierarchy is used for a global LDAP namespace C country name O organization name OU organizational unit CN common name L locality name ST state or province STREET street address LDAP

Relative DNs Relative Distinguished Names are the individual components of a Distinguished Name interpreted as relative to some position in the hierarchy For example, the RDN "ou=EBME" falls in the hierarchy below "o=UNR, c=US". LDAP

DN usage A distinguished name is a key used to access a record. Each record can contain multiple attribute/value pairs. Examples of attributes: phone number email address title home page public key project 3 grade LDAP

ObjectClass A commonly used attribute is "objectClass“ Each record represents an object, Attributes associated with each object are defined according to it's objectClass The value of the objectClass attribute Examples of objectClass: organization (needs a name and address) person (needs name, email, phone & address) course (needs a number, instructor, room) LDAP

Defining ObjectClass types You can define what attributes are required for objects with a specific value for the objectclass attribute You can also define what attributes are allowed New records must adhere to these settings! LDAP

Multiple Values Each attribute can have multiple values. For example, we could have the following record: DN: cn=Mehmet Gunes, O=UNR, C=US CN: Mehmet Hadi Gunes CN: Mehmet H. Gunes Email: mgunes@unr.edu Email: mgunes@cse.unr.edu LDAP

LDAP Services Add, Delete, Change entry Change entry name (dn) Searching (the primary operation) Search some portion of the directory for entries that match some criteria LDAP

Authentication LDAP authentication can be based on simple passwords (cleartext) or Kerberos LDAP V3 includes support for other techniques including public keys LDAP

LDAP Requests bind/unbind search modify add delete compare authentication search modify add delete compare LDAP

LDAP Protocol Definition The protocol is defined in RFC 1777 using ASN.1 (abstract syntax notation) BER (Basic Encoding Rules) All requests/responses are packaged in an "envelope“ headers include a messageID field LDAP

Example - LDAP bind request Bind request must be the first request BindRequest = [Application 0] SEQUENCE { version INTEGER (1…127), name LDAPDN, authentication CHOICE { simple [0] OCTET STRING, krbv42LDAP [1] OCTET STRING, krbv42DSA [2] OCTET STRING } LDAP

Other Requests Search/modify/delete/change requests can include maximum time limits and size limits in the case of search There can be multiple pending requests each with unique messageID Asynchronous replies each includes messageID of request LDAP

Search Request Parameters base scope size time attributes attrsonly search_filter LDAP

Search Parameter: Base The base is the DN of root of the search A server typically serves only below some subtree of the global DN namespace. You can ask the server to restrict the search to a subtree of what it serves. LDAP

Search Parameter: Scope base search only the base element onelevel search all elements that are children of the base subtree search everything in the subtree base LDAP

Search Parameter: Time Limit on number of seconds the search can take. Value of 0 means “no limit”. LDAP

Search Parameter: Size Limit on the number of entries to return from the search. A value of 0 means no limit. Netprog: LDAP

Search Parameter: Attributes A list of attributes that should be returned for each matched entry. NULL mean “all attributes” Attribute names are strings. LDAP

Search Parameter: Attrsonly A flag that indicates whether values should be returned TRUE: return both attributes and values FALSE: return just list of attributes LDAP

Search Parameter: Filter A search filter defines the conditions that constitute a match Filters are text strings RFC 1558 describes the syntax of LDAP filters LDAP

Search Filters Restrict the search to those records "objectclass=*” that have specific attributes, or those whose attributes have restricted values "objectclass=*” match all records "cn=*mehmet*“ matches any record with “mehmet" in the value of cn LDAP

Complex Filters You can combine simple filters with boolean &, | and ! (&(cn=*da)(email=*hotmail*)) (&(!(age>=18))(drinks=yes)) (|(grade>=90)(cookies>10)) LDAP

Search Reply Each search can generate a sequence of Search Response records Distinguished Name for record list of attributes, possibly with list of values for each attribute Result code LDAP includes an extensive error/status reporting facility. LDAP

LDAP API To write a client we don't need to know the details of the protocol There are a couple of well-established APIs: the original (RFC 1823) from U. of Michigan. Netscape has one. In both cases we are spared the details of the protocol, we just call some subroutines. The socket stuff is handled for us. LDAP

Writing a client 1. Open connection with a server 2. Authenticate 3. Do some searches/modification/deletions 4. Close the connection LDAP

Opening a connection int ldap_bind( LDAP *ld, connection handle char *dn, who you are (your dn) char *cred, your credentials int method) which kind of authenticaton return value is LDAP_SUCCESS on success or else ldap_errno is set to indicate the error. LDAP

Simple bind There are actually a bunch of ldap_bind functions, this is the simplest: int ldap_simple_bind( LDAP *ld, connection handle char *dn, who you are (your dis. name) char *passwd) your ldap password LDAP

Simple Search Query int ldap_search_s( LDAP *ld, connection handle char *base, dn of base of search int scope, scope of the search char *filter, search filter char *attrs[], list of attr. to return int attrsonly, flag - return no values? LDAPMessage **res) result of query Synchronous calls all end in "_s” returns the result right away LDAP

Example Search On success, mesg is a pointer to the result ldap_search_s(l, "course=Netprog, school=UNR“, LDAP_SCOPE_SUBTREE, "(cn=Joe Student)", NULL, 0, &mesg); On success, mesg is a pointer to the result To access the records in the result you have to use more of the LDAP library LDAP

Search Results The result is a list of records you do something like this to scan the list LDAPMessage *p; char *dn; for (p=ldap_first_entry(l,msg); p != NULL; p=ldap_next_entry(l,p)) { dn = ldap_get_dn(l,p); printf("dn: %d\n",dn); } LDAP

Attributes of each entry Extracting the attributes (and values) from each entry is similar step through a list of attributes using ldap_first_attribute() ldap_next_attribute() LDAP