lecture 21 xml, soap, ldap

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

Upload: mieko

Post on 10-Feb-2016

45 views

Category:

Documents


0 download

DESCRIPTION

Lecture 21 XML, SOAP, LDAP. CPE 401 / 601 Computer Network Systems. slides are modified from Dave Hollinger. XML: Extensible Markup Language. 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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lecture 21 XML, SOAP, LDAP

Lecture 21

XML, SOAP, LDAP

CPE 401 / 601Computer Network Systems

slides are modified from Dave Hollinger

Page 2: Lecture 21 XML, SOAP, LDAP

XML:Extensible Markup Language 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 2

Page 3: Lecture 21 XML, SOAP, LDAP

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 3

Page 4: Lecture 21 XML, SOAP, LDAP

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 4

Page 5: Lecture 21 XML, SOAP, LDAP

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 5

Page 6: Lecture 21 XML, SOAP, LDAP

XML-RPC Use XML to encode requests

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 6

Page 7: Lecture 21 XML, SOAP, LDAP

Uses HTTP POST Use existing protocol

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 7

Page 8: Lecture 21 XML, SOAP, LDAP

Example Request(swiped from xml-rpc.com)POST /RPC2 HTTP/1.0Host: betty.userland.comUser-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 8

Page 9: Lecture 21 XML, SOAP, LDAP

Sample ResponseHTTP/1.1 200 OKConnection: closeContent-Length: 158Content-Type: text/xmlDate: Fri, 17 Jul 1998 19:55:08 GMTServer: UserLand Frontier/5.1.2-WinNT<p>

<xml version="1.0"?><methodResponse> <params> <param> <value> <string>South Dakota</string> </value> </param> </params></methodResponse>

XML 9

Page 10: Lecture 21 XML, SOAP, LDAP

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

XML 10

Page 11: Lecture 21 XML, SOAP, LDAP

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

XML 11

Page 12: Lecture 21 XML, SOAP, LDAP

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 12

Page 13: Lecture 21 XML, SOAP, LDAP

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 13

Page 14: Lecture 21 XML, SOAP, LDAP

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 14

Page 15: Lecture 21 XML, SOAP, LDAP

SOAP Documents are more complex

use namespaces formal "envelope"

• Soap Header• Soap Body

SOAP 15

Page 16: Lecture 21 XML, SOAP, LDAP

SOAP Request ExamplePOST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "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 16

Page 17: Lecture 21 XML, SOAP, LDAP

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 17

Page 18: Lecture 21 XML, SOAP, LDAP
Page 19: Lecture 21 XML, SOAP, LDAP

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 19

Page 20: Lecture 21 XML, SOAP, 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 20

Page 21: Lecture 21 XML, SOAP, 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 21

Page 22: Lecture 21 XML, SOAP, 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 22

Page 23: Lecture 21 XML, SOAP, 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 23

Page 24: Lecture 21 XML, SOAP, 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 24

Page 25: Lecture 21 XML, SOAP, 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 25

Page 26: Lecture 21 XML, SOAP, 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 26

Page 27: Lecture 21 XML, SOAP, LDAP

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

LDAP 27

Page 28: Lecture 21 XML, SOAP, LDAP

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 28

Page 29: Lecture 21 XML, SOAP, LDAP

Sample Hierarchy

LDAP 29

C=US

O=UNRO=RPI

OU=Computer ScienceOU=EBME

CN=Mehmet Gunes

Page 30: Lecture 21 XML, SOAP, LDAP

Component Names The components can be anything, but a

standard hierarchy is used for a global LDAP namespace

LDAP 30

C country nameO organization nameOU organizational unitCN common nameL locality nameST state or provinceSTREET street address

Page 31: Lecture 21 XML, SOAP, 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 31

Page 32: Lecture 21 XML, SOAP, 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 addresstitle home pagepublic key project 3 grade

LDAP 32

Page 33: Lecture 21 XML, SOAP, 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 33

Page 34: Lecture 21 XML, SOAP, 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 34

Page 35: Lecture 21 XML, SOAP, LDAP

Multiple Values Each attribute can have multiple values.

For example, we could have the following record:

DN: cn=Mehmet Gunes, O=UNR, C=USCN: Mehmet Hadi GunesCN: Mehmet H. GunesEmail: [email protected]: [email protected]

LDAP 35

Page 36: Lecture 21 XML, SOAP, 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 36

Page 37: Lecture 21 XML, SOAP, LDAP

Authentication LDAP authentication can be based on

simple passwords (cleartext) or Kerberos

LDAP V3 includes support for other techniques including public keys

LDAP 37

Page 38: Lecture 21 XML, SOAP, LDAP

LDAP Requests bind/unbind

authentication search modify add delete compare

LDAP 38

Page 39: Lecture 21 XML, SOAP, 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 39

Page 40: Lecture 21 XML, SOAP, LDAP

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

LDAP 40

Page 41: Lecture 21 XML, SOAP, 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 41

Page 42: Lecture 21 XML, SOAP, LDAP

Search Request Parameters

base scope size timeattributes attrsonlysearch_filter

LDAP 42

Page 43: Lecture 21 XML, SOAP, 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 43

Page 44: Lecture 21 XML, SOAP, 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 44

Page 45: Lecture 21 XML, SOAP, LDAP

Search Parameter: Time Limit on number of seconds the search

can take.

Value of 0 means “no limit”.

LDAP 45

Page 46: Lecture 21 XML, SOAP, LDAP

Search Parameter: Size Limit on the number of entries to return

from the search.

A value of 0 means no limit.

Netprog: LDAP 46

Page 47: Lecture 21 XML, SOAP, 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 47

Page 48: Lecture 21 XML, SOAP, 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 48

Page 49: Lecture 21 XML, SOAP, 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 49

Page 50: Lecture 21 XML, SOAP, LDAP

Search Filters Restrict the search to those records

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 50

Page 51: Lecture 21 XML, SOAP, LDAP

Complex Filters You can combine simple filters with

boolean &, | and !

(&(cn=*da)(email=*hotmail*))

(&(!(age>=18))(drinks=yes))

(|(grade>=90)(cookies>10))

LDAP 51

Page 52: Lecture 21 XML, SOAP, 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 52

Page 53: Lecture 21 XML, SOAP, 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 53

Page 54: Lecture 21 XML, SOAP, LDAP

Writing a client

1. Open connection with a server

2. Authenticate

3. Do some searches/modification/deletions

4. Close the connection

LDAP 54

Page 55: Lecture 21 XML, SOAP, LDAP

Opening a connectionint ldap_bind(

LDAP *ld, connection handlechar *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 55

Page 56: Lecture 21 XML, SOAP, LDAP

Simple bind There are actually a bunch of ldap_bind

functions, this is the simplest:int ldap_simple_bind(

LDAP *ld, connection handlechar *dn, who you are (your

dis. name) char *passwd) your ldap password

LDAP 56

Page 57: Lecture 21 XML, SOAP, LDAP

Simple Search Queryint ldap_search_s( LDAP *ld, connection handlechar *base, dn of base of searchint scope, scope of the searchchar *filter, search filterchar *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 57

Page 58: Lecture 21 XML, SOAP, LDAP

Example Searchldap_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 58

Page 59: Lecture 21 XML, SOAP, LDAP

Search ResultsThe 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 59

Page 60: Lecture 21 XML, SOAP, 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 60