Issuu on Google+

AΛΔΞΑΝΓΡΔΙΟ Σ.Δ.Ι. ΘΔ΢΢ΑΛΟΝΙΚΗ΢ ΢ΥΟΛΗ ΣΔΥΝΟΛΟΓΙΚΧΝ ΔΦΑΡΜΟΓΧΝ ΣΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗ΢

ΠΣΤΧΙΑΚΗ ΕΡΓΑ΢ΙΑ Εφαρμογή τησ BPEL ςτον οριςμό Web Services για την υποςτήριξη τησ Αςφάλειασ - WS Security.

Σνπ θνηηεηή:

Δπηβιέπσλ θαζεγεηήο:

Αξκέλε Παλαγηώηε

Δπίθνπξνο θαζεγεηήο

Αξ. Μεηξώνπ 04/2667

Ηιηνύδεο Υξήζηνο


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ει. 1 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Copyright © Παλαγηψηεο Β. Αξκέλεο, Ιαλνπάξηνο 2011 Με επηθχιαμε παληφο δηθαηψκαηνο. All rights reserved. Απαγνξεχεηαη ε αληηγξαθή, απνζήθεπζε θαη δηαλνκή ηεο παξνχζαο εξγαζίαο, εμνινθιήξνπ ή ηκήκαηνο απηήο, γηα εκπνξηθφ ζθνπφ. Δπηηξέπεηαη ε αλαηχπσζε, απνζήθεπζε θαη δηαλνκή γηα ζθνπφ κε θεξδνζθνπηθφ, εθπαηδεπηηθήο ή εξεπλεηηθήο θχζεο, ππφ ηελ πξνυπφζεζε λα αλαθέξεηαη ε πεγή πξνέιεπζεο θαη λα δηαηεξείηαη ην παξφλ κήλπκα. Δξσηήκαηα πνπ αθνξνχλ ηε ρξήζε ηεο εξγαζίαο γηα θεξδνζθνπηθφ ζθνπφ πξέπεη λα απεπζχλνληαη πξνο ηνλ ζπγγξαθέα.

΢ει. 2 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ει. 3 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Πξόινγνο

Η παξνχζα πηπρηαθή εξγαζία εθπνλήζεθε θαηά ηε δηάξθεηα ηνπ ρεηκεξηλνχ εμακήλνπ ηνπ αθαδεκατθνχ έηνπο 2010-2011 απφ ην Παλαγηψηε Αξκέλε. Θα ήζεια λα επραξηζηήζσ ηνλ επηβιέπνληα θαζεγεηή κνπ θ. Υξίζην Ηιηνχδε γηα ηελ παξαθνινχζεζε ηεο πξνφδνπ ηεο εξγαζίαο θαη ηελ παξνρή θαηεπζπληήξησλ ζπκβνπιψλ πξνο επίηεπμε ελφο αμηφινγνπ απνηειέζκαηνο.

Ιαλνπάξηνο 2011 Παλαγηψηεο Αξκέλεο

΢ει. 4 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Πεξίιεςε

Η ζπλερήο εμέιημε ησλ ππεξεζηψλ ηζηνχ δεκηνχξγεζε κηα λέα αξρηηεθηνληθή ζπζηεκάησλ πνπ ζηξέθεηαη γχξσ απφ απηέο. Η ππεξεζηνζηξεθήο αξρηηεθηνληθή γηα λα θαηαθέξεη λα ζπλδπάζεη ππεξεζίεο ηζηνχ πνπ έρνπλ δεκηνπξγεζεί κε δηαθνξεηηθέο ηερλνινγίεο, ρξεζηκνπνηεί ηελ Γιψζζα Δθηέιεζεο Δπηρεηξεκαηηθψλ Γηαδηθαζηψλ

BPEL

πνπ

είλαη

αλεμάξηεηε

πιαηθφξκαο

θαη

ιεηηνπξγηθψλ

ζπζηεκάησλ. Χζηφζν, καδί κε ηελ εμέιημε ησλ ηερλνινγηψλ θαη αξρηηεθηνληθψλ δεκηνπξγίαο πιεξνθνξηαθψλ ζπζηεκάησλ, εμειίζζνληαη παξάιιεια θαη νη απεηιέο αζθάιεηαο. Οπφηε λέα πξφηππα αζθάιεηαο έρνπλ δεκηνπξγεζεί γηα λα ππνζηεξίμνπλ ηελ αζθάιεηα ζηελ ππεξεζηνζηξεθή αξρηηεθηνληθή. Η παξνχζα πηπρηαθή εξγαζία αλαθέξεηαη ζηα πξφηππα αζθάιεηαο ησλ ππεξεζηψλ ηζηνχ θαη ηνλ ηξφπν πνπ κπνξνχλ λα εθαξκνζηνχλ ζηηο επηρεηξεκαηηθέο δηαδηθαζίεο BPEL. Πεξηγξάθνληαη ηα πιενλεθηήκαηα θαη ηα κεηνλεθηήκαηα ησλ ππεξεζηψλ ηζηνχ θαη ηα δνκηθά ηνπο ζηνηρεία. Αλαθέξνληαη ηα πξφηππα αζθάιεηαο πνπ είλαη βαζηζκέλα ζε XML θαη απνηεινχλ ηα ζεκέιηα ηεο αζθάιεηαο ησλ ππεξεζηψλ ηζηνχ. Πεξηγξάθεηαη ν ηξφπνο ιεηηνπξγίαο ηεο BPEL, ηα ζεηηθά ηεο ζηνηρεία θαη ε δνκή ηεο. Η νηθνγέλεηα ησλ πξνηχπσλ WS-Security θαη ησλ πξνηχπσλ πνπ επεθηείλνπλ ηηο δπλαηφηεηέο ηνπ, έρνπλ δεκηνπξγεζεί απνθιεηζηηθά γηα ηελ δηαζθάιηζε ηεο εκπηζηεπηηθφηεηαο, ηεο αθεξαηφηεηαο θαη ηεο αμηνπηζηίαο ησλ ππεξεζηψλ ηζηνχ. ΢ηελ εξγαζία εμεηάδεηαη ν ηξφπνο πνπ κπνξνχλ λα εθαξκνζηνχλ ηα πξφηππα απηά ζε ζπλδπαζκφ κε ηελ BPEL. ΢ην ηέινο ηεο εξγαζίαο αλαθέξεηαη θαη αλαιχεηαη κηα πεξίπησζε ρξήζεο γηα ηελ θαιχηεξε θαηαλφεζε ηνπ.

΢ει. 5 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Abstract

The constant evolution of Web services has created a new system architecture that revolves around them. Service Oriented Architecture to be able to combine web services created with different technologies, using the Business Process Execution Language BPEL. BPEL is independent form different platforms and operating systems. However, with the evolution of development technologies and architectures, evolves security threats too. So, new security standards have been created to support Service Oriented Systems. This thesis refers to the security standards of Web services and how they can be applied to business processes BPEL. Describe the advantages and disadvantages of Web services and their components. Indicates the security XML standards and underpin the security of Web services. Describe the workflow of BPEL, the positive elements and structure of language. Family of WS-Security standards and standards that expand its capabilities have been created solely to ensure the confidentiality, integrity and reliability of Web services. The paper examines the way that they can apply these standards in conjunction with BPEL. At the end of thesis described and analyzed a use case for better understanding.

΢ει. 6 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Δπξεηήξην Πεξηερνκέλσλ

Πξφινγνο ............................................................................................................... 4 Πεξίιεςε ................................................................................................................ 5 Abstract .................................................................................................................. 6 Δπξεηήξην Πεξηερνκέλσλ ........................................................................................ 7 Δπξεηήξην ΢ρεκάησλ ............................................................................................ 12 Αξθηηθφιεμν Ξελφγισζζσλ Όξσλ ........................................................................ 15 Κεθάιαην 1ν : Δηζαγσγή ....................................................................................... 17 1.1

Δηζαγσγή ................................................................................................ 17

1.2

Αληηθείκελν θαη ΢ηφρνη ηεο Πηπρηαθήο Δξγαζίαο ...................................... 18

1.3

Οξγάλσζε Κεθαιαίσλ ............................................................................ 18

Κεθάιαην 2ν: Τπεξεζίεο Ιζηνχ ............................................................................. 20 2.1

Ση είλαη νη Τπεξεζίεο Ιζηνχ ..................................................................... 20

2.2

Σα Πιενλεθηήκαηα θαη ηα Μεηνλεθηήκαηα ησλ Τπεξεζηψλ Ιζηνχ. ............ 22

2.3

Η Αξρηηεθηνληθή ησλ Τπεξεζηψλ Ιζηνχ ................................................... 23

2.4

Τπεξεζηνζηξεθήο Αξρηηεθηνληθή –SOA (Service Oriented Architecture) 25

2.5

Σν πξσηφθνιιν SOAP (Simple Object Access Protocol) ........................ 27

2.6

WSDL (Web Services Description Language) ......................................... 30

2.7

UDDI (Universal Description, Discovery, and Integration) ....................... 31

2.8

Απεηιέο Αζθάιεηαο Τπεξεζηψλ Ιζηνχ ..................................................... 33

2.9

Αξρέο Αζθάιεηαο – Δξγαιεία Αζθάιεηαο ησλ Τπεξεζηψλ Ιζηνχ ............ 35

Δπίινγνο ........................................................................................................... 37 Κεθάιαην 3ν: Δξγαιεία Αζθάιεηαο XML .............................................................. 38

΢ει. 7 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Δηζαγσγή: Η ηερλνινγία XML ........................................................................... 38 3.1

Φεθηαθέο Τπνγξαθέο XML ..................................................................... 39

3.1.2

Καηεγνξίεο ςεθηαθψλ ππνγξαθψλ ...................................................... 41

3.1.3

Αλάιπζε Παξαδείγκαηνο κηαο Φεθηαθήο Τπνγξαθήο.......................... 44

3.1.4

Γεκηνπξγία θαη Δπηθχξσζε Φεθηαθήο Τπνγξαθήο ............................. 48

3.1.5

Πιενλεθηήκαηα θαη Μεηνλεθηήκαηα Φεθηαθψλ Τπνγξαθψλ ................ 52

3.2

Δηζαγσγή ζηελ Κξππηνγξάθεζε XML .................................................... 55

3.2.1

Βαζηθή Γνκή ΢ρήκαηνο Κξππηνγξάθεζεο XML .................................. 58

3.2.2

Γηαδηθαζία Κξππηνγξάθεζεο θαη Απνθξππηνγξάθεζεο ..................... 62

3.2.3

Κξππηνγξάθεζε XML θαη Φεθηαθέο Τπνγξαθέο XML ........................ 63

3.2.4

Απεηιέο Αζθάιεηαο ζηελ Κξππηνγξάθεζε XML .................................. 65

3.3

Πξνδηαγξαθέο Γηαρείξηζεο Κιεηδηψλ κε XML (XKMS)............................. 66

3.3.1

Τπεξεζία X-KISS................................................................................. 68

3.3.2

Τπεξεζία X-KRSS ............................................................................... 69

3.3.3

Πιενλεθηήκαηα ηεο XKMS.................................................................... 70

3.4

Γιψζζα Πξνδηαγξαθήο Ιζρπξηζκψλ Αζθάιεηαο ‐ SAML ........................ 71

3.5

Δπεθηάζηκε Γιώζζα Διέγρνπ Πξόζβαζεο ‐ XACML .............................. 75

3.5.1 3.6

Παξάδεηγκα Xξήζεο ηεο XACML ......................................................... 77 Γηαρείξηζε Πιεξνθνξίαο Μέζσ ηεο Γιψζζαο Γηθαησκάησλ XrML .......... 79

Δπίινγνο ........................................................................................................... 81 Κεθάιαην 4ν: Η Γιψζζα Δθηέιεζεο Δπηρεηξεζηαθήο Γηαδηθαζίαο - BPEL ............ 82

΢ει. 8 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Δηζαγσγή .......................................................................................................... 82 4.1

Ο ΢θνπφο θαη ηα Θεηηθά ΢ηνηρεία ηεο Γιψζζαο BPEL. ............................ 83

4.2

Η Γνκή ηεο BPEL .................................................................................... 85

4.3

Οη Σερληθέο Αλάπηπμεο Δπηρεηξεκαηηθψλ Γηαδηθαζηψλ κε BPEL. ............ 89

4.4

Απιέο θαη Γνκεκέλεο Γξαζηεξηφηεηεο ηεο BPEL .................................... 90

4.5

Ο Σξφπνο Λεηηνπξγίαο ηεο BPEL ............................................................ 94

4.6

Παξάδεηγκα Υξήζεο κηαο Δπηρεηξεκαηηθήο Γηαδηθαζίαο BPEL................ 95

Δπίινγνο ......................................................................................................... 103 Κεθάιαην 5ν: WS-Security θαη BPEL .................................................................. 104 Δηζαγσγή: H Αξρηηεθηνληθή ηνπ Μνληέινπ Αζθάιεηαο ησλ Τπεξεζηψλ Ιζηνχ. 104 5.1

Ο ΢θνπφο ηνπ Μνληέινπ WS-Security.................................................. 105

5.1.1

Οη Μεραληζκνί Αζθάιεηαο ησλ Μελπκάησλ SOAP ............................ 107

5.1.2

Binary Security Tokens ...................................................................... 112

5.1.3

SAML Token Profile ........................................................................... 115

5.1.4

XrML Security Token Profile 1.1 ........................................................ 118

5.2

WS-Policy Framework ........................................................................... 120

5.2.1

WS-Policy Language ......................................................................... 121

5.2.2

WS-Policy Assertions ......................................................................... 123

5.2.3

WS-Attachments ................................................................................ 125

5.2.4

WS Security Policy ............................................................................. 126

5.3

WS-Trust ............................................................................................... 129

΢ει. 9 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.4

WS-Privacy ........................................................................................... 133

5.5

WS-Secure Conversation ...................................................................... 133

5.6

WS-Federation ...................................................................................... 136

5.7

WS-Authorization .................................................................................. 140

Δπίινγνο ......................................................................................................... 140 Κεθάιαην 6o : Πεξίπησζε Υξήζεο BPEL κε WS-Security .................................. 142 Δηζαγσγή ........................................................................................................ 142 6.1

Δξγαιεία Αλάπηπμεο Πεξίπησζεο Υξήζεο ........................................... 142

6.1.1

Eclipse ............................................................................................... 142

6.1.2

Eclipse BPEL Designer ...................................................................... 143

6.1.3

Java ................................................................................................... 150

6.1.4

Apache Tomcat v7.0 .......................................................................... 151

6.1.5

Apache Axis2 θαη Apache Rampart Module ....................................... 151

6.2

Πεξηγξαθή Πεξίπησζεο Υξήζεο ........................................................... 153

6.3

Αλάιπζε Κψδηθα Πεξίπησζεο Υξήζεο ................................................. 154

6.3.1

Τπεξεζία Γηαρείξηζεο Παξαγγειηψλ – Τπεξεζία πιεξσκήο ............. 154

6.3.2

Δθαξκνγή XMLDSIG θαη XMLENC κεηαμχ ησλ δχν ππεξεζηψλ ....... 160

Δπίινγνο ......................................................................................................... 165 Κεθάιαην 7ν : ΢πκπεξάζκαηα θαη Δξεπλεηηθέο Πξνεθηάζεηο ............................ 166 7.1

΢πκπεξάζκαηα ...................................................................................... 166

7.2

Δξεπλεηηθέο Πξνεθηάζεηο ...................................................................... 169

Βηβιηνγξαθηθέο Αλαθνξέο .................................................................................. 171

΢ει. 10 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Βηβιηνγξαθία ...................................................................................................... 175 Βηβιηνγξαθία ΢ρεκάησλ ..................................................................................... 177 Παξάξηεκα: Αξρεία ΢ελαξίνπ Υξήζεο 5νπ Κεθαιαίνπ ........................................ 180 Αξρείν purchaseOrderArtifacts.wsdl ............................................................... 180 Αξρείν PurchaseOrder.bpel ............................................................................ 183 Αξρείν PaymentServiceArtifacts.wsdl ............................................................. 187 Aξρείν PaymentService.Bpel .......................................................................... 189 Αξρείν stricted.xml .......................................................................................... 191 Αξρείν WSSecuriy.java ................................................................................... 193

΢ει. 11 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Δπξεηήξην ΢ρεκάησλ

΢ρήκα 2.3.1 Δπίπεδα Αξρηηεθηνληθήο ππεξεζηψλ ηζηνχ [10] ................................ 24 ΢ρήκα 2.4.1 Ο δίαπινο ππεξεζηψλ ηζηνχ [9] ........................................................ 26 ΢ρήκα 2.5.1 Η δνκή ηνπ κελχκηανο SOAP [10] ................................................... 28 ΢ρήκα 2.5.2 Παξάδεηγκα SOAP κελχκαηνο. ........................................................ 29 ΢ρήκα 2.6.1 Η δνκή ελφο αξρείνπ WSDL. ............................................................ 31 ΢ρήκα 2.7.1 Δχξεζε θαη δέζκεπζε ππεξεζίαο. Κιήζε ππεξεζίαο [5] .................. 32 ΢ρήκα 2.9.1 Σα XML security frameworks ησλ ππεξεζηψλ ηζηνχ ......................... 36 ΢ρήκα 3.1.1 Βαζηθή δνκή ςεθηαθήο ππνγξαθήο [1] ............................................ 40 ΢ρήκα 3.1.2 Γνκή Enveloping Signature [2] ....................................................... 41 ΢ρήκα 3.1.3 Απεηθφληζε Enveloping Signature [2] .............................................. 42 ΢ρήκα 3.1.4 Γνκή Enveloped Signature [2]......................................................... 42 ΢ρήκα 3.1.5 Απεηθφληζε Enveloped Signature [2] ............................................... 43 ΢ρήκα 3.1.6 Γνκή Detached Signature [2] ........................................................... 43 ΢ρήκα 3.1.7 Γνκή Detached Signature [2] ........................................................... 44 ΢ρήκα 3.1.8 Παξάδεηγκα ςεθηαθήο ππνγξαθήο XML .......................................... 46 ΢ρήκα 3.1.9 Γνκή ζηνηρείνπ Manifest [2].............................................................. 47 ΢ρήκα 3.1.10 Γηαδηθαζία δεκηνπξγίαο ςεθηαθήο ππνγξαθήο............................... 50 ΢ρήκα 3.1.11 Γηαδηθαζία επηθχξσζεο ςεθηαθήο ππνγξαθήο .............................. 51 ΢ρήκα 3.1.12 Μήλπκα SOAP κε XML ππνγξαθή [3] ............................................ 53 ΢ρήκα 3.1.13 Σξνπνπνηεκέλν κήλπκα SOAP κε XML ππνγξαθή [3] .................. 54 ΢ρήκα 3.2.1 ΢πκκεηξηθή θξππηνγξάθεζε [2] ....................................................... 57 ΢ρήκα 3.2.2 Κξππηνγξάθεζε δεκνζίνπ θιεηδηνχ [2] ............................................ 58 ΢ρήκα 3.2.3 Βαζηθή δνκή ζρήκαηνο θξππηνγξάθεζεο XML [4]........................... 59 ΢ρήκα 3.2.4 Παξάδεηγκα ρξήζεο ζηνηρείνπ ReferenceList [2]. ............................. 61 ΢ρήκα 3.2.5 Παξάδεηγκα 1. Τπνγξαθή θξππηνγξαθεκέλνπ ζηνηρείνπ [2] ........... 64 ΢ρήκα 3.2.6 Κξππηνγξάθεζε ππνγξαθήο [2] ...................................................... 65 ΢ρήκα 3.3.1 Η ζέζε ηνπ XKMS πξνηχπνπ [5] ...................................................... 66 ΢ρήκα 3.3.2 Μελχκαηα πξσηνθφιινπ XKMS [2] .................................................. 68

΢ει. 12 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.3.3 Λεηηνπξγία Validate [2] ..................................................................... 69 ΢ρήκα 3.4.1 Η ζρέζε κεηαμχ ησλ κεραληζκψλ ηεο SAML [2] ............................... 72 ΢ρήκα 3.4.2 Single sign On [2] ............................................................................. 74 ΢ρήκα 3.4.3 Ιζρπξηζκφο πξφζβαζεο ζε έλα πφξν ............................................... 75 ΢ρήκα 3.5.1 Γηάγξακκα αξρηηεθηνληθήο XACML [5] ............................................. 79 ΢ρήκα 3.6.1 Η δνκή ηεο XrML θαη νη ζρέζεηο κεηαμχ ηνπο [2] ............................... 80 ΢ρήκα 4.1 Η BPEL ζηε ζηνίβα ησλ πξφηππσλ ησλ ππεξεζηψλ ηζηνχ [7]............. 84 ΢ρήκα 4.2.1 Πφξηεο επηθνηλσλίαο κεηαμχ δηαδηθαζίαο BPEL θαη WS [20]. ........... 85 ΢ρήκα 4.2.2Β Η δνκή ηεο BPEL [11] ..................................................................... 87 ΢ρήκα 4.2.2Α Η δνκή ηεο BPEL [11] ..................................................................... 88 ΢ρήκα 4.5.1 Αξρεία WSDL θαη ππεξεζίεο ηζηνχ ................................................... 94 ΢ρήκα 4.6.1 Αξρείν shippingLT.wsdl [11] ............................................................. 95 ΢ρήκα 4.6.2 Αξρείν shippingPT.wsdl [11] ............................................................ 96 ΢ρήκα 4.6.3Α Αξρείν WSDL γηα ηελ πεξηγξαθή ηεο παξαγγειίαο [11] ................. 97 ΢ρήκα 4.6.3Β Αξρείν WSDL γηα ηελ πεξηγξαθή ηεο παξαγγειίαο [11] ................. 98 ΢ρήκα 4.6.4Α Αξρείν επηρεηξεκαηηθήο δηαδηθαζίαο BPEL [11] ............................... 99 ΢ρήκα 4.6.4Β Αξρείν επηρεηξεκαηηθήο δηαδηθαζίαο BPEL [11] ............................. 100 ΢ρήκα 4.6.4Γ Αξρείν επηρεηξεκαηηθήο δηαδηθαζίαο BPEL [11] ............................. 102 ΢ρήκα 5.1 Αξρηηεθηνληθή κνληέινπ WS-Security [2] ........................................... 105 ΢ρήκα 5.1.1 Point to point δίαπινο επηθνηλσλίαο [2] ........................................... 107 ΢ρήκα 5.1.2 Γνκή κελχκαηνο SOAP .................................................................. 109 ΢ρήκα 5.1.3 Παξάδεηγκα ελφο Username Token [12]......................................... 111 ΢ρήκα 5.1.3.1 X.509 Certificate Token Profile [16] ............................................. 114 ΢ρήκα 5.1.3.2 Kerberos Token Profile [18]......................................................... 114 ΢ρήκα 5.1.4 Παξάδεηγκα SAML Security Token Profile [17] .............................. 117 ΢ρήκα 5.1.5 XrML Token θαη XMLDSIG [19] ...................................................... 118 ΢ρήκα 5.2.1.1 Παξάδεηγκα WS-Policy [14] ......................................................... 121 ΢ρήκα 5.2.1.2 Γνκή κηαο πνιηηηθήο αζθάιεηαο ................................................... 122 ΢ρήκα 5.2.2.1 Policy Assertion with Assertion Parameters [13] ......................... 123 ΢ρήκα 5.2.2.2 Transport Security Policy Assertion [13]...................................... 124 ΢ρήκα 5.2.3.1 Schema ηνπ ζηνηρείνπ PolicyAttachment [14].............................. 125

΢ει. 13 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 5.3.1 Σν κνληέιν αζθάιεηαο WS-Trust [2] ............................................... 129 ΢ρήκα 5.3.2 Η δνκή ηνπ ζηνηρείνπ <RequestSecurityToken> [15] ..................... 131 ΢ρήκα 5.3.2 Η δνκή ηνπ ζηνηρείνπ <RequestSecurityToken> [15] ..................... 132 ΢ρήκα 5.5.1 Γνκή ζηνηρείνπ SecurityContextToken [2] ...................................... 134 ΢ρήκα 5.6.1 WS-Federation κεηαμχ δηαθνξεηηθψλ trust domains [2] .................. 139 ΢ρήκα 6.1.1.1 Γεκηνπξγία λέαο ππεξεζίαο ηζηνχ κε ην eclipse. ......................... 143 ΢ρήκα 6.1.1.2 Γηάγξακκα ΒPMN κε ην BPMN tool ηνπ eclipse .......................... 144 ΢ρήκα 6.1.2.1 Γεκηνπξγία BPEL project. ........................................................... 145 ΢ρήκα 6.1.2.2 Πεξηβάιινλ ζρεδίαζεο BPEL δηαδηθαζίαο. .................................. 146 ΢ρήκα 6.1.2.3 Γεκηνπξγία Partner Link. ............................................................. 146 ΢ρήκα 6.1.2.4 Γηαρείξηζε κεηαβιεηψλ. ............................................................... 147 ΢ρήκα 6.1.2.5 Αξρείν πεξηγξαθήο .wsdl δηαδηθαζίαο BPEL. .............................. 147 ΢ρήκα 6.1.2.6 Γεκηνπξγία web service binding. ................................................. 148 ΢ρήκα 6.1.2.7 Γεκηνπξγία αξρείνπ deploy.xml. .................................................. 149 ΢ρήκα 6.1.2.8 Ο Web Services Explorer ηνπ Eclipse. ........................................ 150 ΢ρήκα 6.1.5 Απνζηνιή θαη παξαιαβή κελπκάησλ SOAP [21]. .......................... 151 ΢ρήκα 6.2.1 Πεξηγξαθή πεξίπησζεο ρξήζεο ..................................................... 153 ΢ρήκα 6.3.1 Τπεξεζία δηαρείξηζεο παξαγγειηψλ ............................................... 155 ΢ρήκα 6.3.2 Γξαζηεξηφηεηα assign- prepareShipping........................................ 156 ΢ρήκα 6.3.3 Τπεξεζία πιεξσκήο ...................................................................... 157 ΢ρήκα 6.3.5 Partner Links αξρείνπ PurchaseOrder.bpel .................................... 158 ΢ρήκα

6.3.5

H

ιίζηα

ησλ

ζπλεξγαδφκελσλ-ππεξεζηψλ-

αξρείν

PurchaseOrderArtifacts.wsdl .............................................................................. 159 ΢ρήκα 6.3.6 Δηζαγσγή ησλ αξρείσλ .wsdl ζην αξρείν PurchaseOrder.bpel ...... 159 ΢ρήκα 6.3.7 Λίζηα ησλ portTypes ηεο ππεξεζίαο δηαρείξηζεο παξαγγειηψλ. ..... 160 ΢ρήκα 6.3.2.1 Πνιηηηθή αζθάιεηαο ππεξεζία PaymentService [22] ................... 162 ΢ρήκα 6.3.2.2 Policy binding κε ην αξρείν PaymentService.wsdl....................... 163 ΢ρήκα 6.3.2.3 Ρπζκίζεηο γηα ην Rampart ζην αρξείν stricted.xml ....................... 163 ΢ρήκα 6.3.2.4 Μέζνδνο Java γηα ηελ ππνγξαθή ηνπ κελχκαηνο SOAP. ............ 164 ΢ρήκα 6.3.2.4 Μέζνδνο Java γηα ηελ θξππηνγξάθεζε ηνπ κελχκαηνο SOAP. .. 164 ΢ρήκα 7.1 Υξνληθφ δηάγξακκα ζχγθξηζεο πξνηχπσλ WS-Security-SSL [23] .... 167

΢ει. 14 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 7.2 Μέγεζνο κελπκάησλ SOAP κε ηελ εθαξκνγή WS-Security [23] ....... 168

Αξθηηθόιεμν Ξελόγισζζσλ Όξσλ

3DES: Triple Data Encryption Algorithm Modes of Operation ACL: Access Control Lists AES: Advanced Encryption Standard API: Application Programming Interface ASCII: American Standard Code for Information Interchange BPEL4WS: Business Process Execution Language for Web Services BPML: Business Process Modeling Language C14N: CanonicalizatioN CA: Certificate Authorities CBC: Cipher Block Chaining CORBA: Common Object Request Broker Architecture DCΟM: Distributed Common Object Model DoS Attack: Denial of Service Attack (Επίθεςη με άρνηςη υπηρεςίασ) DTD: Document Type Definitions FTP: File Transfer Protocol GUI: Graphical User Interface HTTP/S: Hyper Text Transfer Protocol / Secutiy IP: Identiy Provider IPSec: Internet Protocol Security JVM: Java Virtual Machine KDC: Kerberos Domain Controller LDAP:Lightweight Directory Access Protocol OASIS: Organization for the Advancement of Structured Information Standards OSI: Open Systems Interconnection PAP: Policy Administration Point PDP: Policy Decision Point PEP: Policy Enforcement Point PGP: Pretty Good Privacy PIP: Policy Information Point PKI: Public Key Infrastructure PMI: Permission Management Infrastructure PRP: Policy Retrieval Point RBAC: Role-Based Access Control RSA: Rivest, Shamir, Adleman (Σα επψλπκα ησλ δεκηνπξγψλ ηνπ αιγνξίζκνπ) SAML: Security Assertion Markup Language SAML: Security Assertion Markup Language SCT: Security Context Token

΢ει. 15 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

SGT: Service Granting Ticket SHA1: Secure Hash Algorithm SMTP/S: Simple Mail Transfer Protocol / Security SOA: Service Oriented Architecture SOAP: Simple Object Access Protocol SSL: Secure Socket Layer SSO: Sigle Sign On STS: Security Token Service TGT: Ticket Granting Ticket TLS: Transport Layer Security UDDI: Universal Description Discovery & Integration URI: Uniform Resource Identifier URL: Uniform Resource Locator W3C: World Wide Web Consortium WSFLWeb Services Flow Language WSS: Web Services Security XACML: eXtensible Access Control Language X-KISS: XML Key Information Services Specifications XKMS: XML Key Management Specifications X-KRSS: XML Key Registration Service Specification XML: Extensible Markup Language XMLDSIG: XML Digital Signatures XMLENC: XML Encryption XPATH: XML Path Language XrML: eXtensible Rights Markup Language XSLT: Extensible Style sheet Language Transformations

΢ει. 16 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Κεθάιαην 1ν : Δηζαγσγή

1.1

Δηζαγσγή

Η ξαγδαία αλάπηπμε ηνπ δηαδηθηχνπ ηα ηειεπηαία ρξφληα θαη ε ζπλερήο εμέιημε ησλ ππεξεζηψλ ηζηνχ, έρεη νδεγήζεη ζηελ αλάγθε ηεο χπαξμεο ελφο πξν��χπνπ πνπ λα κπνξεί λα δηαζπλδέεη θαη λα επηηξέπεη ηε δηαιεηηνπξγηθφηεηα κεηαμχ ηνπο. Η Γιψζζα Δθηέιεζεο Δπηρεηξεκαηηθψλ Γηαδηθαζηψλ - BPEL απνηειεί ηε ιχζε ζην πξφβιεκα απηφ. Δίλαη κηα γιψζζα αλεμάξηεηε απφ πιαηθφξκεο, αξρηηεθηνληθέο, ιεηηνπξγηθά ζπζηήκαηα θαη κπνξεί λα απνηειέζεη ην ζπλδεηήξην θξίθν κεηαμχ ππεξεζηψλ ηζηνχ. Έρεη ηελ ηθαλφηεηα λα ζπλδπάδεη ηηο δηάθνξεο ππεξεζίεο ηζηνχ κε ζθνπφ ηε δεκηνπξγία ελφο ζπζηήκαηνο ππεξεζηνζηξεθήο αξρηηεθηνληθήο (Service Oriented Architecture). Γηα λα ππνζηεξηρηεί ε αζθάιεηα ζηηο δηάθνξεο ππεξεζίεο ηζηνχ, έρεη δεκηνπξγεζεί κηα νηθνγέλεηα πξνηχπσλ πνπ είλαη ην WS-Security θαη νη επεθηάζεηο ηνπ. Σα πξφηππα απηά δεκηνπξγνχλ έλα αζθαιή end-to-end δίαπιν επηθνηλσλίαο γηα λα πξνζηαηέςνπλ ηα κελχκαηα αληαιιαγήο κεηαμχ ησλ ππεξεζηψλ ηζηνχ ζε επίπεδν εθαξκνγήο. Δπίζεο, θαζνξίδνπλ ηηο πνιηηηθέο αζθάιεηαο, ηελ απζεληηθνπνίεζε ησλ ρξεζηψλ θαη ηελ εμνπζηνδφηεζή ηνπο ζηηο δηάθνξεο νληφηεηεο θαη κπνξνχλ λα εγθαζηδξχζνπλ έλα αζθαιέο θαη έκπηζην πεξηβάιινλ γηα ηελ αληαιιαγή επαίζζεησλ πιεξνθνξηψλ. Σν ζπγθεθξηκέλν ζέκα επηιέρζεθε επεηδή ε αζθάιεηα ζην δηαδίθηπν θαη ζηηο ππεξεζίεο ηζηνχ είλαη έλα αληηθείκελν κε πνιχ βάζνο θαη πςειή ζεκαληηθφηεηα πνπ ζηνρεχεη ζηελ δηαθχιαμε επαίζζεησλ πιεξνθνξηψλ. Γηα ηελ εθπφλεζε ηεο εξγαζίαο ρξεζηκνπνηήζεθαλ ειιεληθέο αιιά θαη αγγιηθέο πεγέο φπσο εξεπλεηηθά άξζξα, πηπρηαθέο εξγαζίεο, δηδαθηνξηθέο δηαηξηβέο, ειεθηξνληθά βηβιία θαη δηάθνξα

άξζξα

απφ

ηζηνζειίδεο.

Η

εξγαζία

απεπζχλεηαη

πιεξνθνξηθήο αιιά θαη ζε ππεχζπλνπο αζθάιεηαο ππεξεζηψλ ηζηνχ.

΢ει. 17 από 195

ζε

θνηηεηέο


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Αληηθείκελν θαη ΢ηόρνη ηεο Πηπρηαθήο Δξγαζίαο

1.2

Η παξνχζα δηπισκαηηθή εξγαζία απνηειεί κία κειέηε ησλ πξνηχπσλ θαη ησλ ηερλνινγηψλ αζθάιεηαο θαη ηδηαίηεξα ηεο νηθνγέλεηαο πξνηχπσλ WS-Security θαη ησλ επεθηάζεψλ ηνπ πνπ κπνξνχλ λα ρξεζηκνπνηεζνχλ κε ηηο ππεξεζίεο ηζηνχ ζε επίπεδν εθαξκνγήο (application level - OSI). Κχξηνο ζθνπφο ηεο εξγαζίαο είλαη λα αλαδεηρζνχλ ηα πιενλεθηήκαηα ηεο γιψζζαο εθηειέζηκσλ επηρεηξεκαηηθψλ δηαδηθαζηψλ-BPEL, ησλ πξνηχπσλ WS-Security κε ηηο επεθηάζεηο ηνπ θαη ησλ εξγαιείσλ αζθάιεηαο XML. Αθφκε, ν ηξφπνο πνπ κπνξνχλ λα ζπλδπαζηνχλ ψζηε λα δεκηνπξγεζεί έλα πςειφ επίπεδν αζθάιεηαο ζε κία ππεξεζία ηζηνχ απνηειεί έλα επηπιένλ ζηφρν.

Οξγάλσζε Κεθαιαίσλ

1.3

Η δνκή ηεο πηπρηαθήο εξγαζίαο είλαη ε αθφινπζε: 

΢ην πξψην θεθάιαην πεξηγξάθεηαη ην αληηθείκελν ηεο πηπρηαθήο εξγαζίαο, νη ζηφρνη θαζψο θαη ε νξγάλσζε ησλ θεθαιαίσλ.

΢ην δεχηεξν θεθάιαην γίλεηαη αλαθνξά ζηηο ππεξεζίεο ηζηνχ, ηελ ππεξεζηνζηξεθήο αξρηηεθηνληθή θαη ησλ δνκηθψλ ζηνηρείσλ ηνπο.

΢ην ηξίην θεθάιαην παξνπζηάδνληαη ηα εξγαιεία αζθάιεηαο πνπ βαζίδνληαη ζηελ XML. Γχν απφ ηα πην ζεκαληηθά εξγαιεία είλαη νη ςεθηαθέο ππνγξαθέο θαη ε θξππηνγξάθεζε πνπ απνηεινχλ ηνπο δνκηθνχο ιίζνπο ηεο αζθάιεηαο ησλ ππεξεζηψλ ηζηνχ.

΢ην ηέηαξην θεθάιαην αλαθέξεηαη ε δνκή θαη ε ιεηηνπξγία ηεο γιψζζαο εθηέιεζεο επηρεηξεκαηηθψλ δηαδηθαζηψλ-BPEL.

΢ην πέκπην θεθάιαην πεξηγξάθεηαη ε νηθνγέλεηα πξνηχπσλ WS-Security

΢ει. 18 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θαζψο θαη ηνλ ηξφπν πνπ κπνξνχλ λα ρξεζηκνπνηεζνχλ γηα ηελ αζθάιεηα ησλ επηρεηξεκαηηθψλ δηαδηθαζηψλ BPEL. 

΢ην έθην θεθάιαην παξνπζηάδεηαη έλα ζελάξην ρξήζεο ηεο BPEL κε ηελ νηθνγέλεηα

πξνηχπσλ

WS-Security

θαζψο

θαη

ηα

εξγαιεία

πνπ

ρξεζηκνπνηήζεθαλ γηα ηε δεκηνπξγία ηνπ. 

΢ην έβδνκν θεθάιαην παξνπζηάδνληαη ηα ζπκπεξάζκαηα θαη νη εξεπλεηηθέο πξνεθηάζεηο ηεο ζπγθεθξηκέλεο πηπρηαθήο εξγαζίαο.

΢ει. 19 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Κεθάιαην 2ν: Τπεξεζίεο Ιζηνύ

2.1

Ση είλαη νη Τπεξεζίεο Ιζηνύ

Οη ππεξεζίεο ηζηνχ είλαη κηα ηερλνινγία πνπ επηηξέπεη ζηηο εθαξκνγέο λα επηθνηλσλνχλ

κεηαμχ

ηνπο

αλεμαξηήησο

πιαηθφξκαο

θαη

γιψζζαο

πξνγξακκαηηζκνχ. Μία ππεξεζία ηζηνχ είλαη κηα δηεπαθή ινγηζκηθνχ (software interface) πνπ πεξηγξάθεη κηα ζπιινγή απφ ιεηηνπξγίεο νη νπνίεο κπνξνχλ λα θιεζνχλ απφ ην δηαδίθηπν κέζσ κελπκάησλ XML. Γηα λα πεξηγξάςεη κία ιεηηνπξγία (operation) ρξεζηκνπνηεί πξφηππα βαζηζκέλα ζηελ γιψζζα XML θαζψο θαη γηα ηελ αληαιιαγή δεδνκέλσλ κε κία άιιε εθαξκνγή. Μηα νκάδα απφ ππεξεζίεο ηζηνχ νη νπνίεο αιιειεπηδξνχλ κεηαμχ ηνπο, θαζνξίδνπλ κηα εθαξκνγή ππεξεζίαο ηζηνχ (IBM, 2007). Μπνξνχλ λα εζσθιείνπλ κία επηρεηξεκαηηθή εξγαζία φπσο κηα ειεθηξνληθή ζπλαιιαγή ρξεκάησλ. Έρνπλ ηελ δπλαηφηεηα λα εμππεξεηήζνπλ

κία

νινθιεξσκέλε

επηρεηξεκαηηθή

δηαδηθαζία

φπσο

έλα

απηνκαηνπνηεκέλν ζχζηεκα πιεξσκψλ ησλ πξνκεζεηψλ ελφο νξγαληζκνχ. Μία ππεξεζία ηζηνχ κπνξεί λα είλαη κηα εθαξκνγή πνπ εμππεξεηεί ηνπο πειάηεο κηαο αζθαιηζηηθήο εηαηξίαο ή λα ζπιιέγεη πιεξνθνξίεο απφ κεηεσξνινγηθνχο ππνζηαζκνχο θαη λα δίλεη ηε δπλαηφηεηα δηαρείξηζεο ησλ δεδνκέλσλ. Οπφηε νη ππεξεζίεο ηζηνχ κπνξνχλ λα έρνπλ δηάθνξεο εθαξκνγέο αλαπαξηζηψληαο απιέο εξγαζίεο αιιά θαη νινθιεξσκέλεο επηρεηξεκαηηθέο δηαδηθαζίεο. Δπηπξφζζεηα,

δίλνπλ

ηελ

δπλαηφηεηα

ζηνπο

πξνγξακκαηηζηέο

λα

δεκηνπξγήζνπλ θαηαλεκεκέλεο εθαξκνγέο πνπ κπνξνχλ λα είλαη πξνζβάζηκεο κέζσ

ηνπ

δηαδηθηχνπ

ή

κέζσ

ελδναηηεξηθψλ

δηθηχσλ,

ρξεζηκνπνηψληαο

ππάξρνπζεο ηερλνινγίεο. Η επειημία θαη ε επθνιία δηακφξθσζήο ηνπο αλάινγα κε ην ζελάξην ρξήζεο θαη ε ραιαξή ζχδεπμε πνπ ρξεζηκνπνηνχλ, ηηο θαζηζηά θαηαιιειφηεξεο γηα ηελ δεκηνπξγία επηρεηξεκαηηθψλ εθαξκνγψλ ζε ζρέζε κε ηηο ππάξρνπζεο δηαδηθηπαθέο εθαξκνγέο.

΢ει. 20 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Οη ηζηνζειίδεο πνπ παξέρνπλ πξφζβαζε ζε εθαξκνγέο κέζσ ηνπ δηαδηθηχνπ γηα έλαλ νξγαληζκφ δηαθέξνπλ ζεκαληηθά απφ ηηο ππεξεζίεο ηζηνχ. Μία ππεξεζία

ζηνρεχεη

ζηε

δεκηνπξγία

ινγηζκηθνχ

πνπ

αλαπαξηζηά

κηα

απηνκαηνπνηεκέλε εθαξκνγή. Οη ππεξεζίεο ηζηνχ κπνξνχλ λα δξνπλ σο πεγέο γηα άιιεο εθαξκνγέο πνπ έρνπλ ηελ δπλαηφηεηα λα θαινχλ ή λα ρεηξίδνληαη απηέο ηηο ππεξεζίεο, είηε απηφλνκα είηε κέζσ δηαρείξηζήο ηνπο απφ ρξήζηεο. Απηφ δειαδή ζεκαίλεη φηη νη ππεξεζίεο ηζηνχ κπνξνχλ λα αιιειεπηδξνχλ κεηαμχ ηνπο γηα λα εθηειέζνπλ δηάθνξεο ιεηηνπξγίεο. Σν ραξαθηεξηζηηθφ απηφ ηνπο δίλεη απηφκαηα κεγάιε επειημία θαη επθνιία ελζσκάησζεο ζε ινγηζκηθφ. Δίλαη έλα ραξαθηεξηζηηθφ πνπ δελ ην ππνζηεξίδνπλ νη δηαδηθηπαθέο εθαξκνγέο. Δπίζεο νη ππεξεζίεο ηζηνχ είλαη απηφλνκεο θαη πεξηέρνπλ ηελ πεξηγξαθή ηεο ιεηηνπξγίαο ηνπο ζην εζσηεξηθφ ηνπο. Έρνπλ ελζσκαησκέλε ηε ινγηθή ηνπο θαη “γλσξίδνπλ” πνηεο ιεηηνπξγίεο κπνξνχλ λα εθηειέζνπλ θαη πνηα δεδνκέλα κπνξνχλ λα δερηνχλ γηα λα εμάγνπλ ηηο θαηάιιειεο πιεξνθνξίεο. Η ηδηαίηεξε δνκή ηνπο κπνξεί λα ηνπο δψζεη ηελ δπλαηφηεηα λα πεξηγξάθνπλ κε ιεηηνπξγηθέο ηδηφηεηεο πνπ πεξηέρνπλ, φπσο ηελ γεσγξαθηθή πεξηνρή πνπ θαιχπηεη ή ηα ηεθκήξηα αζθάιεηαο πνπ απαηηεί γηα λα δηαηεξήζεη έλα πςειφ επίπεδν αζθάιεηαο (Papazoglou, 2008). Οη ππεξεζίεο ηζηνχ ζε ζρέζε κε ηηο δηαδηθηπαθέο εθαξκνγέο είλαη πην θνληά ζηελ αλζξψπηλε ινγηθή εθηέιεζεο ιεηηνπξγηψλ θαη δηαρεηξίδνληαη πην εχθνια. Η θαηάζηαζε κηαο ππεξεζίαο παξαθνινπζείηαη θαη δηαρεηξίδεηαη νπνηαδήπνηε ζηηγκή κέζσ εμσηεξηθψλ εθαξκνγψλ δηαρείξηζεο θαη ζπζηεκάησλ ξνψλ εξγαζηψλ (workflow systems). Αλ πνιιέο ππεξεζίεο ηζηνχ εθηεινχλ ηελ ίδηα εξγαζία θαη πνιιέο εθαξκνγέο αηηνχληαη ηελ εξγαζία απηή, ηφηε νη εθαξκνγέο αληαγσλίδνληαη κεηαμχ ηνπο γηα ην πνηα ζα κπνξέζεη λα ρξεζηκνπνηήζεη ηελ ππεξεζία απφ ηνλ δηαθνκηζηή (server). Η ινγηθή απηή ηνπ αληαγσληζκνχ γηα ηνλ server πνπ εμαξηάηαη απφ παξάγνληεο φπσο ν ξπζκφο κεηάδνζεο δεδνκέλσλ θαη ην επίπεδν αζθάιεηαο θάζε εθαξκνγήο, είλαη έλα ραξαθηεξηζηηθφ πνπ δελ ππνζηεξίδνπλ νη δηαδηθηπαθέο εθαξκνγέο (Papazoglou, 2008).

΢ει. 21 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

2.2

Σα Πιενλεθηήκαηα θαη ηα Μεηνλεθηήκαηα ησλ Τπεξεζηώλ Ιζηνύ.

΢πγθεληξσηηθά ηα πιενλεθηήκαηα ησλ ππεξεζηψλ ηζηνχ είλαη: 

Γηαιεηηνπξγηθφηεηα: Η ραιαξή ζχδεπμή ηνπο νδεγεί ζηελ αλάπηπμε επέιηθηνπ ινγηζκηθνχ ζηα θαηαλεκεκέλα πιεξνθνξηαθά πεξηβάιινληα.

Δλζσκάησζε:

Δπηηξέπνπλ

ηελ

εχθνιε

θαη

γξήγνξε

ελζσκάησζε

κεηψλνληαο ζεκαληηθά ην θφζηνο αλάπηπμεο ινγηζκηθνχ. 

Δπεθηαζηκφηεηα: Έρνπλ ηελ δπλαηφηεηα εθζπγρξνληζκνχ πιεξνθνξηαθψλ ζπζηεκάησλ πνπ έρνπλ δεκηνπξγεζεί κε παιαηέο ηερλνινγίεο.

Δπαλαρξεζηκνπνίεζε:

Μπνξνχλ

λα

επαλαρξεζηκνπνηεζνχλ

θαη

λα

βειηηζηνπνηεζνχλ κε επθνιία ελζσκαηψλνληαο λέα ραξαθηεξηζηηθά. 

Πεξηέρνπλ ηελ πεξηγξαθή ζην εζσηεξηθφ ηνπο νπφηε είλαη εχθνιν λα ρξεζηκνπνηεζνχλ απφ πιεξνθνξηαθά ζπζηήκαηα θαη λα ηα αλαβαζκίζνπλ.

Οη ππεξεζίεο ηζηνχ ρξεζηκνπνηνχλ ππάξρνληα πξφηππα γηα ηελ αλάπηπμή ηνπο.

Απινπνηνχλ ηελ ελζσκάησζε ζπζηεκάησλ κεηαμχ εηαηξηψλ (Business to Business Integration) .

Δηζάγνπλ λέα δεδνκέλα ζηελ δεκηνπξγία εηαηξηθψλ κνληέισλ.

Μπνξνχλ λα ζπγθεληξψζνπλ κε ρακειφ θφζηνο ηηο επηρεηξεκαηηθέο δηαδηθαζίεο ζε έλα θνηλφ ζεκείν πξφζβαζεο. Σα κεηνλεθηήκαηα ησλ ππεξεζηψλ ηζηνχ είλαη:

Βξίζθνληαη αθφκε ζε κεηαβαηηθφ ζηάδην θαη δελ έρνπλ σξηκάζεη. Απηφ ηηο θαζηζηά επάισηεο ζε νξηζκέλεο πεξηπηψζεηο. Χζηφζν ε ξαγδαία θαη ζπλερή αλάπηπμε ηνπο ζα εμαιείςεη ζχληνκα απηφ ην κεηνλέθηεκα.

΢ει. 22 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Μεξηθέο πξνζεγγίζεηο ππεξεζηψλ ηζηνχ δελ αθνινπζνχλ ηελ θηινζνθία ηεο ραιαξήο ζχδεπμεο θαη απεπζχλνληαη ζε ζπγθεθξηκέλεο εθαξκνγέο.

Υξεζηκνπνηνχλ κεγάιε πνζφηεηα δεδνκέλσλ ζηελ αληαιιαγή κελπκάησλ. Σα κελχκαηα απνηεινχληαη απφ κπινθ XML θαη κεηαδίδνληαη ζε απηή ηε κνξθή. Γε ρξεζηκνπνηείηαη ε δπαδηθή κέζνδνο πνπ είλαη αξθεηά πην γξήγνξε.

2.3 Η Αξρηηεθηνληθή ησλ Τπεξεζηώλ Ιζηνύ

Η αξρηηεθηνληθή ησλ ππεξεζηψλ κπνξεί λα πεξηγξαθεί κε δχν δηαθνξεηηθέο πξνζεγγίζεηο. Η πξψηε αλαθέξεηαη ζηνπο ξφινπο πνπ κπνξεί λα έρεη κία ππεξεζία ηζηνχ θαη ε δεχηεξε ζηα πξφηππα πνπ ρξεζηκνπνηεί. Οη βαζηθνί ξφινη πνπ ππάξρνπλ ζηελ αξρηηεθηνληθή ησλ ππεξεζηψλ είλαη ηξείο θαη είλαη νη εμήο: 

Service provider: Ο πάξνρνο κηαο ππεξεζίαο εθαξκφδεη κία δηεξγαζία θαη ηελ θαζηζηά δηαζέζηκε ζην δηαδίθηπν.

Service requestor: Ο αηηψλ κίαο ππεξεζίαο ζηελ νπζία είλαη έλαο client ή κία ππεξεζία πνπ ρξεζηκνπνηεί κία άιιε ζηέιλνληάο ηεο έλα αίηεκα.

Service registry: Μία ππεξεζία κεηξψνπ είλαη έλαο θνηλφο θεληξηθφο ρψξνο πνπ πεξηέρεη κία ιίζηα απφ ππεξεζίεο ηζηνχ πνπ έρνπλ δεκηνπξγήζεη εηαηξίεο ή νξγαληζκνί. ΢ηε ιίζηα απηή νη πξνγξακκαηηζηέο κπνξνχλ λα πξνζζέζνπλ λέεο ππεξεζίεο ηζηνχ ή λα ρξεζηκνπνηήζνπλ ηηο ππάξρνπζεο.

΢πζρεηίδνληαο ηνπο ξφινπο κεηαμχ ηνπο ζπκπεξαίλεηαη φηη ν ξφινο ηνπ service requestor βξίζθεηαη ελδηάκεζα ζηνπο άιινπο δχν έρνληαο ηελ ηθαλφηεηα λα αηηείηαη δεδνκέλα θαη πιεξνθνξίεο απφ έλα service provider, αιιά θαη λα θαιεί κία ππεξεζία απφ έλα registry service. Η αξρηηεθηνληθή ησλ ππεξεζηψλ ηζηνχ ρξεζηκνπνηεί δηάθνξα πξφηππα πνπ

΢ει. 23 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

είλαη θαηεγνξηνπνηεκέλα ζε ηέζζεξα επίπεδα: 

Δπίπεδν κεηαθνξάο (Transport layer): Σν επίπεδν απηφ είλαη ππεχζπλν γηα ηε κεηαθνξάο ησλ κελπκάησλ κεηαμχ ησλ ππεξεζηψλ. Σα πξσηφθνιια πνπ ρξεζηκνπνηνχληαη είλαη ην HTTP, ην SMPT θαη ην FTP.

Δπίπεδν επίθιεζεο (Invocation layer): Σν επίπεδν απηφ είλαη ππεχζπλν γηα ηελ ζχληαμε ησλ κελπκάησλ ηεο ππεξεζίαο ρξεζηκνπνηψληαο ην θνηλφ πξφηππν ηεο XML. Η θάςνπια κεηαθνξάο ησλ κελπκάησλ φκσο θαη ε δνκηθή κνλάδα ησλ ππεξεζηψλ ηζηνχ είλαη ην Simple Object Access Protocol–SOAP.

΢ρήκα 2.3.1 Δπίπεδα Αξρηηεθηνληθήο ππεξεζηώλ ηζηνύ [10]

Δπίπεδν πεξηγξαθήο (Description layer): ΢ην επίπεδν απηφ πεξηγξάθεηαη ε ιεηηνπξγία πνπ εθαξκφδεη κία ππεξεζία ηζηνχ κέζσ ηεο πεξηγξαθηθήο γιψζζαο ππεξεζηψλ ηζηνχ – WSDL.

Δπίπεδν δηαδηθαζίαο (Process layer): ΢ην επίπεδν απηφ βξίζθνληαη πεξηζζφηεξεο απφ κία ππεξεζίεο ηζηνχ. Μία απφ απηέο είλαη ε “αλαθάιπςε” (discovery) κηαο ππεξεζίαο πνπ γίλεηαη κέζσ ηνπ πξνηχπνπ UDDI (Universal Description Discovery Integration).

΢ει. 24 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

2.4 Τπεξεζηνζηξεθήο Αξρηηεθηνληθή –SOA (Service Oriented Architecture)

Η ππεξεζηνζηξεθήο αξρηηεθηνληθή είλαη έλα είδνο αξρηηεθηνληθήο πνπ έρεη σο ζηφρν ηελ δεκηνπξγία ινγηζκηθνχ κέζσ ππεξεζηψλ πνπ είλαη δηαζέζηκεο ζε θάπνην δίθηπν φπσο ην web (Sanjiva et al., 2005). Η βαζηθή θηινζνθία απηήο ηεο αξρηηεθηνληθήο είλαη ε ραιαξή ζχδεπμε κεηαμχ ησλ ηκεκάησλ ινγηζκηθνχ έηζη ψζηε λα κπνξνχλ λα επαλαρξεζηκνπνηεζνχλ. Οη εθαξκνγέο πνπ ρξεζηκνπνηνχληαη ζηελ αξρηηεθηνληθή έρνπλ δεκηνπξγεζεί ζχκθσλα κε ηα πξφηππα κηαο ππεξεζίαο ηζηνχ. Η SOA πηνζεηεί ην πξνηέξεκα ηεο επαλαρξεζηκνπνίεζεο κηαο ππεξεζίαο ηζηνχ πνπ κπνξεί λα δεκηνπξγεζεί απφ κηα ππάξρνπζα ππνδνκή ελφο πιεξνθνξηαθνχ ζπζηήκαηνο. Δπηηξέπεη δειαδή ζηηο επηρεηξήζεηο θαη ηνπο νξγαληζκνχο λα επαλαρξεζηκνπνηήζνπλ ππάξρνπζεο εθαξκνγέο δηαθνξεηηθψλ ηερλνινγηψλ θαη εηεξνγελψλ εθαξκνγψλ. Γηα λα επηηεπρζεί απηφ αξρηθά είλαη ζεκαληηθφ λα παξέρεηαη έλαο αθεξεκέλνο (abstract) πξνζδηνξηζκφο ηεο ππεξεζίαο ηζηνχ, πεξηέρνληαο ηηο απαξαίηεηεο ιεπηνκέξεηεο ψζηε νπνηαδήπνηε ππεξεζία ή client ζειήζεη λα ηε ρξεζηκνπνηήζεη θαη λα ηελ δεζκεχζεη (bind), λα κπνξεί λα ην πξάμεη κε ηνλ θαηαιιειφηεξν ηξφπν. H ιεηηνπξγία απηή ππνζηεξίδεηαη απφ ηελ πξνδηαγξαθή WSDL. Ύζηεξα θάζε πάξνρνο κηαο ππεξεζίαο (service provider) πξέπεη λα δεκνζηεχζεη (publish) ηηο ιεπηνκέξεηεο ηεο έηζη ψζηε εθείλνη πνπ ζέινπλ λα ηηο ρξεζηκνπνηήζνπλ λα κπνξνχλ λα θαηαιάβνπλ αθξηβέζηεξα ηη θάλνπλ. Απηφ ζα έρεη σο απνηέιεζκα ηελ ιήςε ησλ απαξαίηεησλ πιεξνθνξηψλ γηα λα ζπλδέζνπλ θαη λα ρξεζηκνπνηήζνπλ ηελ ππεξεζία. Η πιεπξά πνπ αηηείηαη ηε ρξήζε κηαο ππεξεζίαο ηζηνχ (service requestors) ζα πξέπεη λα έρεη θάπνην ηξφπν λα βξεη (find) πνηεο ππεξεζίεο είλαη δηαζέζηκεο πνπ ηθαλνπνηνχλ ηηο αλάγθεο ηεο. Γηα λα γίλεη επνκέλσο νξζά ε δηαδηθαζία ηεο δεκνζίεπζεο, ηεο δέζκεπζεο θαη ηεο εχξεζεο κηαο ππεξεζίαο ηα πξφηππα ζα πξέπεη λα θαζνξηζηνχλ κε ηέηνην ηξφπν ψζηε λα εμππεξεηνχλ

ηελ παξαπάλσ δηαδηθαζία. Οη ππεξεζίεο ηζηνχ θαη ηα

πξφηππα πνπ ρξεζηκνπνηνχληαη απφ απηέο εθαξκφδνπλ ηελ SOA κε ηε βνήζεηα

΢ει. 25 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ηνπ δηαχινπ ππεξεζηψλ (Service Bus). Ο

δίαπινο

απηφο

κπνξεί

λα

απινπνηήζεη

ηελ

δηαδηθαζία

ηνπ

publish/find/bind. ΢ε απηφλ δειψλεηαη ην αξρείν WSDL πνπ πεξηγξάθεη ηηο ιεηηνπξγίεο κηαο εθαξκνγήο αιιά θαη ε ρξήζε ησλ πφξσλ, θαζψο θαη ε επεμεξγαζηηθή ηζρχ πνπ απαηηείηαη γηα ηελ θιήζε ηεο. Οπφηε φηαλ έλαο service

UDDI (Universal Description Discovery & Integration)

2. Κοινοποίηζη Υπηπεζίαρ ζε ένα Registry

3. Αναζήηηζη πιθανών πάποσων Υπηπεζίαρ

4. Λίζηα παπόσων Υπηπεζίαρ και Πεπιγπαθήρ

6. Αίηηζη Υπηπεζίαρ

Ππομηθεςηήρ Υπηπεζίαρ

Αιηών Υπηπεζίαρ

7. Παποσή Υπηπεζίαρ

1. Ανάπηςξη Υπηπεζίαρ Ιζηού

5. Ανάπηςξη Εθαπμογήρ & Σύνδεζη ζηην Υπηπεζία

΢ρήκα 2.4.1 Ο δίαπινο ππεξεζηώλ ηζηνύ [9]

requestor αλαδεηά κία ππεξεζία, πεξηγξάθεη ηα παξαπάλσ ραξαθηεξηζηηθά ψζηε ν δίαπινο ππεξεζίαο λα ηνπ βξεη ηελ θαηάιιειε (ζρήκα 2.4.1). Χζηφζν νιφθιεξε ε δηαδηθαζία είλαη πεξηζζφηεξν πνιχπινθε θαη δελ αλαιχεηαη κηαο θαη δελ ζπκπεξηιακβάλεηαη ζηνπο ζηφρνπο ηεο δηπισκαηηθήο εξγαζίαο.

΢ει. 26 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

2.5 Σν πξσηόθνιιν SOAP (Simple Object Access Protocol)

Σν πξσηφθνιιν SOAP είλαη βαζηζκέλν ζηελ XML θαη δεκηνπξγήζεθε γηα ηελ αληαιιαγή κελπκάησλ ζε θαηαλεκεκέλα πεξηβάιινληα φπσο είλαη θαη νη ππεξεζίεο ηζηνχ. Παξέρεη κία θνηλή κνξθή αλαπαξάζηαζεο κελπκάησλ γηα ηελ αληαιιαγή δεδνκέλσλ κεηαμχ δηαθνκηζηψλ θαη πειαηψλ (Client/Server). Γχν βαζηθνί ζηφρνη ηνπ ζρεδηαζκνχ ηνπ SOAP είλαη ε απιφηεηα θαη ε επεθηαζηκφηεηα. Σν SOAP πξνζπαζεί λα πεηχρεη απηνχο ηνπο ζηφρνπο παξαιείπνληαο, απφ ην πιαίζην κελπκάησλ, ραξαθηεξηζηηθά γλσξίζκαηα ηα νπνία ζπλήζσο ζπλαληνχληαη ζε θαηαλεκεκέλα ζπζηήκαηα. Μεξηθά απφ απηά ηα γλσξίζκαηα είλαη ε «αμηνπηζηία» (reliability), ε «αζθάιεηα» (security), ν «ζπζρεηηζκφο» (correlation), ε «δξνκνιφγεζε» (routing) θαη ηα «κνηίβα αληαιιαγήο κελπκάησλ» (Message Exchange Patterns - MPEs). Σν βαζηθφ ζηνηρείν ηνπ πξσηφθνιινπ είλαη ηα κελχκαηα SOAP. Η δνκή ηνπ κελχκαηνο απνηειείηαη απφ ην απαηηνχκελν ζηνηρείν <Envelope> πνχ είλαη θαη ην ζηνηρείν αλαγλψξηζεο ηνπ εγγξάθνπ XML σο κήλπκα SOA. Έλα πξναηξεηηθφ ζηνηρείν <Header> πεξηιακβάλεη βνεζεηηθέο πιεξνθνξίεο φπσο ζηνηρεία πνπ ην θαζηζηνχλ αζθαιέο κε ηε ρξήζε ηνπ WS-Security πξνηχπνπ. Σν απαηηνχκελν ζηνηρείν <Body> πεξηιακβάλεη ηελ θχξηα πιεξνθνξία ηνπ κελχκαηνο θαη ην πξναηξεηηθφ ζηνηρείν <Fault> ρξεζηκνπνηείηαη γηα λα παξέρεη πιεξνθνξίεο ζρεηηθά κε ηα ζθάικαηα πνπ πξνθιήζεθαλ θαηά ηελ επεμεξγαζία ελφο κελχκαηνο (ζρήκα 2.5.1). Σα ζεηηθά ηνπ πξσηφθνιινπ είλαη ηα εμήο: 

Δίλαη απιφ. Άξα ην θφζηνο θαη ε πνιππινθφηεηα πινπνίεζεο κεηψλνληαη αηζζεηά.

Σν SOAP είλαη αλεμάξηεην απφ πιαηθφξκα θαη γιψζζα πξνγξακκαηηζκνχ νπφηε κπνξεί λα ρξεζηκνπνηεζεί γηα επηθνηλσλία κεηαμχ εθαξκνγψλ πνπ έρνπλ δεκηνπξγεζεί γηα δηαθνξεηηθέο πιαηθφξκεο θαη ζε δηαθνξεηηθέο γιψζζεο πξνγξακκαηηζκνχ.

΢ει. 27 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 2.5.1 Η δνκή ηνπ κελύκηανο SOAP [10]

Δίλαη επέιηθην. Υξεζηκνπνηεί πξφηππα πξσηφθνιια φπσο ην HTTP θαη ην SMTP σο κέζα κεηαθνξάο, νπφηε κπνξεί λα ρξεζηκνπνηεζεί ζην δηαδίθηπν θαη λα δηαπεξλά ηχρε πξνζηαζίαο (firewalls) ρσξίο ζπκβηβαζκνχο ζηελ αζθάιεηα ηεο ππνδνκήο κηαο επηρείξεζεο. Απηφ απηνκάησο κεηψλεη ζε νξηζκέλεο πεξηπηψζεηο ην θφζηνο ππνδνκήο αθνχ νη πεξηζζφηεξεο επηρεηξήζεηο ζήκεξα έρνπλ θαη ηνλ εμνπιηζκφ θαη ηελ ηερλνγλσζία γηα ηε ρξήζε ηνπ δηαδηθηχνπ.

Δίλαη επεθηάζηκν. Αλ θαη δελ πξνζθέξεη ηφζεο πνιιέο ιεηηνπξγίεο φζν άιιεο ηερλνινγίεο φπσο ην CORBA θαη ην DCOM επηηξέπεη ζε άιια πξφηππα λα ην επεθηείλνπλ παξέρνληαο ππεξεζίεο πνπ ιείπνπλ απφ απηφ. Απηφ ην ραξαθηεξηζηηθφ απνδείρζεθε ίζσο ην ζεκαληηθφηεξν γηαηί επάλσ ηνπ βαζίδνληαη πνιιέο αλαπηπζζφκελεο ηερλνινγίεο ησλ web services πνπ ελζσκαηψλνπλ ηηο βαζηθέο αξρέο αζθάιεηαο φπσο «αμηνπηζηία» (reliability), «δξνκνιφγεζε» (routing) θαη «αζθάιεηα» (security) (Γεκεηξίνπ, 2007).

Σα αξλεηηθά ζηνηρεία ηνπ SOAP είλαη ηα εμήο: 

Δμαηηίαο ηεο επειημίαο ηεο XML, ην SOAP είλαη αξθεηά πην αξγφ ζε ζρέζε κε άιιεο middleware ηερλνινγίεο φπσο είλαη ε

CORBA. Χζηφζν ε

΢ει. 28 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θαζπζηέξεζε εμαξηάηαη απφ ην κέγεζνο ηνπ κελχκαηνο θαη φηαλ απνζηέιινληαη κελχκαηα κηθξνχ κήθνπο δελ απνηειεί πξφβιεκα. 

Σα κελχκαηα SOAP γηα λα παξαδψζνπλ ζην ζσζηφ ζεκείν έλα κήλπκα ρξεζηκνπνηνχλ

ην

πξσηφθνιιν

TCP/IP.

Απηφ

ζπλεπάγεηαη

ηνλ

πξνθαζνξηζκφ ησλ εκπιεθφκελσλ ξφισλ αηηνχληνο θαη απνθξηλφκελνπ (client/server). Η ιεηηνπξγηθφηεηα πνπ απαηηείηαη γηα θάζε παθέην νξίδεηαη κε out-of-message information ζηελ θεθαιίδα ηνπ κελχκαηνο. 

Η ρξήζε ηνπ HTTP νδεγεί ζε κε βέιηηζηεο ιχζεηο, αθνχ ζην επίπεδν εθαξκνγήο απαηηείηαη ε γλψζε γηα ην αλ ζα ρξεζηκνπνηεζεί POST-based binding ή ε κέζνδνο GET).

΢ρήκα 2.5.2 Παξάδεηγκα SOAP κελύκαηνο.

΢ει. 29 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

2.6 WSDL (Web Services Description Language)

Η πεξηγξαθηθή γιψζζα ππεξεζηψλ ηζηνχ (WSDL) δεκηνπξγήζεθε γηα λα πεξηγξάθεη ηε ιεηηνπξγία κηαο ππεξεζίαο ηζηνχ, ην ηξφπν επηθνηλσλίαο ηεο θαη ηελ ηνπνζεζία ηεο (Rosenberg et.al., 2004). Aλ έλαο πειάηεο ζέιεη λα ηελ ρξεζηκνπνηήζεη, ηφηε κέζσ ηνπ αξρείνπ WSDL ζα κπνξέζεη λα ιάβεη φιεο ηηο πιεξνθνξίεο πνπ ρξεηάδεηαη. Η πξνδηαγξαθή απηή είλαη πνιχ ζεκαληηθή θαζψο δηεπθνιχλεη ηε δηαδηθαζία επηθνηλσλίαο ησλ ππεξεζηψλ ηζηνχ κε ηνπο πειάηεο αιιά θαη κε άιιεο ππεξεζίεο ηζηνχ. Δίλαη βαζηζκέλε ζηελ XML θαη ε έθδνζε WSDL 1.1 πξνζηέζεθε ζηα πξφηππα ηεο W3C ηνλ Μάξηην ηνπ 2001 έρνληαο πνιινχο ππνζηεξηθηέο. Πξνηνχ δεκηνπξγεζεί ε πξνδηαγξαθή απηή ππήξραλ άιιεο γιψζζεο φπσο ε WIDL (Web Interface Definition Language) θαη ε SDL (Service Description Language) πνπ είρε δεκηνπξγήζεη ε Microsoft. Η WSDL δεκηνπξγεί ζηελ νπζία έλα ζρήκα (schema) γηα ηα αληηθείκελα XML/SOAP θαη ηα Interfaces. Μπνξεί λα παξνκνηαζηεί σο έλα εγρεηξίδην ρξήζεο γηα ηα αληηθείκελα απηά θαη πνιιά εξγαιεία δεκηνπξγίαο ππεξεζηψλ εηζάγνπλ ηα αξρεία WSDL ψζηε λα δεκηνπξγήζνπλ απηφκαηα ηα κελχκαηα SOAP. Οη ππεξεζίεο ηζηνχ πεξηγξάθνληαη απφ ηελ WSDL σο έλα ζχλνιν απφ endpoints πνπ είλαη νη πφξηεο (ports). Οη πφξηεο εθηεινχλ ζπγθεθξηκέλεο ιεηηνπξγίεο ζηα κελχκαηα. Η βαζηθή δνκή ελφο αξρείνπ WSDL απνηειείηαη απφ ηξεηο ηνκείο πνπ παξέρνπλ ιεηηνπξγίεο (Operations), δεζκεχζεηο (Bindings) θαη ππεξεζίεο (Services). Έλα θείκελν WSDL αξρίδεη κε έλα ζηνηρείν <definitions> πνπ θαζνξίδεη ην φλνκα ηεο ππεξεζίαο θαζψο θαη ηελ ππφινηπε νλνκαηνινγία (namespace) πνπ ρξεζηκνπνηείηαη ζην αξρείν. Σν ζηνηρείν <message> πεξηγξάθεη ηα κελχκαηα ηεο ακθίδξνκεο επηθνηλσλίαο. Σν πην ζεκαληηθφ ζηνηρείν ηνπ αξρείνπ είλαη ην <portType> πνπ πεξηγξάθεη πνηεο ιεηηνπξγίεο παξέρνληαη απφ ηελ ππεξεζία θαζψο θαη ηα κελχκαηα πνπ αληαιιάζζνληαη. Σν ζηνηρείν <binding> πεξηγξάθεη ηνλ ηξφπν κε ηνλ νπνίν κία ππεξεζία κπνξεί λα θιεζεί ζπκπεξηιακβάλνληαο ιεπηνκέξεηεο φπσο ην πξσηφθνιιν πνπ ρξεζηκνπνηείηαη. ΢ην ηέινο ηνπ αξρείνπ βξίζθεηαη ην ζηνηρείν <service> πνπ πξνζδηνξίδεη πνπ

΢ει. 30 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

βξίζθεηαη ε ππεξεζία (ζρήκα 2.6.1). Σν αξρείν WSDL κπνξεί λα δεκηνπξγήζεη πξνβιήκαηα αζθάιεηαο αθνχ πεξηέρεη ηελ πεξηγξαθή κηαο ππεξεζίαο. Σα εξγαιεία αλάπηπμεο ππεξεζηψλ ηνπνζεηνχλ ην αξρείν ζε έλα ζπγθεθξηκέλν κέξνο θαη ζηελ πεξίπησζε πνπ γίλεη γλσζηφ ηφηε ε ππεξεζία είλαη εθηεζεηκέλε ζε επηζέζεηο. Οπφηε ε πξφζβαζε ζην αξρείν απηφ ζα πξέπεη λα πξνζηαηεχεηαη κε ηε ρξήζε απζεληηθνπνίεζεο κέζσ SSL.

Έηζη

ν

server

ζα

έρεη

ηελ δπλαηφηεηα

λα

δηαρσξίδεη

ηνπο

κε

εμνπζηνδνηεκέλνπο ρξήζηεο θαη λα ηνπο απνξξίπηεη.

΢ρήκα 2.6.1 Η δνκή ελόο αξρείνπ WSDL.

2.7 UDDI (Universal Description, Discovery, and Integration)

Η πξνδηαγξαθή UDDI έρεη δεκηνπξγεζεί κε ζθνπφ λα εμππεξεηήζεη ηελ αλαθάιπςε (discovery) ησλ ππεξεζηψλ απφ ηνπο clients, αιιά θαη ηελ δεκνζίεπζε ηνπο απφ ηνπο πξνγξακκαηηζηέο. Δίλαη απνηέιεζκα νκαδηθήο πξνζπάζεηαο απφ

΢ει. 31 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ηηο εηαηξίεο Ariba, CommerceOne, Accenture, Microsoft, IBM θαη άιιεο. Έλα UDDI repository δηαρεηξίδεηαη πιεξνθνξίεο ζρεηηθά κε ηνπο ηχπνπο ησλ ππεξεζηψλ θαη ηνπο παξφρνπο ππεξεζηψλ. Δίλαη ππεχζπλε λα δηαηεξεί ηηο πιεξνθνξίεο πξνζβάζηκεο, κέζσ ελφο θαζνξηζκέλνπ πξσηφθνιινπ, ζηνπο δηάθνξνπο clients ππεξεζηψλ ηζηνχ. Απνηειεί κηα κνξθή κε ηελ νπνία κπνξνχλ θαηαρσξνχληαη νη ππεξεζίεο

ηζηνχ.

Κάζε

ππεξεζία

δηαθξίλεηαη

κέζσ

ελφο

κνλαδηθνχ

αλαγλσξηζηηθνχ πνπ νλνκάδεηαη tModel. Σν αλαγλσξηζηηθφ απηφ ηνπνζεηείηαη ζηελ πξνδηαγξαθή θαη θαζνξίδεη ηελ πεγή. Έλαο client κπνξεί αλαδεηήζεη κηα ζπγθεθξηκέλε ππεξεζία κέζα ζε έλα κεηξψν κέζσ ησλ ιεπθψλ ζειίδσλ ηνπ UDDI πνπ βξίζθνληαη νη βαζηθέο πιεξνθνξίεο θαη νη πιεξνθνξίεο επηθνηλσλίαο.

΢ρήκα 2.7.1 Δύξεζε θαη δέζκεπζε ππεξεζίαο. Κιήζε ππεξεζίαο [5]

΢ηηο θίηξηλεο ζειίδεο UDDI ηαμηλνκνχληαη νη εηαηξηθέο ππεξεζίεο ηζηνχ. Ο δηαρσξηζκφο απηφο, πνπ ζπκίδεη ηειεθσληθφ θαηάινγν, δηεπθνιχλεη ηελ αλαδήηεζε ησλ clients γηα ππεξεζίεο ζπγθεθξηκέλσλ απαηηήζεσλ. Οη πξάζηλεο ζειίδεο UDDI παξέρνπλ ηηο πιεξνθνξίεο δέζκεπζεο κηαο ππεξεζίαο θαη δίλνπλ πξφζβαζε ζηα αληίζηνηρα αξρεία WSDL. Έλα UDDI repository κπνξεί λα ρξεζηκνπνηεζεί γηα λα ζπγθεληξψλεη ηηο ππεξεζίεο ηζηνχ κηαο εηαηξίαο ε ελφο νκίινπ εηαηξηψλ, αιιά κπνξεί λα

΢ει. 32 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ρξεζηκνπνηεζεί θαη ζε έλα δηαδίθηπν πεξηέρνληαο δεκφζηεο ππεξεζίεο ηζηνχ. Δίλαη ίζσο ε πην ζεκαληηθή πξνδηαγξαθή γηα ηελ δηάδνζε ηεο ππεξεζηνζηξεθήο αξρηηεθηνληθήο θαζψο εμππεξεηεί ηηο ιεηηνπξγείο publish/find/bind. ΢ην ζρήκα 2.7.1 ε εηαηξία Α αλαδεηά κηα ππεξεζία ζην θαηάινγν ππεξεζηψλ UDDI. To UDDI αθνχ ειέγμεη ηηο απαηηήζεηο ηεο εηαηξίαο Α, εληνπίδεη ηελ θαηάιιειε ππεξεζία θαη ηεο θνηλνπνηεί ην αληίζηνηρν αξρείν WSDL. Η εηαηξία Α έρεη πιένλ ηελ πεξηγξαθή ηεο ππεξεζίαο θαη κπνξεί λα θαιέζεη ηελ ππεξεζία ηεο εηαηξίαο Β.

2.8 Απεηιέο Αζθάιεηαο Τπεξεζηώλ Ιζηνύ

Οη

απεηιέο

αζθάιεηαο

εμειίζζνληαη

καδί

κε

ηηο

θαηαλεκεκέλεο

αξρηηεθηνληθέο. Οη ππεξεζίεο ηζηνχ πηνζεηνχλ ηελ έλλνηα ηεο n-tier αξρηηεθηνληθήο κε ηα κέξε πνπ ηελ ζπλζέηνπλ λα ζπκκεηέρνπλ κε ζπιινγηθφ ηξφπν. Απνηεινχλ αθφκε κία ζρεηηθά λέα ηερλνινγία, σζηφζν ιφγσ ησλ πξνηχπσλ πνπ ρξεζηκνπνηνχλ θαη ησλ ππαξρνπζψλ ηξσηψλ ζεκείσλ ηνπο νη πηζαλέο επηζέζεηο αζθάιεηαο πνιιαπιαζηάδνληαη. Η κε ελδεδεηγκέλε ρξήζε ηεο XML κπνξεί λα απνηειέζεη ηξσηφ ζεκείν, κε ηνπο επηηηζέκελνπο λα έρνπλ ηελ δπλαηφηεηα αιιαγήο ή αθαίξεζεο νιφθιεξνπ κπινθ θψδηθα. Οη πην ζπλεζηζκέλεο απεηιέο αζθάιεηαο ζηηο ππεξεζίεο ηζηνχ είλαη νη εμήο:  Denial of Service (Άξλεζε Τπεξεζίαο): Οη ηζηνζειίδεο θαη νη δηαδηθηπαθέο εθαξκνγέο κπνξνχλ λα εληνπίζνπλ πην εχθνια ηηο επηζέζεηο άξλεζεο ππεξεζίαο ζε ζρέζε κε ηηο ππεξεζίεο ηζηνχ πνπ είλαη πην εηεξνγελήο. Μία ππεξεζία είλαη ζε ζέζε λα δηαρεηξηζηεί κε άλεζε ρίιηεο πεξίπνπ αηηήζεηο ζε δηάζηεκα πέληε δεπηεξνιέπησλ, φκσο κία ππεξεζία έγθξηζεο δαλείνπ ζα πξέπεη λα δέρεηαη θαη λα δηαρεηξίδεηαη κφλν πέληε αηηήζεηο αλά ψξα. ΢ηελ πεξίπησζε πνπ δερηεί δέθα αηηήζεηο ζε κία ψξα ζεσξείηαη επίζεζε άξλεζεο ππεξεζίαο θαη έλα firewall δελ κπνξεί λα ηελ αληηιεθζεί. Η ινγηθή ησλ επηζέζεσλ απηψλ ζα πξέπεη λα ελζσκαησζεί ζηελ ππεξεζία ψζηε ζπιιέγνληαο ηηο θαηάιιειεο πιεξνθνξίεο λα πξνζηαηεχνληαη απφ ηηο

΢ει. 33 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

επηζέζεηο απηνχ ηνπ ηχπνπ.  XML Based Attacks (Επιθέζεις βαζιζμένες ζηο πρόησπο XML): Σν πξφηππν XML είλαη κία απφ ηηο δνκηθέο κνλάδεο γηα ηηο ππεξεζίεο ηζηνχ θαη γηα απηφ ην ιφγν ππάξρεη κεγάιν πιήζνο επηζέζεσλ. o XML Data Injection (Τροποποίηζη δεδομένφν XML). ΢θνπφο απηήο ηεο επίζεζεο είλαη λα ηξνπνπνηήζεη ή λα παξαθάκςεη κπινθ θψδηθα. ΢ηελ πεξίπησζε πνπ ηα κπινθ απηά πεξηέρνπλ ζεκαληηθέο πιεξνθνξίεο φπσο ζπλζεκαηηθά ή απνηεινχλ θνκκάηηα ηεο αζθάιεηαο ηεο ππεξεζίαο, ηα απνηειέζκαηα κπνξεί λα είλαη θαηαζηξνθηθά. Η ζπγθεθξηκέλε επίζεζε κπνξεί λα γίλεη θαη ζε άιια πξφηππα φπσο ηελ Sql, XPath θαη ηελ XSLT. o XML Morphing (Μορθοποίηζη XML): H XML ρξεζηκνπνηεί ηνπο κεηαζρεκαηηζκνχο κπινθ γηα πνιινχο ιφγνπο σζηφζν έλαο επηηηζέκελνο κπνξεί δεκηνπξγήζεη ζεκαληηθφ πιήγκα ζε κία ππεξεζία ηζηνχ αιιάδνληαο θνκκάηη θψδηθα. o Recursive Payloads (Αλαδξνκηθέο ππεξθνξηψζεηο): Πνιιά ζηνηρεία XML πεξηέρνπλ εκθσιεπκέλα σο παηδηά ηνπο άιια γηα λα πεξηγξάςνπλ παξαδείγκαηνο ράξηλ κία παξαγγειία ελφο πξντφληνο. Έλαο θαθφβνπινο ρξήζηεο κπνξεί λα ελζσκαηψζεη έλα ππέξνγθν αξηζκφ

εκθσιεπκέλσλ

ζηνηρείσλ

γηα

ηνλ

XML

parser

κε

απνηέιεζκα ηελ ππεξθφξησζή ηνπ. o Schema Poisoning (“Γειεηεξίαζε” ΢ρήκαηνο): Σα ζρήκαηα XML παξέρνπλ κηα ζπγθεθξηκέλε αλαγλσξίζηκε κνξθή γηα ηνπο parsers ψζηε λα κεηαθξάζνπλ θαηάιιεια XML θείκελα. Ο επηηηζέκελεο κπνξεί λα δηαθνξνπνηήζεη ην schema πξνθαιψληαο άξλεζε ππεξεζίαο.  External Entity Attacks (Δπίζεζε Δμσηεξηθήο Οληφηεηαο): ΢ηελ XML είλαη ζχλεζεο

λα

αλαθέξνληαη

URI

(Uniform

Resource

΢ει. 34 από 195

Identifier)

πνπ


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

παξαπέκπνπλ ζε εμσηεξηθέο πεγέο πιεξνθνξηψλ. Ο επηηηζέκελνο κπνξεί λα αιιάμεη ηηο πιεξνθνξίεο πνπ ζα αλαθηεζνχλ κε θαθφβνπιν θψδηθα.  Cross Site Scripting Attacks (Δπηζέζεηο κε ρξήζε θψδηθα κεηαμχ δχν νληνηήησλ). Σα κελχκαηα SOAP θαη ε XML είλαη νη δχν πξνδηαγξαθέο πνπ ρξεζηκνπνηνχληαη απφ ηηο ππεξεζίεο γηα ηελ αληαιιαγή κελπκάησλ. Έλαο θαθφβνπινο ρξήζηεο κπνξεί λα επηηεζεί αληηθαζηζηψληαο ζηνηρεία CDATA κε θαθφβνπιν θψδηθα έρνληαο σο απνηέιεζκα ηελ δέζκεπζε ζεκαληηθψλ πφξσλ ηεο ππεξεζίαο ή απνθηψληαο κε εμνπζηνδνηεκέλε πξφζβαζε.  Replay Attacks (Δπαλαπνζηνιή κελπκάησλ) Η ζπγθεθξηκέλε επίζεζε είλαη παξφκνηα κε ηελ άξλεζε ππεξεζίαο. Ο επηηηζέκελεο ππνθιέπηεη ην κήλπκα πνπ έρεη ζηαιεί θαη ην μαλαζηέιλεη ζηελ ππεξεζία. Δίλαη εχθνιν λα εληνπηζηνχλ θαη λα αληηκεησπηζηνχλ απφ ηηο ππεξεζίεο ηζηνχ.  WSDL Scanning (“΢θαλάξηζκα” ηνπ αξρείνπ WSDL): Ο επηηηζέκελνο ζε απηή ηε κνξθή ηεο επίζεζεο αλ θαηαθέξεη λα αλαθηήζεη ην αξρείν WSDL πνπ ζπλνδεχεη ηελ ππεξεζία, ηφηε έρεη ζηα ρέξηα ηνπ πνιχ ζεκαληηθέο πιεξνθνξίεο. Ύζηεξα κπνξεί λα εμαπνιχζεη επηζέζεηο ζηα ζεκεία δέζκεπζεο ή ζε θάπνην άιιν ζεκείν ηεο θαζψο γλσξίδεη νιφθιεξε ηελ πεξηγξαθή ηεο (Lindstrom, 2004).

2.9 Αξρέο Αζθάιεηαο – Δξγαιεία Αζθάιεηαο ησλ Τπεξεζηώλ Ιζηνύ

Οη αξρέο αζθάιεηαο φπσο είλαη ε απζεληηθνπνίεζε (Authentication), ε εμνπζηνδφηεζε (Authorization), ε εκπηζηεπηηθφηεηα (Confidentiality), ε αμηνπηζηία (Integrity) θαη ε κε απνπνίεζε ηεο επζχλεο (Non-Repudiation) είλαη πνιχ ζεκαληηθέο θαη πξέπεη λα ππάξρνπλ ζε θάζε ππεξεζία ηζηνχ. Γηα λα δηαζθαιηζηεί ε απζεληηθνπνίεζε ζε κία ππεξεζία γίλεηαη δηπιή επηθχξσζε κε ζπλζεκαηηθά πνπ ρξεζηκνπνηνχλ απνζηνιέαο θαη παξαιήπηεο. ΢ηα κελχκαηα SOAP κπνξνχλ λα ελζσκαησζνχλ ςεθηαθά πηζηνπνηεηηθά Υ.509, Kerberos, LDAP (Lightweight

΢ει. 35 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Directory Access Protocol) θαζψο θαη έλαο Active Director ψζηε λα απνθιεηζζνχλ ε κε απζεληηθνπνηεκέλνη ρξήζηεο. Η εμνπζηνδφηεζε είλαη πνιχ ζεκαληηθή ζηηο ππεξεζίεο ηζηνχ θαζψο παξέρνπλ ζπλήζσο πνιιαπιά επίπεδα πξφζβαζεο. Δπηπξφζζεηα πξέπεη λα απζεληηθνπνηείηαη ν θάζε ρξήζηεο πξνζδηνξίδνληαο θαη ηα ζεκεία πξφζβαζεο πνπ ηνπ αληηζηνηρνχλ. Έλα πξφηππν πνπ κπνξεί λα ρξεζηκνπνηεζεί γηα ην ζθνπφ απηφ είλαη ε SAML (Security Assertion Markup Language) θαη ε XACML (eXtensible Access Control Language).

΢ρήκα 2.9.1 Σα XML security frameworks ησλ ππεξεζηώλ ηζηνύ

Η αζθαιήο θαη εχθνιε δηαρείξηζε ησλ θιεηδηψλ, κπνξεί λα γίλεη κε ηε ρξήζε ηνπ πξνηχπνπ XKMS πνπ ζπλδπάδεη ηηο ςεθηαθέο ππνγξαθέο θαη ηελ θξππηνγξάθεζε XML. Σν πξφηππν WS-Security έρεη δεκηνπξγεζεί εηδηθά γηα ηελ αζθάιεηα ησλ ππεξεζηψλ ηζηνχ παξέρνληαο κηα νηθνγέλεηα πξνηχπσλ γηα ηελ ζσξάθηζε ηνπο φπσο είλαη ην WS-Trust, WS-Security Policy, WS-Secure

΢ει. 36 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Conversation θαη WS-Federation. Πεξηζζφηεξεο πιεξνθνξίεο ζρεηηθά κε απηφ ην πξφηππν ζα αλαθεξζνχλ ζην ηέηαξην θεθάιαην.

Δπίινγνο ΢ην θεθάιαην απηφ πεξηγξάθεθαλ ηα βαζηθά δνκηθά ζηνηρεία ησλ ππεξεζηψλ ηζηνχ. Αλαθέξζεθαλ επίζεο νη πην ζπλεζηζκέλεο απεηιέο αζθάιεηάο ηνπο θαζψο θαη ηα πξφηππα πνπ ρξεζηκνπνηνχληαη γηα λα ηηο αληηκεησπίζνπλ. ΢ην επφκελν θεθάιαην ζα αλαιπζνχλ ηα εξγαιεία αζθάιεηαο πνπ είλαη βαζηζκέλα ζηελ XML φπσο νη ςεθηαθέο ππνγξαθέο θαη ε θξππηνγξάθεζε XML πνπ είλαη θαη ηα πην ζεκαληηθά.

΢ει. 37 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Κεθάιαην 3ν: Δξγαιεία Αζθάιεηαο XML Δηζαγσγή: Η ηερλνινγία XML

H XML απνηειεί έλα ππνζχλνιν ηεο Standard Genaralized Markup Language (SGML). Η SGML είλαη κηα κεηαγιψζζα, κία γιψζζα δειαδή πνπ ρξεζηκνπνηείηαη γηα ηελ επίζεκε πεξηγξαθή markup γισζζψλ. Η XML είλαη κηα δνκεκέλε γιψζζα, θάηη πνπ ζεκαίλεη φηη έλα έγγξαθν XML δελ πεξηέρεη κφλν δεδνκέλα αιιά θαζνξίδεη επίζεο ηηο δνκηθέο ζρέζεηο αλάκεζα ζηα δεδνκέλα απηά. Απηφ είλαη θαη ην ζεκαληηθφηεξν πξνηέξεκά ηεο XML, λα επηηξέπεη ηελ αλαπαξάζηαζε νπνηαζδήπνηε κνξθήο δεδνκέλσλ, εθφζνλ έρεη νξηζηεί ην δνκηθφ ηνπο ζρήκα. Οη πξνδηαγξαθέο ηεο δνκήο ελφο εγγξάθνπ XML κπνξνχλ λα επηηεπρζνχλ κε ηε βνήζεηα κνληέισλ. Δηδηθφηεξα κπνξεί λα ρξεζηκνπνηεζεί είηε κε ην κνληέιν Οξηζκνχ Σχπσλ Δγγξάθνπ (DTD) ή ΢ρήκαηα XML (XML Schemas), πνπ εμαζθαιίδνπλ φηη δχν ή πεξηζζφηεξα έγγξαθα έρνπλ ηελ ίδηα κνξθή. Σν DTD είλαη έλαο κεραληζκφο πνπ θιεξνλνκήζεθε απφ ηελ γιψζζα SGML θαη ρξεζηκνπνηείηαη γηα ηελ πεξηγξαθή θάζε αληηθεηκέλνπ ζε έλα έγγξαθν XML, φπσο είλαη ηα ζηνηρεία θαη ηα ραξαθηεξηζηηθά. Απνηειεί έλα ζχλνιν θαλφλσλ πνπ αθνξνχλ ηα tags (εηηθέηεο) ηεο γιψζζαο XML. Πην ζπγθεθξηκέλα νξίδεη θαλφλεο γηα ην πνηα είλαη ηα επηηξεπηά νλφκαηα ζηνηρείσλ θαη ηα επηηξεπηά ππνζηνηρεία (subelements) θαη ραξαθηεξηζηηθά (attributes) γηα θάζε ζπγθεθξηκέλν ζηνηρείν. Σα XML Schemas απνηεινχλ ζχζηαζε ηνπ νξγαληζκνχ W3C θαη νπζηαζηηθά είλαη έγγξαθα XML πνπ θαζνξίδνπλ πψο πξέπεη λα δνκνχληαη άιια έγγξαθα XML. Σν πιενλέθηεκά ηνπο ζε ζρέζε κε ηα DTDs (Document Type Definitions) είλαη φηη κπνξνχλ λα ππνζηνχλ ρεηξηζκνχο, παξαδείγκαηνο ράξε κπνξνχλ λα πξνζηεζνχλ ή λα δηαγξαθνχλ ζηνηρεία, φπσο ζε νπνηνδήπνηε άιιν έγγξαθν XML Σα XML Schemas εγγπψληαη φηη ν ζσζηφο ηχπνο δεδνκέλσλ απνζεθεχεηαη ζε θάζε ζηνηρείν, γηα παξάδεηγκα ην πεξηερφκελν ηνπ ζηνηρείνπ Date_of_birth ζα είλαη ηχπνπ date θαη φρη αθέξαηνο ή θάπνηα αθνινπζία ραξαθηήξσλ (string). Δπίζεο, επηηξέπνπλ ζηνλ ρξήζηε λα νξίζεη δηθνχο ηνπ ηχπνπο δεδνκέλσλ, επηπιένλ απηψλ πνπ ήδε ππάξρνπλ ζην ζχζηεκα ηχπσλ XML Schema Definition (XSD).

΢ει. 38 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Γηεπθνιχλνπλ ηε κεηάβαζε αλάκεζα ζηηο πιαηθφξκεο δηφηη ην ζχζηεκα ηχπσλ XML Schema Definition (XSD) είλαη αλεμάξηεην απφ πιαηθφξκεο, νπφηε δελ δεκηνπξγείηαη πξφβιεκα ζηελ επηθνηλσλία κεηαμχ δηαθνξεηηθψλ ηερλνινγηψλ. Η δπλαηφηεηα απηή ηεο πξνζδίδεη επειημία θαζψο ηα XML έγγξαθα κπνξνχλ λα θαηαλνεζνχλ εχθνια απφ ξνέο εξγαζηψλ αιιά θαη απφ ηνλ άλζξσπν (Καιηνληδφγινπ, 2006). ΢ηηο επφκελεο παξαγξάθνπο ζα δνχκε θάπνηα πξφηππα XML πνπ απνηεινχλ ηα “γξαλάδηα” ηνπ κεραληζκνχ WS-Security φπσο είλαη ή ςεθηαθέο ππνγξαθέο, ε θξππηνγξάθεζε, νη πξνδηαγξαθέο δηαρείξηζεο θιεηδηψλ (XKMS), ε γιψζζα πξνδηαγξαθήο ηζρπξηζκψλ αζθάιεηαο (SAML), ε επεθηάζηκε γιψζζα ειέγρνπ πξφζβαζεο (XACML) θαη ηε γιψζζα δηαρείξηζεο δηθαησκάησλ ησλ πιεξνθνξηψλ (XrML).

3.1 Φεθηαθέο Τπνγξαθέο XML

Οη ςεθηαθέο ππνγξαθέο XML απνηεινχλ ζεκαληηθφ κέξνο ηεο αζθάιεηαο ησλ

ππεξεζηψλ

εκπηζηεπηηθφηεηα

ηζηνχ κεηαμχ

(WS-Security). ηνπ

Υξεζηκνπνηνχληαη

απνζηνιέα

θαη

ηνπ

γηα

λα

παξαιήπηε

ππάξρεη θαη

λα

πξνζηαηεπζνχλ ηα δεδνκέλα ηνπο. Αθφκε ρξεζηκνπνηνχληαη γηα λα βεβαηψζνπλ ηελ ηαπηφηεηα ηνπ απνζηνιέα θαη ηε ζπκκεηνρή ηνπ ζε κηα ειεθηξνληθή ζπλαιιαγή εμαιείθνληαο ην δηθαίσκα λα απνπνηεζεί ηελ επζχλε. Η ππνγξαθή θαηά ηε κεηαθνξά ηεο ζε θάπνην δίθηπν πξέπεη λα κείλεη αλαιινίσηε. ΢ηελ πεξίπησζε πνπ έρεη ηξνπνπνηεζεί δελ πθίζηαηαη ε αθεξαηφηεηα ησλ δεδνκέλσλ θαη ε ηαπηφηεηα ηνπ απνζηνιέα. Η ςεθηαθή πιεξνθνξία πνπ ππνγξάθεηαη κπνξεί λα είλαη νπνηαζδήπνηε κνξθήο φπσο έλα κήλπκα ειεθηξνληθνχ ηαρπδξνκείνπ, έλα έγγξαθν πνπ πεξηέρεη ζηνηρεία κηαο ειεθηξνληθήο ζπλαιιαγήο, νιφθιεξν έγγξαθν XML ή κέξνο ηνπ, αθφκε θαη κηα απιή εηθφλα. Η δπλαηφηεηα απηή νθείιεηαη ζηε ζπζρέηηζε πνπ κπνξεί λα δεκηνπξγήζεη κία ςεθηαθή ππνγξαθή κε κία πιεξνθνξία κέζσ κηαο αλαθνξάο εληαίνπ αλαγλσξηζηηθνχ πεγήο URI ή κέζσ κηαο αλαθνξάο πνπ δείρλεη ζην κνλαδηθφ αλαγλσξηζηηθφ (IDREF) πνπ έρεη νξηζηεί ζε

΢ει. 39 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

έλα αληηθείκελν. Υξεζηκνπνηνχληαη πιένλ επξέσο ράξε ζην ζπλδπαζκφ ηεο δχλακεο θαη ηεο ιεηηνπξγηθφηεηαο ηεο ηερλνινγίαο ησλ ςεθηαθψλ ππνγξαθψλ κε ηελ επειημία ηεο XML (Rosenberg et al., 2004). H W3C κε ηελ νκάδα εξγαζίαο ησλ XML ππνγξαθψλ (XML Signature Working Group) ην 1999 δεκηνχξγεζε ηηο απαηηήζεηο κηαο ςεθηαθήο ππνγξαθήο XML (XML Signature Requirements) θαη ηνλ Ιαλνπάξην ηνπ 2000 θαζηέξσζε κία ζχζηαζε (W3C Recommendation - XML Signature Syntax and Processing) πνπ πεξηγξάθεη ηε δνκή θαη ηνπο θαλφλεο δηαρείξηζεο θαη επεμεξγαζίαο πνπ ζα ρξεζηκνπνηνχληαη ζηηο ππνγξαθέο ψζηε λα ππάξρεη έλα θνηλφ πξφηππν. Σν ζρήκα (Schema) κηαο ππνγξαθήο πεξηέρεη ηα απαηηνχκελα ζηνηρεία γηα ηελ νξζή δεκηνπξγία κηαο ππνγξαθήο, ηα πξνηεηλφκελα (Recommended) πνπ ζα ήηαλ θαιφ λα ζπκπεξηιακβάλνληαη ζε θάζε ππνγξαθή, αιιά θαη ηα πξναηξεηηθά ζηνηρεία(Optional).

΢ρήκα 3.1.1 Βαζηθή δνκή ςεθηαθήο ππνγξαθήο [1]

Σν ζηνηρείν <Signature> είλαη ην ζηνηρείν γνλέαο (Parent Element) ζε κηα ςεθηαθή ππνγξαθή θαη εκθσιεπκέλα κέζα ζε απηφ βξίζθνληαη ηα ππφινηπα. Σν ζηνηρείν <SignedInfo> πεξηέρεη φιεο ηηο πιεξνθνξίεο ζρεηηθά κε ην αληηθείκελν πνπ ππνγξάθεηαη. Η θσδηθνπνηεκέλε κνξθή ηεο ππνγξαθήο, βάζε θάπνηνπ αιγνξίζκνπ αλαθέξεηαη ζπλήζσο ζην ζηνηρείν <SignatureMethod>, βξίζθεηαη ζην ζηνηρείν <SignatureValue> . Ο ππνγξάθσλ κπνξεί λα ρξεζηκνπνηήζεη πξναηξεηηθά ην ζηνηρείν <KeyInfo> γηα λα δψζεη πιεξνθνξίεο ζρεηηθά κε ην θιεηδί πνπ ρξεζηκνπνηήζεθε γηα ηε θξππηνγξάθεζε θαζψο θαη ην ίδην κέζσ ελφο ςεθηαθνχ πηζηνπνηεηηθνχ. Σν ζχκβνιν ηνπ αγγιηθνχ εξσηεκαηηθνχ „?‟ πνπ βξίζθεηαη δίπια απφ ην ζηνηρείν πξνζδηνξίδεη φηη κπνξεί λα ρξεζηκνπνηεζεί θακία ή κία θνξά κέζα ζε κηα ππνγξαθή. Σν ζχκβνιν „+‟ πξνζδηνξίδεη φηη έλα ζηνηρείν κπνξεί λα εκθαληζηεί ηνπιάρηζηνλ κία ή πεξηζζφηεξεο θνξέο θαη ην ζχκβνιν „*‟ πξνζδηνξίδεη

΢ει. 40 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

φηη έλα ζηνηρείν κπνξεί λα εκθαληζηεί θακία ή πνιιέο θνξέο. Απηφο είλαη έλαο γξήγνξνο ηξφπνο παξνπζίαζεο ελφο ζρήκαηνο XML. Έλα αθφκε πξναηξεηηθφ ζηνηρείν πνπ κπνξεί λα ρξεζηκνπνηεζεί πνιιέο θνξέο ζην ζρήκα είλαη ην <Object> πνπ κπνξεί λα πεξηέρεη δηάθνξεο πιεξνθνξίεο θαη ζπλήζσο ην ίδην ην αληηθείκελν πνπ ζα ππνγξαθεί.

3.1.2 Καηεγνξίεο ςεθηαθώλ ππνγξαθώλ

Οη XML ςεθηαθέο ππνγξαθέο δηαθξίλνληαη ζε ηξεηο θαηεγνξίεο νη νπνίεο έρνπλ δεκηνπξγεζεί βάζε ηνπ ηξφπνπ πνπ ζπζρεηίδεηαη ε πιεξνθνξία πνπ ππνγξάθεηαη κε ηελ ππνγξαθή. Οη πεξηθιείνπζεο - enveloping signatures ηνπνζεηνχλ ην αληηθείκελν πνπ επξφθεηην λα ππνγξαθεί κέζα ζην ζηνηρείν <Object> ηεο ππνγξαθήο. Σν είδνο ηεο ππνγξαθήο απηήο ρξεζηκνπνηείηαη φηαλ ν ππνγξάθσλ ζέιεη λα ζπκπεξηιάβεη ην αξρηθφ θείκελν πνπ ππνγξάθεηαη κέζα ζηελ ππνγξαθή. Όηαλ ε κεραλή επεμεξγαζίαο XML θσδηθνπνηήζεη ηελ ππνγξαθή ζα ζπκπεξηιάβεη νιφθιεξν ην ζηνηρείν <Object>. Έλα απιφ παξάδεηγκα κηαο enveloping signature παξαηίζεηαη ζην ζρήκα 3.1.2.

΢ρήκα 3.1.2 Γνκή Enveloping Signature [2]

΢ει. 41 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.1.3 Απεηθόληζε Enveloping Signature [2]

Οη πεξηθιεηφκελεο-enveloped signatures ρξεζηκνπνηνχληαη φηαλ ην ζηνηρείν πνπ ζα ππνγξαθεί είλαη έλα XML θείκελν γνλέαο θαη έρεη απφγνλφ ηνπ ην ζηνηρείν <Signature>. H ζπζρέηηζε ηνπ θεηκέλνπ γνλέα κε ηελ ππνγξαθή γίλεηαη κε κηα αλαθνξά URI/IDREF κέζσ ηνπ ζηνηρείνπ <Reference>.

΢ρήκα 3.1.4 Γνκή Enveloped Signature [2]

΢ην παξαπάλσ παξάδεηγκα παξαηεξνχκε φηη ην ζηνηρείν <Reference> πεξηέρεη έλα IDREF πνπ είλαη ην κνλαδηθφ αλαγλσξηζηηθφ ηνπ γνληθνχ θεηκέλνπ ηεο πιεξσκήο ηεο παξαγγειίαο.

΢ει. 42 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.1.5 Απεηθόληζε Enveloped Signature [2]

Οη απνζπαζκέλεο - detached signatures ρξεζηκνπνηνχληαη φηαλ ην ζηνηρείν πνπ ζα ππνγξαθεί δελ βξίζθεηαη εληφο ηεο ππνγξαθήο αιιά είλαη έλα αλεμάξηεην XML θείκελν ή κηα πιεξνθνξία νπνηαζδήπνηε κνξθήο. Δπνκέλσο ε πιεξνθνξία απηή ζπζρεηίδεηαη κε ηελ ππνγξαθή κε κηα αλαθνξά URI/IDREF κέζσ ηνπ ζηνηρείνπ <Reference>.

΢ρήκα 3.1.6 Γνκή Detached Signature [2]

΢ην παξαπάλσ παξάδεηγκα παξαηεξνχκε φηη ην ζηνηρείν <Reference> πεξηέρεη έλα IDREF πνπ είλαη ην κνλαδηθφ αλαγλσξηζηηθφ ηνπ αλεμάξηεηνπ

΢ει. 43 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θεηκέλνπ ηεο πιεξσκήο ηεο παξαγγειίαο.

΢ρήκα 3.1.7 Γνκή Detached Signature [2]

3.1.3 Αλάιπζε Παξαδείγκαηνο κηαο Φεθηαθήο Τπνγξαθήο

Μηα ππνγξαθή ζπλήζσο πεξηέρεη πεξηζζφηεξα ζηνηρεία θαη πιεξνθνξίεο απφ ην βαζηθφ ζρήκα. ΢ηε ηειηθή κνξθή ηεο ππνγξαθήο ζπκπεξηιακβάλνληαη ζηνηρεία πνπ πεξηγξάθνπλ ηε κνξθή ηεο ηξνπνπνίεζεο ηνπ αξρηθνχ θεηκέλνπ, ηνλ αιγφξηζκν πνπ ρξεζηκνπνηήζεθε γηα ηε θξππηνγξάθεζε, ηνλ ηξφπν ηεο θαλνληθνπνίεζεο, ηελ ηηκή ηεο θξππηνγξαθεκέλεο ππνγξαθήο θαη πιεξνθνξίεο ζρεηηθέο κε ην θιεηδί θξππηνγξάθεζεο. Σν ζρήκα 3.1.7 παξνπζηάδεη κηα ςεθηαθή ππνγξαθή απφ κηα ειεθηξνληθή παξαγγειία ελφο ζθιεξνχ δίζθνπ. Η ςεθηαθή ππνγξαθή είλαη ηεο κνξθήο enveloped signature θαη ηα ζηνηρεία πνπ ζα ππνγξαθνχλ πεξηθιείνληαη κέζα ζηελ εηηθέηα <PurchasedOrder> έσο θαη ηελ εηηθέηα </Buyer>. Η πιεξνθνξία απηή ζπζρεηίδεηαη κε ηελ ππνγξαθή κέζσ ηνπ

΢ει. 44 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

απαηηνχκελνπ ζηνηρείνπ <Reference URI="">. Έλα αθφκε απαηηνχκελν ζηνηρείν είλαη ην <CanonicalizationMethod> πνπ πεξηγξάθεη ηε κέζνδν θαλνληθνπνίεζεο πνπ ρξεζηκνπνηήζεθε ζην XML έγγξαθν γηα λα θξππηνγξαθεζεί απφ ηνλ ππνγξάθνληα. Σν αξρηθφ θείκελν θαλνληθνπνηείηαη βάζε ελφο αιγνξίζκνπ κε ζθνπφ λα εμαιείςεη ηηο αζπκβαηφηεηεο αλάγλσζεο ηεο XML πνπ κπνξεί λα ππάξρνπλ ζηα δηάθνξα ιεηηνπξγηθά ζπζηήκαηα, φπσο είλαη ηα θελά κεηαμχ ησλ εηηθεηψλ XML. Ο αιγφξηζκνο πνπ ρξεζηκνπνηείηαη ζπλήζσο είλαη ν C14N θαη ζπκβνιίδεηαη έηζη ιφγσ ησλ δεθαηεζζάξσλ γξακκάησλ πνπ βξίζθνληαη αλάκεζα ζην πξψην θαη ην ηειεπηαίν γξάκκα ηεο ιέμεο canonicalization. H W3C έρεη δεκηνπξγήζεη κηα λέα έθδνζε ηνπ αιγνξίζκνπ ηελ Exclusive Canonicalization, ψζηε λα απνθχγεη κεξηθά πξνβιήκαηα πνπ δεκηνπξγνχληαλ ζηελ πξνεπεμεξγαζία ηεο ππνγξαθήο ζηα κελχκαηα SOAP. Ο αιγφξηζκνο θξππηνγξάθεζεο ηεο ππνγξαθήο αλαθέξεηαη κέζα ζην ζηνηρείν <SugnatureMethod>. ΢ην παξάδεηγκα απηφ ρξεζηκνπνηείηαη ν αιγφξηζκνο δεκφζηνπ θιεηδηνχ

RSA κε ηε κέζνδν

θαηαθεξκαηηζκνχ SHA1 πνπ πξνηείλεηαη θη απφ ηελ W3C. ΢ην ζηνηρείν <Reference> βξίζθεηαη ε αλαθνξά σο πξνο ην ίδην ην θείκελν πνπ ζα ππνγξαθεί θαη

ζην

πξναηξεηηθφ

ζηνηρείν

απφγνλν

<Transforms>,

αλαθέξεηαη

ν

κεηαζρεκαηηζκφο πνπ ζα ππνζηεί ην αξρηθφ θείκελν πξηλ λα ππνγξαθεί. Οη κεηαζρεκαηηζκνί πνπ κπνξνχλ λα γίλνπλ είλαη θαλνληθνπνίεζε, ζπκπίεζε, ε ρξήζε κηαο XPATH πξφηαζεο ψζηε λα θηιηξαξηζηεί ην θείκελν γηα λα ππνγξαθεί κφλν ζπγθεθξηκέλν κέξνο ηνπ θεηκέλνπ. Έλαο αθφκε κεηαζρεκαηηζκφο είλαη ν 64Bit θαη ρξεζηκνπνηείηαη γηα ηελ κεηαηξνπή δπαδηθψλ δεδνκέλσλ ζε ASCII θείκελν, ψζηε είλαη πην εχθνιε ε αλάγλσζε ηνπ. Ο κεηαζρεκαηηζκφο απηφο κπνξεί λα ρξεζηκνπνηεζεί ζηελ πεξίπησζε πνπ ππνγξάθεηαη κία εηθφλα. Σν ζπγθεθξηκέλν ζηνηρείν δίλεη αθφκε πεξηζζφηεξε επειημία ζηηο ςεθηαθέο ππνγξαθέο θαζψο κε ηελ ρξήζε ηνπ XSLT κεηαζρεκαηηζκνχ, ν ρξήζηεο κπνξεί λα ππνγξάςεη απηφ πνπ βιέπεη θαζψο κπνξεί λα πξνζδηνξίζεη ην θνκκάηη ηνπ XML θεηκέλνπ πνπ ζα ππνγξαθεί, ψζηε λα είλαη πην έληνλν θαη λα μερσξίδεη απφ ην ππφινηπν. Σν ζηνηρείν <DigestMethod> πνπ είλαη απφγνλνο ηνπ γνληθνχ ζηνηρείνπ <Reference> πεξηγξάθεη ηελ κέζνδν θαηαθεξκαηηζκνχ πνπ ζα εθαξκνζηεί ζην θείκελν καδί κε ηνπο κεηαζρεκαηηζκνχ. Σν απνηέιεζκα ηνπ θαηαθεξκαηηζκέλνπ θεηκέλνπ ή αιιηψο

΢ει. 45 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.1.8 Παξάδεηγκα ςεθηαθήο ππνγξαθήο XML

ε ζχλνςε (digest) πνπ δεκηνπξγείηαη ηνπνζεηείηαη ζην ζηνηρείν <DigestValue>.

΢ει. 46 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Έλα πξναηξεηηθφ ζηνηρείν πνπ κπνξεί λα ρξεζηκνπνηεζεί κέζα ζην ζηνηρείν <SignedInfo> γηα ηελ ππνγξαθή πνιιψλ αληηθεηκέλσλ είλαη ην <Manifest>. Σν ζπγθεθξηκέλν ζηνηρείν δίλεη επειημία ζηνπο πξνγξακκαηηζηέο εθαξκνγψλ λα ην ρξεζηκνπνηήζνπλ φηαλ ζέινπλ λα δηαρεηξηζηνχλ ηελ πεξίπησζε πνπ κία ε πεξηζζφηεξεο απφ ηηο αλαθνξέο δελ πεξλνχλ ηνλ έιεγρν εγθπξφηεηαο. Μπνξνχλ δειαδή λα αλαδεηήζνπλ ην πξφβιεκα ηεο κε επηθχξσζεο ή λα ρξεζηκνπνηήζνπλ ηελ ηερληθή απηή φηαλ δελ είλαη απαξαίηεην λα είλαη φιεο νη αλαθνξέο επηθπξσκέλεο. Αθφκε ην ζηνηρείν <Manifest> ρξεζηκνπνηείηαη ζηελ πεξίπησζε πνπ πνιιέο αλαθνξέο πξέπεη λα ππνγξαθνχλ κε δηαθνξεηηθά θιεηδηά. Γηα λα πξαγκαηνπνηεζεί απηφ ζα έπξεπε λα δεκηνπξγεζνχλ θαη λα θξππηνγξαθεζνχλ ίζν πιήζνο ππνγξαθψλ κε ην πιήζνο ησλ αλαθνξψλ. Δλψ κε ην ζηνηρείν <Manifest> νη αλαθνξέο ζπγθεληξψλνληαη φιεο καδί θαη ν ππνινγηζκφο ηνπ θεηκέλνπ γίλεηαη κία θνξά (Bartel et. al., 2008).

΢ρήκα 3.1.9 Γνκή ζηνηρείνπ Manifest [2]

Έλα αθφκα πξναηξεηηθφ ζηνηρείν είλαη ην <SignatureProperties> πνπ είλαη απφγνλν ηνπ ζηνηρείνπ <Object>. Μπνξεί λα ρξεζηκνπνηεζεί γηα λα πξνζηεζεί κηα ρξνλνζθξαγίδα ζηελ ππνγξαθή ή ν ζεηξηαθφο αξηζκφο ηνπ hardware πνπ δεκηνχξγεζε ηελ ππνγξαθή. Η θξππηνγξαθεκέλε ηηκή ηνπ γνληθνχ ζηνηρείνπ <SignedInfo> καδί κε ηα ζηνηρεία παηδηά ηνπ, απνηειεί ηελ ηηκή ηεο ππνγξαθήο ζηε κνξθή ησλ 64-Βit θαη πεξηέρεηαη κέζα ζην ζηνηρείν <SignatureValue>. Σν πξναηξεηηθφ ζηνηρείν <KeyInfo> πεξηέρεη πιεξνθνξίεο γηα ην θιεηδί πνπ επηθπξψλεη

ηελ

ππνγξαθή.

Σν

ζηνηρείν

παηδί

<X509Data>

πεξηγξάθεη

πιεξνθνξίεο γηα έλα ςεθηαθφ πηζηνπνηεηηθφ πνπ εθδίδεηαη απφ κία έκπηζηε αξρή έθδνζεο πηζηνπνηεηηθψλ φπσο είλαη ε Verisign.

Σν ζηνηρείν <SubjectName>

πεξηέρεη πιεξνθνξίεο ηνπ πηζηνπνηεηηθνχ θαη ην ζηνηρείν <X509Certificate> πεξηγξάθεη ηελ θσδηθνπνηεκέλε ηηκή ηνπ πηζηνπνηεηηθνχ. Πξναηξεηηθά ζηνηρεία παηδία πνπ κπνξεί λα ρξεζηκνπνηεζνχλ είλαη ην <KeyValue> πνπ πεξηέρεη ηελ

΢ει. 47 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θξππηνγξαθεκέλε κνξθή ηνπ θιεηδηνχ αλάινγα κε ηνλ αιγφξηζκν πνπ ρξεζηκνπνηείηαη θαη ην ζηνηρείν <RetreivalMethod> πνπ ρξεζηκνπνηείηαη ζπλήζσο φηαλ ην θιεηδί απνζεθεχεηαη ζε μερσξηζηή ηνπνζεζία θαη αλαθέξεηαη κέζσ ελφο URI.

3.1.4 Γεκηνπξγία θαη Δπηθύξσζε Φεθηαθήο Τπνγξαθήο

Η δεκηνπξγία κηαο ππνγξαθήο XML αξρίδεη απφ ηε δεκηνπξγία ηνπ ζηνηρείνπ <Reference>, γηα θάζε αληηθείκελν πνπ ζα ππνγξαθεί, απφ ηε κεραλή επεμεξγαζίαο XML (XML Signature processing engine). Αλαιπηηθφηεξα, ην πξψην βήκα ηεο κεραλήο XML είλαη λα πξνζδηνξίζεη ην αληηθείκελν κέζσ κηαο αλαθνξάο URI θαη λα εθαξκφζεη ζε απηφ ηνπο κεηαζρεκαηηζκνχο φπσο κηα πξφηαζε XPath. Ύζηεξα ζχκθσλα κε ηελ ζπλάξηεζε θαηαθεξκαηηζκνχ πνπ έρεη νξηζηεί, ππνινγίδεη ηε ζύνουη πνπ ζα ηνπνζεηεζεί ζην ζηνηρείν <DigestValue>. Η κεραλή XML δεκηνπξγεί ην ζηνηρείν <Reference> καδί κε ηα ζηνηρεία παηδηά. Σν δεχηεξν βήκα πνπ κπνξεί πιένλ λα εθηειέζεη ε κεραλή XML, είλαη ε δεκηνπξγία ηνπ ζηνηρείνπ

<SignedInfo> καδί

κε

φια ηα

ζηνηρεία

παηδηά

πνπ

είλαη

ην

<CanonicalizationMethod>, <SignatureMethod>, <DigestMethod> θαη ην ζηνηρείν <Reference> απφ ην πξνεγνχκελν βήκα. Ύζηεξα, θαλνληθνπνηνχληαη ηα δεδνκέλα ηνπ

ζηνηρείνπ

<SignedInfo>

βάζε

ηνπ

αιγνξίζκνπ

θαλνληθνπνίεζεο. Σν

απνηέιεζκα ηεο θαλνληθνπνίεζεο ρξεζηκνπνηείηαη σο είζνδνο ζηε δεκηνπξγία ηνπ ηεο ζχλνςεο βάζε ηεο ζπλάξηεζεο θαηαθεξκαηηζκνχ. Η ζχλνςε ρξεζηκνπνηείηαη γηα λα ππνινγηζηεί ε ηηκή ηεο ππνγξαθήο βάζε ηνπ αιγνξίζκνπ πνπ βξίζθεηαη ζην ζηνηρείν <SignatureMethod>. Η ηηκή πνπ ππνινγίδεηαη ηνπνζεηείηαη ζην ζηνηρείν <SignatureValue>. Η ηειεπηαία ελέξγεηα ηεο κεραλήο είλαη λα δεκηνπξγήζεη ην ζηνηρείν <Signature> θαη λα εηζάγεη ζε απηφ φια ηα ζηνηρεία παηδηά πνπ δεκηνχξγεζε ζηα πξνεγνχκελα βήκαηα θαζψο θαη ην ζηνηρείν <KeyInfo> ζηελ πεξίπησζε πνπ ρξεζηκνπνηεζεί (ζρήκα 3.1.10). Η δηαδηθαζία επηθχξσζεο ηεο ππνγξαθήο είλαη ε αληίζηξνθε ηεο

΢ει. 48 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

δεκηνπξγίαο ηεο. Αξρηθά ε κεραλή XML παίξλεη ηα δεδνκέλα πνπ βξίζθνληαη κέζα ζην ζηνηρείν <Reference> θαη εθαξκφδεη ηνπο κεηαζρεκαηηζκνχο. Ύζηεξα ππνινγίδεη ηε ζχλνςε ζχκθσλα κε ην αιγφξηζκν πνπ βξίζθεηαη ζην ζηνηρείν <DigestMethod> θαη ην ζπγθξίλεη κε ηελ ηηκή ηεο ζχλνςεο πνπ βξίζθεηαη κέζα ζην ζηνηρείν <DigestValue>. ΢ηελ πεξίπησζε πνπ δελ είλαη αθξηβψο ίδηα ε επηθχξσζε απνηπγράλεη. Η δηαδηθαζία απηή επαλαιακβάλεηαη γηα φιεο ηηο αλαθνξέο πνπ πεξηέρνληαη ζηελ ππνγξαθή. Όηαλ νινθιεξσζεί ν έιεγρνο φισλ ησλ αλαθνξψλ ηφηε ε κεραλή κπνξεί λα ζπλερίζεη ζηνλ έιεγρν ηεο ηηκήο ηεο ίδηαο ηεο ππνγξαθήο. Η κεραλή XML ρξεζηκνπνηεί ην θιεηδί πνπ βξίζθεηαη ζην ζηνηρείν <KeyInfo> ειέγρνληαο αλ αλήθεη ζηνλ απνζηνιέα. Ύζηεξα θαλνληθνπνηεί ην ζηνηρείν <SignedInfo> θαη ην απνηέιεζκα ην ρξεζηκνπνηεί γηα λα δεκηνπξγήζεη ηε ζχλνςε. Με ηε ρξήζε ηνπ πηζηνπνηεκέλνπ θιεηδηνχ απνθξππηνγξαθεί ην πεξηερφκελν ηνπ ζηνηρείνπ <SignedInfo> θαη ην ζπγθξίλεη κε ηε ζχλνςε πνπ είρε ππνινγίζεη. Αλ δελ είλαη αθξηβψο ίδηα ηφηε ε επηθχξσζε ηεο ππνγξαθήο απνηπγράλεη (ζρήκα 3.1.11).

΢ει. 49 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.1.10 Γηαδηθαζία δεκηνπξγίαο ςεθηαθήο ππνγξαθήο

΢ει. 50 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.1.11 Γηαδηθαζία επηθύξσζεο ςεθηαθήο ππνγξαθήο

΢ει. 51 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

3.1.5

Πιενλεθηήκαηα θαη Μεηνλεθηήκαηα Φεθηαθώλ Τπνγξαθώλ

Η XML παξέρεη κεγάιε επειημία ζηηο ςεθηαθέο ππνγξαθέο, σζηφζν αλ δελ ρξεζηκνπνηεζεί θαηάιιεια κπνξεί λα απνηειέζεη ηε κεγαιχηεξε αδπλακία ηνπο. Ο αιγφξηζκνο θαλνληθνπνίεζεο ρξεζηκνπνηνχληαη

ζε

φια

C14N δίλεη ηε δπλαηφηεηα ζηηο ππνγξαθέο λα ηα

ιεηηνπξγηθά

ζπζηήκαηα

εμαιείθνληαο

ηηο

αζπκβαηφηεηαο κεηαμχ ηνπο. Μπνξεί φκσο λα γίλεη κηα ρξνλνβφξα δηαδηθαζία απνξξνθψληαο φινπο ηνπο πφξνπο ηνπ ζπζηήκαηνο. Έλαο θαθφβνπινο ρξήζηεο κπνξεί λα πξνθαιέζεη άξλεζε ππεξεζίαο (DoS Attack) αληηθαζηζηψληαο ην XML αληηθείκελν πνπ ππνγξάθεηαη κε έλα πνιχ κεγαιχηεξν. Οπφηε γηα λα πεξαησζεί ε θαλνληθνπνίεζε ζα

ρξεηαζζνχλ πεξηζζφηεξνη πφξνη ζπζηήκαηνο θαη πνιχ

πεξηζζφ��εξνο ρξφλνο. Αθφκε κπνξεί λα πξνζζέζεη θαη άιινπο αιγνξίζκνπο θαλνληθνπνίεζεο κε ζθνπφ ηελ εθηέιεζε θαηαζηξνθηθνχ θψδηθα. Γηα απηφ ην ιφγν ζα πξέπεη λα πεξηνξίδεηαη ν αξηζκφο ηνπο αιιά θαη ή ρξήζε ζρφιησλ κέζα ζην ζηνηρείν ηνπο, γηαηί κπνξεί λα πξνθαιέζεη ζχγθξνπζε θαηά ηε δεκηνπξγία ηεο ζχλνςεο (Hill Brad et al., 2007). Η ρξήζε ηεο XSLT δίλεη επειημία ζην ζρεδηαζκφ ησλ ππεξεζηψλ ηζηνχ θαη ησλ ππνγξαθψλ, σζηφζν κπνξεί λα ρξεζηκνπνηεζεί σο πχιε εηζφδνπ απεηιψλ. Η XSLT είλαη κηα νινθιεξσκέλε γιψζζα πξνγξακκαηηζκνχ θαη έρεη ηελ δπλαηφηεηα λα εθηειέζεη θαθφβνπιν θψδηθα πξνθαιψληαο άξλεζε ππεξεζίαο. Αθφκε ε XSLT κπνξεί λα απνηειέζεη απεηιή κέζσ ησλ extensions πνπ ρξεζηκνπνηεί. Σα extensions κπνξεί λα έρνπλ δεκηνπξγεζεί ζε δηάθνξεο γιψζζεο πξνγξακκαηηζκνχ φπσο Java, BeanShell, JavaScript, VBScript, .Net. Έρνπλ ηε δπλαηφηεηα λα εθηειέζνπλ θαθφβνπιν θψδηθα ζε έλα ιεηηνπξγηθφ ζχζηεκα θαζψο θαη λα ζπλδεζνχλ κε κία βάζε δεδνκέλσλ θαη λα εθηειέζνπλ θψδηθα SQL (Hill Bradley, 2007). Η κεραλή πνπ εθηειεί XSLT θψδηθα είλαη δηαθνξεηηθή ζε θάζε πιαηθφξκα θαη ππάξρεη ε δπλαηφηεηα λα απελεξγνπνηεζνχλ ηα extensions ψζηε λα κεησζεί ν θίλδπλνο επηζέζεσλ . Σν XPath θαη ην XPath Filter 2.0 ρξεζηκνπνηνχληαη γηα λα κεησζεί ην

΢ει. 52 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

κέγεζνο ηνπ XML θεηκέλνπ πνπ ζα ππνγξαθεί. Παξάιιεια φκσο κπνξεί λα απνηειέζεη απεηιή γηα ηηο ςεθηαθέο ππνγξαθέο. Έλα πνιχπινθν εξψηεκα XPath κπνξεί λα δεζκεχζεη κεγάιν πνζνζηφ ησλ πφξσλ ηνπ ζπζηήκαηνο θαη λα νδεγήζεη ζε άξλεζε ππεξεζίαο (Gajek et al., 2002). Δπηπιένλ κε ηε ρξήζε ηνπ XPath κπνξνχλ λα πξαγκαηνπνηεζνχλ wrapping attacks πνπ έρνπλ ζθνπφ λα αληηθαηαζηήζνπλ ην ζηνηρείν πνπ ππνγξάθεηαη πξνζζέηνληαο έλα άιιν κέζα ζηελ δνκή ελφο κελχκαηνο SOAP. Η επίζεζε απηή δελ γίλεηαη αληηιεπηή απφ ηνλ απνζηνιέα θαη ηνλ παξαιήπηε κηαο ππνγξαθήο γηαηί δελ επεξεάδεηαη ε αθεξαηφηεηα ηεο θαη ε επηθχξσζε ηεο επηηπγράλεηαη. ΢ην ζρήκα 3.1.12 παξνπζηάδεηαη ε δνκή ελφο SOAP κελχκαηνο κε κία ππνγξαθή XML. Σν αληηθείκελν πνπ ζα ππνγξαθεί είλαη ε ψξα αλαρψξεζεο θαη πξνζδηνξίδεηαη κέζσ ηνπ εξσηήκαηνο XPath: “/Envelope//Shipping[1]/Departure” θαζψο θαη ην ζηνηρείν <Manifest> πνπ πξνζδηνξίδεηαη κε ηελ αλαθνξά: URI “mf1”.

΢ρήκα 3.1.12 Μήλπκα SOAP κε XML ππνγξαθή [3]

Ο επηηηζέκελνο δεκηνπξγεί έλα ζηνηρείν <Wrapper> κέζα ζηε θεθαιίδα ηνπ κελχκαηνο SOAP θαη ηνπνζεηεί ην <Manifest> σο απφγνλν ηνπ <Wrapper>. Η ζέζε απηή παξακέλεη άγλσζηε γηα ηε κεραλή επεμεξγαζίαο ηνπ κελχκαηνο. ΢ηε

΢ει. 53 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ζέζε ηνπ <Manifest> ηνπνζεηείηαη έλα λέν, έρνληαο ηελ ίδηα δνκή κε ην αξρηθφ αιιά δηαθνξεηηθφ πεξηερφκελν (ζρήκα 3.1.13) . Η επηθχξσζε ηεο ππνγξαθήο δελ επεξεάδεηαη θαζψο ε δνκή είλαη αθξηβψο ίδηα κε ηελ αξρηθή, κε απνηέιεζκα ε επίζεζε λα είλαη επηηπρεκέλε.

΢ρήκα 3.1.13 Σξνπνπνηεκέλν κήλπκα SOAP κε XML ππνγξαθή [3]

Οη Sebastian Gajek, Meiko Jensen, Lijun Liao, θαη J¨org Schwenk πξφηεηλαλ έλα λέν θίιηξν πνπ είλαη ππνζχλνιν ηνπ XPath. Tν θίιηξν ιέγεηαη FastXPath θαη πξνζδηνξίδεη ηελ αθξηβή ζέζε ηνπ αληηθεηκέλνπ πνπ ζα ππνγξαθεί εμαιείθνληαο ηελ δπλαηφηεηα wrapping attacks (Gajek et al., 2002). Αθφκε κία επίζεζε γλσζηή σο replay attack κπνξεί λα απεηιήζεη ηηο ςεθηαθέο ππνγξαθέο XML. Όηαλ κία ππεξεζία δεηήζεη απφ έλα ρξήζηε λα ππνγξάςεη έλα θείκελν ρσξίο λα ρξεζηκνπνηήζεη ηα ζπλζεκαηηθά ηνπ γηα επηβεβαίσζε πξφζβαζεο, ν επηηηζέκελνο κπνξεί λα ππνθιέςεη ηελ ππνγξαθή θαη χζηεξα λα μαλαζηείιεη ην κήλπκα άκεζα αιιάδνληαο ην πεξηερφκελν. Η ζπγθεθξηκέλε απεηιή κπνξεί λα αληηκεησπηζηεί εχθνια κε ηε ρξήζε ηνπ ζηνηρείνπ <Timestamp> ψζηε λα πξνζδηνξίδεηαη ε αθξηβήο ψξα ηεο ππνγξαθήο. Δπίζεο

΢ει. 54 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

κπνξεί λα δηαρσξηζηεί ε πηζηνπνίεζε ηνπ ρξήζηε απφ ηελ πηζηνπνίεζε ηνπ κελχκαηνο ή λα πξνζηεζεί έλαο κεηξεηήο ζην κήλπκα ψζηε λα γίλεηαη άκεζα αληηιεπηή ε επαλάιεςή ηνπ (Frederick Hirsch et al., 2010). Η ηθαλφηεηα ησλ ςεθηαθψλ ππνγξαθψλ λα ρξεζηκνπνηνχλ URL γηα λα πξνζδηνξίδνπλ ην αληηθείκελν πνπ ζα ππνγξαθεί είλαη έλα απφ ηα βαζηθά πιενλεθηήκαηα ηνπο. Αλ φκσο θάπνηνο θαηαθέξεη λα αλαιχζεη ην URL κπνξεί λα επηηεζεί κε πνιινχο ηξφπνπο. Αξρηθά κπνξεί λα αληηθαηαζηήζεη ην URL κε θάπνην άιιν πξνζπαζψληαο λα δεζκεχζεη ηνπο πφξνπο ηνπ ζπζηήκαηνο. Αλ ε εθαξκνγή ππνζηεξίδεη πνιιαπιά πξσηφθνιια ζην URL φπσο ην ldap://, file://, ftp://, ηφηε ν επηηηζέκελνο κπνξεί λα εμαπνιχζεη επηζέζεηο ζηα ηξσηά ζεκεία ηνπο. Αθφκε ζηελ πεξίπησζε πνπ ηα ζπλζεκαηηθά ησλ ρξεζηψλ ζπκπεξηιακβάλνληαη ζηα εμεξρφκελα κελχκαηα ηφηε επηζέζεηο ηχπνπ reflection ή redirection κπνξνχλ λα πξαγκαηνπνηεζνχλ κέζσ ησλ πξσηνθφιισλ. Σέινο, κηα εθαξκνγή φηαλ αλαθηά κηα εμσηεξηθή αλαθνξά URL απνζεθεχεη πιεξνθνξίεο, ζε κία πξνζσξηλή κλήκε, ζρεηηθά κε ηελ ψξα αλάθηεζεο θαη ηα ζηνηρεία κηαο ππνγξαθήο. ΢ηελ πεξίπησζε πνπ γηα θάπνην ιφγσ δελ κπνξεί ε εθαξκνγή λα πξνζπειάζεη ηα ζηνηρεία ηεο πξνζσξηλήο κλήκεο ηφηε κπνξεί λα γίλεη ηξσηή θαη λα κελ γλσξίδεη πφηε θαη πνίεο εμσηεξηθέο αλαθνξέο έρεη αλαθηήζεη (Gajek et al., 2002).

3.2 Δηζαγσγή ζηελ Κξππηνγξάθεζε XML

Η

θξππηνγξάθεζε

απνηειεί

εθαξκνγή

ηεο

θξππηνγξαθίαο.

Κξππηνγξάθεζε είλαη ν κεηαζρεκαηηζκφο δεδνκέλσλ ζε κνξθή πνπ λα είλαη αδχλαηνλ λα δηαβαζηεί ρσξίο ηελ γλψζε ηεο ζσζηήο αθνινπζίαο bit. Η αθνινπζία bit θαιείηαη "θιεηδί" θαη ρξεζηκνπνηείηαη ζε ζπλδπαζκφ κε θαηάιιειν αιγφξηζκν / ζπλάξηεζε

(Μάγθνο

απνθξππηνγξάθεζε

et. θαη

al.,

2009).

απαηηεί

Η

αληίζηξνθε

γλψζε

ηνπ

δηαδηθαζία

θιεηδηνχ.

΢ει. 55 από 195

είλαη

΢θνπφο

ε ηεο


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θξππηνγξάθεζεο είλαη λα εμαζθαιίζεη ην απφξξεην ησλ δεδνκέλσλ θξαηψληαο ηα θξπθά απφ φινπο φζνπο έρνπλ πξφζβαζε ζε απηά. Η θξππηνγξάθεζε θαη ε απνθξππηνγξάθεζε απαηηνχλ, ηελ ρξήζε θάπνηαο κπζηηθήο πιεξνθνξίαο πνπ είλαη έλα θιεηδί. Γηα κεξηθνχο κεραληζκνχο ρξεζηκνπνηείηαη ην ίδην θιεηδί θαη γηα ηελ θξππηνγξάθεζε θαη γηα ηελ απνθξππηνγξάθεζε, γηα άιινπο φκσο ηα θιεηδηά πνπ ρξεζηκνπνηνχληαη δηαθέξνπλ. Η θξππηνγξάθεζε XML ρξεζηκνπνηείηαη γηα λα απνθξχςεη επαίζζεηεο πιεξνθνξίεο πνπ πεξηέρνληαη ζε έλα κήλπκα SOAP ή αθφκε θαη νιφθιεξν ην κήλπκα. Η W3C ηνλ Ινχλην ηνπ 2001 δεκηνχξγεζε έλα θνηλφ πξφηππν πνπ πεξηιακβάλεη ηνπο θαλφλεο ιεηηνπξγίαο θαη επεμεξγαζίαο παξφκνην ζηε βαζηθή θηινζνθία κε απηφ ησλ ςεθηαθψλ ππνγξαθψλ. Οη δχν ηερλνινγίεο έρνπλ πνιιά θνηλά ζηνηρεία θαη αιιεινζπκπιεξψλεηαη εμππεξεηψληαο ε θάζε κία ην δηθφ ηεο ζθνπφ. Βάζε ηνπ πξνηχπνπ ηεο W3C ε θξππηνγξάθεζε κπνξεί λα γίλεη ζε έλα νιφθιεξν θείκελν XML ή ζε νξηζκέλα θνκκάηηα ηνπ, κε ηε ρξήζε δηαθνξεηηθψλ θιεηδηψλ ψζηε θάζε θνκκάηη λα είλαη νξαηφ απφ δηαθνξεηηθνχο παξαιήπηεο. Δπίζεο, κπνξεί λα θξππηνγξαθεζεί έλα αληηθείκελν πνπ βξίζθεηαη εθηφο κελχκαηνο κέζσ ηεο θξππηνγξάθεζεο ηνπ ζηνηρείνπ <CipherReference>. Σν ζηνηρείν απηφ κπνξεί λα πεξηέρεη κία αλαθνξά URI φπσο αθξηβψο γίλεηαη κε ηηο ςεθηαθέο ππνγξαθέο δίλνληαο ηελ δπλαηφηεηα λα θξππηνγξαθεζεί νπνηαζδήπνηε κνξθήο

πιεξνθνξία.

Η

θξππηνγξάθεζε

XML

δελ

πξνδηαγξάθεη

λένπο

αιγνξίζκνπο, αληίζεηα ρξεζηκνπνηεί ππάξρνληεο γηα ηελ θξππηνγξάθεζεαπνθξππηνγξάθεζε, ηελ ζπκθσλία θιεηδηψλ, ηηο ζπλαξηήζεηο θαηαθεξκαηηζκνχ, ηελ

απζεληηθφηεηα

κελπκάησλ.

Η

κηθξφηεξε

κνλάδα

πνπ

κπνξεί

λα

θξππηνγξαθεζεί είλαη έλα ζηνηρείν XML. Ο αιγφξηζκνο θξππηνγξάθεζεο πνπ ρξεζηκνπνηείηαη είλαη ζρεδφλ πάληα ζπκκεηξηθφο, φπσο ν ηξηπιφο DES (3DES) ή ν AES, θαζψο είλαη πνιχ πην γξήγνξνο ζε ζρέζε κε θάπνην αζχκκεηξν. Οη ζπκκεηξηθνί αιγφξηζκνη ή αιιηψο ηδησηηθνχ θιεηδηνχ, ρξεζηκνπνηνχλ ην ίδην θιεηδί γηα λα θξππηνγξαθήζνπλ θαη λα απνθξππηνγξαθήζνπλ κηα πιεξνθνξία (ζρήκα 3.2.1). Γηαηξνχλ πξψηα ηελ πιεξνθνξία ζε κηθξφηεξα κπινθ ίζσλ bits θαη χζηεξα ππνινγίδνπλ ην θξππηνγξάθεκα θάλνληαο αληηθαηαζηάζεηο, κεηακνξθψζεηο θαη κεηαηνπίζεηο ζηα

΢ει. 56 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

bits. Ο απνζηνιέαο ζα πξέπεη λα ην θνηλνπνηήζεη ην θιεηδί κε θάπνην ηξφπν ζην παξαιήπηε, σζηφζν ζηελ επηθνηλσλία κεηαμχ ππνινγηζηψλ, γίλεηαη ζπλήζσο κε ηε ρξήζε ελφο ςεθηαθνχ πηζηνπνηεηηθνχ. Οη

αιγφξηζκνη

δεκφζηνπ

θιεηδηνχ

ή

αζχκκεηξνη

αιγφξηζκνη

ρξεζηκνπνηνχληαη απφ ηελ θξππηνγξάθεζε XML γηα λα θξππηνγξαθήζνπλ ην ηδησηηθφ θιεηδί. Γηα λα θξππηνγξαθήζεη κηα πιεξνθνξία ν απνζηνιέαο ρξεζηκνπνηεί έλα δεχγνο θιεηδηψλ πνπ ην έλα ρξεζηκνπνηείηαη γηα ηε δεκηνπξγία ηνπ θξππηνγξαθήκαηνο θαη ην άιιν γηα ηελ απνθξππηνγξάθεζή ηνπ.

΢ρήκα 3.2.1 ΢πκκεηξηθή θξππηνγξάθεζε [2]

΢ην παξάδεηγκα ηνπ ζρήκαηνο 3.2.2 ν απνζηνιέαο Bob ρξεζηκνπνηεί ην δεκφζην θιεηδί ηεο Alice γηα λα θξππηνγξαθήζεη ην κήλπκα θαη ε Alice γηα λα ην απνθξππηνγξαθήζεη ρξεζηκνπνηεί ην δηθφ ηεο ηδησηηθφ θιεηδί. Σν δεκφζην θιεηδί ηεο Alice κπνξεί λα είλαη γλσζηφ ζε φινπο, φκσο ην ηδησηηθφ θιεηδί ηεο ζα πξέπεη λα ην γλσξίδεη κφλν απηή θαζψο είλαη ην κνλαδηθφ πνπ κπνξεί λα απνθξππηνγξαθήζεη κελχκαηα πνπ έρνπλ θξππηνγξαθεζεί κε ην δεκφζην θιεηδί ηεο. ΢ηελ πεξίπησζε πνπ ε Alice θξππηνγξαθήζεη έλα κήλπκα κε ην ηδησηηθφ ηεο θιεηδί απηφκαηα πηζηνπνηείηαη ε ηαπηφηεηα ηεο. Έηζη ε ρξήζε ησλ αζχκκεηξσλ αιγφξηζκσλ θξππηνγξάθεζεο φπσο ν RSA θαη ν SHA1 ρξεζηκνπνηείηαη ζηηο ςεθηαθέο ππνγξαθέο XML θαη ησλ ζπκκεηξηθψλ ζηε θξππηνγξάθεζε XML

΢ει. 57 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

(Rosenberg et.al., 2004). Έλαο αθφκε ιφγνο γηα ην δηαρσξηζκφ ζηε ρξήζε ηνπ θάζε αιγνξίζκνπ είλαη ν ρξφλνο θξππηνγξάθεζεο, κε ηνλ RSA λα είλαη ρίιηεο θνξέο πην αξγφο απφ ηνλ DES. Απηφ νθείιεηαη αξρηθά ζηε δηαδηθαζία δεκηνπξγίαο ηνπ κνλαδηθνχ δεχγνπο ησλ θιεηδηψλ πνπ γηα λα δεκηνπξγεζεί ρξεηάδεηαη πνιιαπιέο επαλαιή��εηο ψζηε λα κεησζνχλ νη πηζαλφηεηεο αληηθαηάζηαζεο ελφο εθ ησλ δχν. Ύζηεξα, ε θξππηνγξάθεζε ηεο πιεξνθνξίαο απαηηεί πνιχ ρξφλν γηαηί νη ππνινγηζκνί πνπ γίλνληαη ζπκπεξηιακβάλνπλ ρξνλνβφξεο πξάμεηο φπσο χςσζε ζε δχλακε θαη ππνινγηζκνχο modulo. Οπφηε ζηελ θξππηνγξάθεζε XML ρξεζηκνπνηείηαη ε ηαρχηεηα ησλ ζπκκεηξηθψλ αιγφξηζκσλ θξππηνγξάθεζεο θαη ε επειημία ησλ αζχκκεηξσλ γηα ηε παξαγσγή ηνπ θιεηδηνχ ππνγξαθήο ηνπο απφ ηηο XMLDSIG.

΢ρήκα 3.2.2 Κξππηνγξάθεζε δεκνζίνπ θιεηδηνύ [2]

3.2.1 Βαζηθή Γνκή ΢ρήκαηνο Κξππηνγξάθεζεο XML

Σν βαζηθφ ζηνηρείν γνλέαο ζην ζρήκα ηεο θξππηνγξάθεζεο XML είλαη ην <EncryptedData>. Σν ζηνηρείν απηφ κπνξεί λα έρεη κεξηθά πξναηξεηηθά ραξαθηεξηζηηθά γηα ηελ θαιχηεξε δηαρείξηζή ηνπ φπσο είλαη ην “id” θαη ην “type” πνπ

δίλνπλ

πεξηζζφηεξεο

πιεξνθνξίεο

γηα

ην

αληηθείκελν

΢ει. 58 από 195

πνπ

ζα


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θξππηνγξαθεζεί. Οη ηηκέο πνπ κπνξεί λα πεξηέρεη ην “type” είλαη ε “element” αλ θξππηνγξαθεζνχλ φια ηα ζηνηρεία απφγνλνη καδί κε ηα εμσηεξηθά tags θαη ηελ ηηκή “content” αλ θξππηνγξαθεζεί κφλν ην πεξηερφκελν ηνπ ζηνηρείνπ ρσξίο ηα tags. Αλ ε θξππηνγξάθεζε δελ γίλεη ζε θείκελν αιιά ζε θάπνην αληηθείκελν φπσο κία εηθφλα ηχπνπ 64-bit PNG, ηφηε ρξεζηκνπνηνχληαη αθφκε δχν πξναηξεηηθά ραξαθηεξηζηηθά γηα λα ην πεξηγξάςνπλ θαη λα δηεπθνιχλνπλ πεξηζζφηεξν ηελ απνθξππηνγξάθεζή ηνπ. Σν “MimeType” ζα πεξηέρεη ηελ ηηκή „image/png‟ θαη ην “Encoding” ηελ ηηκή „http://www.w3.org/2000/09/xmldsig#base64‟, δίλνληαο έηζη πεξηζζφηεξεο πιεξνθνξίεο ζηελ κεραλή απνθξππηνγξάθεζεο.

΢ρήκα 3.2.3 Βαζηθή δνκή ζρήκαηνο θξππηνγξάθεζεο XML [4]

Σν ζηνηρείν <EncryptionMethod> πεξηέρεη ην URI ηνπ αιγνξίζκνπ θξππηνγξάθεζεο πνπ

ρξεζηκνπνηείηαη,

φπσο ηνλ αιγφξηζκν

triple

DES

http://www.w3.org/2001/04/xmlenc#tripledes-cbc ή ηνλ AES κε ην αλάινγν κέγεζνο θιεηδηνχ πνπ είλαη 128-bit, 192-bit θαη 256-bit. Σν θιεηδί ηεο θξππηνγξάθεζεο ή πιεξνθνξίεο ζρεηηθά κε απηφ, πεξηέρνληαη ζην ζηνηρείν <ds:KeyInfo>. Χζηφζν επεηδή είλαη πνιχ επηθίλδπλν λα πεξηέρεηαη ην θιεηδί ηεο απνθξππηνγξάθεζεο καδί κε ην θξππηνγξάθεκα ν απνζηνιέαο δίλεη έλα φλνκα ζην ζηνηρείν παηδί <ds:KeyName> ψζηε ν παξαιήπηεο λα επηιέμεη ην ζσζηφ θιεηδί. Αθφκε κία ηερληθή πνπ κπνξεί λα ρξεζηκνπνηήζεη ν απνζηνιέαο είλαη λα θξππηνγξαθήζεη ην θιεηδί ρξεζηκνπνηψληαο έλα αζχκκεηξν αιγφξηζκν κε ην

΢ει. 59 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

δεκφζην θιεηδί ηνπ παξαιήπηε. Σν ζηνηρείν <Ds:RetrievalMethod> φπσο θαη ζηηο ςεθηαθέο ππνγξαθέο XML κπνξεί λα πεξηέρεη έλα URI κε ηελ ηνπνζεζία πνπ βξίζθεηαη

ην

θιεηδί

απνθξππηνγξάθεζεο.

Σν

πξναηξεηηθφ

ζηνηρείν

<AgreementMethod> απνηειεί κία αθφκε ζηξαηεγηθή γηα λα γλσζηνπνηεζεί ην θιεηδί ζηνλ παξαιήπηε. Έλαο αιγφξηζκνο θξππηνγξάθεζεο δεκηνπξγεί έλα δηακνηξαδφκελν θιεηδί ζπλδπάδνληαο έλα θνηλφ κπζηηθφ θαη ην ηδησηηθφ θιεηδί ηνπ απνζηνιέα κε ην δεκφζην θιεηδί ηνπ παξαιήπηε. Ύζηεξα, ν απνζηνιέαο ηνπνζεηείηαη ζην ζηνηρείν παηδί <OriginatorKeyInfo> πιεξνθνξίεο ζρεηηθέο κε ην θνηλφ κπζηηθφ, ψζηε λα κπνξέζεη ν παξαιήπηεο λα αλαπαξάγεη ην θιεηδί γηα ηελ απνθξππηνγξάθεζε. Έλα πνιχ γλσζηφ πξσηφθνιιν πνπ ρξεζηκνπνηείηαη ζπλήζσο είλαη ην πξσηφθνιιν αληαιιαγήο θιεηδηνχ Deffie-Hellman. Ο αιγφξηζκνο απηφο παξάγεη έλα κνλαδηθφ κπζηηθφ αξηζκφ ζπλδπάδνληαο ην δεκφζην θιεηδί ηεο κίαο πιεπξάο κε ην ηδησηηθφ ηεο άιιεο. Ο αξηζκφο απηφο χζηεξα ρξεζηκνπνηείηαη γηα ηελ παξαγσγή ελφο ζπκκεηξηθνχ θιεηδηνχ πνπ ζα ρξεζηκνπνηεζεί γηα ηελ θξππηνγξάθεζε θαη απνθξππηνγξάθεζε ελφο αληηθεηκέλνπ. Σν

ζηνηρείν

<ChipperData>

πεξηέρεη

πιεξνθνξίεο

ζρεηηθά

κε

ην

θξππηνγξάθεκα. Η ηηκή ηνπ θξππηνγξαθήκαηνο βξίζθεηαη ζην ζηνηρείν παηδί <ChipperValue> ή ρξεζηκνπνηείηαη έλα URI πνπ δείρλεη ζηε ηνπνζεζία ηνπ θξππηνγξαθήκαηνο κε ηε ρξήζε ηνπ ζηνηρείνπ Μεηαζρεκαηηζκνί

(transformations)

<CipherReference URI>.

ππνζηεξίδνληαη

θαη

ζην

ζρήκα

ηεο

θξππηνγξάθεζεο XML φπσο θαη ζηηο ςεθηαθέο ππνγξαθέο σο πξναηξεηηθφ ζηνηρείν παηδί ηνπ <CipherReference URI>. Αθφκε κία νκνηφηεηα κε ηηο ςεθηαθέο ππνγξαθέο XML είλαη ε ρξήζε ηνπ ζηνηρείνπ <EncryptionProperties> πνπ ν ζθνπφο

ηνπ

είλαη

λα

πεξηέρεη

ρξήζηκεο

πιεξνθνξίεο

ζρεηηθέο

κε

ηε

θξππηνγξάθεζε. Η θξππηνγξάθεζε XML ππνζηεξίδεη ηελ θξππηνγξάθεζε ελφο ήδε θξππηνγξαθεκέλνπ ζηνηρείνπ θαη ιέγεηαη super encryption. Έλα θείκελν XML κπνξεί λα έρεη πνιιά δηαθνξεηηθά θξππηνγξαθεκέλα θνκκάηηα πνπ είλαη νξαηά ζε δηαθνξεηηθνχο

ρξήζηεο,

σζηφζν

γηα

πεξηζζφηεξε

αζθάιεηα

κπνξεί

λα

θξππηνγξαθεζεί νιφθιεξν ην θείκελν ψζηε λα κελ έρνπλ πξφζβαζε κε

΢ει. 60 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

εμνπζηνδνηεκέλνη ρξήζηεο. Ο κφλνο πεξηνξηζκφο ζηε super encryption είλαη φηη θάζε εμσηεξηθφ <EncryptionData> ζηνηρείν ζα πξέπεη λα θξππηνγξαθήζεη νιφθιεξν ην εζσηεξηθφ ζηνηρείν <EncryptionData> καδί κε ηα ζηνηρεία παηδηά ηνπ θαη φρη θάπνηα κεκνλσκέλα (Rosenberg et.al., 2004).

΢ρήκα 3.2.4 Παξάδεηγκα ρξήζεο ζηνηρείνπ ReferenceList [2].

Όηαλ θξππηνγξαθνχληαη δηαθνξεηηθά κέξε ελφο θεηκέλνπ XML κε ην ίδην θιεηδί είλαη ππεξβνιή λα εκθαλίδεηαη ην ζηνηρείν <KeyInfo> γηα θάζε κπινθ πνπ θξππηνγξαθείηαη. Έηζη ε ρξήζε ηνπ ζηνηρείνπ <ReferenceList> (ζρήκα 3.2.4) πεξηέρεη ηηο αλαθνξέο ησλ κπινθ πνπ ζα θξππηνγξαθεζνχλ θαη απνθεχγεηαη ε πεξηηηή επαλάιεςε.

΢ει. 61 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

3.2.2 Γηαδηθαζία Κξππηνγξάθεζεο θαη Απνθξππηνγξάθεζεο

Γηα λα θξππηνγξαθεζνχλ ζηνηρεία XML αθνινπζείηαη ε παξαθάησ δηαδηθαζία: 1. Δπηιέγεηαη ν αιγφξηζκνο θξππηνγξάθεζεο θαη νη παξάκεηξνί ηνπ. 2. Αλαθηάηαη ην θιεηδί. 3. Αλ ην θιεηδί πξφθεηηαη λα αλαγλσξηζηεί, δεκηνπξγείηαη έλα ζηνηρείν <KeyInfo>. 4. Σν θιεηδί θξππηνγξαθείηαη αλ πξφθεηηαη λα απνζηαιεί καδί κε ηα θξππηνγξαθεκέλα

δεδνκέλα

θαη

δεκηνπξγείηαη

έλα

ζηνηρείν

<EncryptedKey>, θαη ηνπνζεηείηαη κέζα ζην <KeyInfo> (ή θάπνην άιιν ζεκείν). 5. Κξππηνγξαθνχληαη ηα δεδνκέλα. Γηα δεδνκέλα XML, απηφ κπνξεί λα εκπιέθεη ηελ κεηαηξνπή ζε θσδηθνπνίεζε UTF-8 θαη ζεηξηνπνίεζε, δειαδή ηελ κεηαηξνπή ηεο δνκήο ζε κηα αθνινπζία απφ bytes. Σν απνηέιεζκα είλαη έλα octet string. 6. Γεκηνπξγείηαη ην ζηνηρείν <EncryptedData>. ΢ηελ πεξίπησζε πνπ ηα θξππηνγξαθεκέλα δεδνκέλα απνζεθεχνληαη κέζα ζην έγγξαθν αληί λα ππάξρεη απιά κηα αλαθνξά ζε απηά, ηφηε πξέπεη λα είλαη θσδηθνπνηεκέλα ζηε κνξθή base64. 7. Αληηθαζίζηαληαη ηα πξνο θξππηνγξάθεζε δεδνκέλα κέζα ζην ίδην ην έγγξαθν XML, κε ην ζηνηρείν <EncryptedData> (Καιηνηδφγινπ, 2006). Η δηαδηθαζία ηεο απνθξππηνγξάθεζεο είλαη ε εμήο: 1

Γίλεηαη

επεμεξγαζία

ηνπ

ζηνηρείνπ

<EncryptedData>

παξάκεηξνη, παξέρνληαη απφ ηελ εθαξκνγή)

΢ει. 62 από 195

(απξνζδηφξηζηεο


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

2

Αλαθηάηαη ην θιεηδί απνθξππηνγξάθεζεο.

3

Απνθξππηνγξάθεζε ελφο ζπκκεηξηθνχ θιεηδηνχ απφ έλα ηδησηηθφ ή αλάθηεζε απφ κηα ηνπηθή απνζήθε θιεηδηψλ, ζην δίζθν ηνπ ρξήζηε ή κηα έμππλε θάξηα

4

Απνθξππηνγξαθνχληαη ηα δεδνκέλα ζηε δνκή <CipherData>

5

Γίλεηαη επεμεξγαζία ησλ απνθξππηνγξαθεκέλσλ δεδνκέλσλ.

6

Δπαλαθνξά ησλ δεδνκέλσλ, πνπ κπνξεί λα έρνπλ θσδηθνπνηεζεί σο UTF-8, ζηελ αξρηθή ηνπο κνξθή.

7

Αληηθαηάζηαζε ησλ δεδνκέλσλ ζηελ αξρηθή ηνπο ζέζε κέζα ζηε δνκή ηνπ εγγξάθνπ XML.

8

΢ε κεξηθέο πεξηπηψζεηο, ελδέρεηαη λα απαηηείηαη θαη πεξαηηέξσ επεμεξγαζία (Καιηνηδφγινπ, 2006).

3.2.3 Κξππηνγξάθεζε XML θαη Φεθηαθέο Τπνγξαθέο XML

Η θξππηνγξάθεζε XML έρεη σο ζθνπφ λα παξέρεη εκπηζηεπηηθφηεηα ησλ κελπκάησλ πνπ αληαιιάζζνληαη αιιά δελ κπνξεί λα δηαζθαιίζεη ηελ αθεξαηφηεηά ηνπο. Η αθεξαηφηεηα ησλ κελπκάησλ κπνξεί λα επηηεπρζεί κε ηε ρξήζε ησλ ςεθηαθψλ ππνγξαθψλ. Δπνκέλσο ν ζπλδπαζκφο ησλ δχν πξνεγνχκελσλ πξνηχπσλ ρξεζηκνπνηείηαη γηα ηελ χπαξμε ησλ ηεζζάξσλ βαζηθψλ ζηνηρείσλ ηεο αζθάιεηαο πνπ πξναλαθέξακε ζην πξψην θεθάιαην. ΢ην παξάδεηγκα ηνπ ζρήκαηνο 3.2.5 ππνγξάθεηαη ην ζηνηρείν <EncryptedData> ψζηε λα εμαζθαιηζηεί ε αθεξαηφηεηα ηνπ θξππηνγξαθεκέλνπ ζηνηρείνπ. ΢ην παξάδεηγκα ηνπ ζρήκαηνο 3.2.6 θξππηνγξαθείηαη νιφθιεξε ε ππνγξαθή XML θαη δελ κπνξεί θαλείο λα γλσξίδεη φηη ην θείκελν πεξηέρεη κηα ππνγξαθή εθηφο απφ απηφλ πνπ θαηέρεη ην θιεηδί ηεο απνθξππηνγξάθεζεο. Αξρηθά ν παξαιήπηεο ζα απνθξππηνγξαθήζεη ην

΢ει. 63 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θείκελν θαη χζηεξα ζα θάλεη ηελ επηθχξσζε ηεο ππνγξαθήο γηα λα πηζηνπνηήζεη ηνλ παξαιήπηε. Χζηφζν, ην πξφβιεκα ηεο αθεξαηφηεηαο παξακέλεη. Αλ ην επίπεδν ηεο αζθάιεηαο είλαη αλάγθε λα είλαη πςειφ, ζα πξέπεη λα ππνγξαθεί μαλά ην θξππηνγξαθεκέλν κπινθ αθνινπζψληαο ηελ ηερληθή “sign –encrypt – sign“.

΢ρήκα 3.2.5 Παξάδεηγκα 1. Τπνγξαθή θξππηνγξαθεκέλνπ ζηνηρείνπ [2]

΢ει. 64 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.2.6 Κξππηνγξάθεζε ππνγξαθήο [2]

3.2.4 Απεηιέο Αζθάιεηαο ζηελ Κξππηνγξάθεζε XML

Η θξππηνγξάθεζε XML αληηκεησπίδεη πνιιέο θνηλέο απεηιέο αζθαιείαο κε ηηο ςεθηαθέο ππνγξαθέο XML θαζψο ηα πξφηππα έρνπλ πνιιά θνηλά ραξαθηεξηζηηθά. Οη επηζέζεηο πνπ έρνπλ σο ζεκείν θξνχζεο ην XPATH θαη XSLT είλαη πηζαλέο θαη ζηελ θξππηνγξάθεζε (Hill Bradley W., 2007). Η αλάιπζε ησλ εμσηεξηθψλ URI θαη ηδηαίηεξα ηνπ ζηνηρείνπ <RetrievalMethod> κπνξεί λα πξνθαιέζεη πξνβιήκαηα θαη ζε απηφ ην πξφηππν πξνθαιψληαο επηζέζεηο άξλεζεο

ππεξεζίαο.

Όηαλ

ρξεζηκνπνηνχληαη

ζπκκεηξηθνί

αιγφξηζκνη

θξππηνγξάθεζεο ην θξππηνγξάθεκα απνηειείηαη απφ αιπζηδσηά κπινθ (Cipher Block Chaining - CBC) πνπ αιιεινεμαξηψληαη γηα ηελ νξζή απνθξππηνγξάθεζε.

΢ει. 65 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Αλ θάπνηνο θαθφβνπινο ρξήζηεο θαηαθέξεη λα αληηθαηαζηήζεη θάπνην απφ ηα κπινθ ηφηε επεξεάδεη ηελ απνθξππηνγξάθεζε ηνπ θξππηνγξαθήκαηνο. Γηα λα απνθεπρζνχλ νη πξναλαθεξζείζεο επηζέζεηο ζηα SOAP κελχκαηα ρξεζηκνπνηείηαη ν ζπλδπαζκφο ησλ δχν πξνηχπσλ θαη ε ηερληθή “sign-encrypt-sign” (παξάγξαθνο 3.2.3).

3.3 Πξνδηαγξαθέο Γηαρείξηζεο Κιεηδηώλ κε XML (XKMS)

Η δηαρείξηζε ησλ θιεηδηψλ είλαη κηα δχζθνιε θαη πνιχπινθε δηαδηθαζία ζηηο ππεξεζίεο ηζηνχ. Σν πξφηππν δηαρείξηζεο θιεηδηψλ κε XML είλαη κία ππεξεζία πνπ δεκηνπξγήζεθε γηα ηελ εχθνιε δηαρείξηζε ησλ δεκφζησλ θιεηδηψλ. ΢ρεδηάζηεθε ψζηε λα ρξεζηκνπνηείηαη ζε ζπλδπαζκφ κε ηηο ςεθηαθέο ππνγξαθέο XML θαη ηελ θξππηνγξάθεζε XML παξέρνληαο αθεξαηφηεηα, εκπηζηεπηηθφηεηα θαη ηδησηηθφηεηα. Ο βαζηθφο ζθνπφο ηεο είλαη λα δηαρεηξίδεηαη κε επθνιία ζέκαηα εκπηζηνζχλεο πνπ έρνπλ λα θάλνπλ κε ηελ αθεξαηφηεηα ησλ θιεηδηψλ σο έλαο κεζάδσλ κεηαμχ ππεξεζίαο ηζηνχ θαη ππνδνκήο δεκφζηνπ θιεηδηνχ (public Keys Infrastructure PKI). Παξέρεη δειαδή έλα αζθαιέο πεξηβάιινλ ρξήζεο πξνο ηελ PKI πνπ ρξεζηκνπνηείηαη απφ κηα ππεξεζία ηζηνχ. Η εχθνιε δηαρείξηζε ησλ δεκφζησλ θιεηδηψλ επηηπγράλεηαη απνθνξηίδνληαο ηελ ππεξεζία XKMS απφ πνιχπινθεο δηαδηθαζίεο αλαζέηνληάο ηεο ζε κία PKI (O'Neill et al., 2003).

΢ρήκα 3.3.1 Η ζέζε ηνπ XKMS πξνηύπνπ [5]

΢ει. 66 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Μηα ππνδνκή δεκνζίνπ θιεηδηνχ είλαη επηθνξηηζκέλε κε ην δχζθνιν έξγν ηεο δηαζχλδεζεο κηαο ςεθηαθήο ππνγξαθήο κε έλα θπζηθφ πξφζσπν. Τπάξρνπλ πνιιέο ππνδνκέο δεκφζησλ θιεηδηψλ πνπ ζηεξίδνπλ ηελ επηηπρία ηνπο θπξίσο ζηα ςεθηαθά πηζηνπνηεηηθά. Μεξηθέο απφ απηέο είλαη ε Χ.509, πνπ μεθίλεζε σο ςεθηαθφ πηζηνπνηεηηθφ αιιά είλαη απφ ηηο πην δεκνθηιήο ππνδνκέο δεκφζησλ θιεηδηψλ. Η PGP (Pretty Good Privacy) είλαη κία αθφκε ππνδνκή πνπ ζρεδηάζηεθε απφ ηνλ Phil Zimmerman κε ηελ εμήο θηινζνθία: αλ είλαη θάπνηνο θάηνρνο ελφο δεκφζηνπ θιεηδηνχ κπνξεί λα εθδψζεη έλα πηζηνπνηεηηθφ. Με ηελ πάξνδν ηνπ ρξφλνπ νη βαζηθέο ππνγξαθέο πνπ δεκηνπξγνχληαη απφ κηα θνηλφηεηα ησλ ρξεζηψλ PGP δηακνξθψλνπλ έλαλ ηζηφ εκπηζηνζχλεο. Σν πξφηππν XKMS απνηειείηαη απφ δχν κέξε: 

Σηο Πξνδηαγξαθέο Παξνρήο Τπεξεζηψλ Πιεξνθνξηψλ κε XML (XML Key Information

Services

Specifications)

X-KISS

πνπ

θαζνξίδνπλ

έλα

πξσηφθνιιν γηα κία ππεξεζία εκπηζηνζχλεο. Η ππεξεζία απηή εθηειείηαη ζαλ κία ππεξεζία ηζηνχ θαη επηζηξέθεη ηελ πιεξνθνξία πνπ είλαη ζρεηηθή κε ηα ζηνηρεία <KeyInfo> πνπ πεξηέρνληαη ζηηο δνκέο ςεθηαθψλ ππνγξαθψλ XML θαη θξππηνγξάθεζεο XML. 

Σηο Πξνδηαγξαθέο Παξνρήο Τπεξεζηψλ Δγγξαθήο κε XML (XML Key Registration Service Specification) X-KRSS

πνπ θαζνξίδνπλ έλα

πξσηφθνιιν γηα κία ππεξεζία ηζηνχ πνπ δέρεηαη πιεξνθνξίεο γηα εγγξαθή, αλάθιεζε θαη αλάθηεζε δεκφζησλ θιεηδηψλ. Οη πξνδηαγξαθέο απηέο ζρεδηάζηεθαλ αξρηθά απφ ηελ Microsoft, ηελ VeriSign θαη ηελ WebMethods θαη πιένλ απνηεινχλ ζεκείσζε ηεο W3C. Σν πξσηφθνιιν XKMS ρξεζηκνπνηεί ην κεραληζκφ request/response (αίηεζεο/απάληεζεο). Κάζε αίηεκα αθνινπζείηαη απφ έλα κήλπκα απάληεζεο. Αλ εμαηξέζνπκε ην κήλπκα επηθαηξνπνίεζεο (Authentication Message) ηα ππφινηπα κελχκαηα θαηεγνξηνπνηνχληαη ζηνπο εμήο ηχπνπο:

΢ει. 67 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.3.2 Μελύκαηα πξσηνθόιινπ XKMS [2]

3.3.1 Τπεξεζία X-KISS

Όηαλ κηα ππεξεζία ηζηνχ ιάβεη έλα θξππηνγξαθεκέλν κήλπκα SOAP δελ κπνξεί λα πξνζπειάζεη θαη λα αλαιχζεη ηεο πιεξνθνξίεο γηα ην θιεηδί απνθξππηνγξάθεζεο πνπ βξίζθνληαη ζην ζηνηρείν <ds:KeyInfo>. Μπνξεί σζηφζν λα αλαθηήζεη ηηο πιεξνθνξίεο ηνπ θιεηδηνχ κέζσ ηεο ππεξεζίαο X-KISS πνπ αλαιχεη

ην

ζηνηρείν

<KeyInfo>.

Η

αλάιπζε

γίλεηαη

απφ

ηελ

X-KISS

ρξεζηκνπνηψληαο δεδνκέλα πνπ βξίζθνληαη είηε ηνπηθά είηε θάλνληαο αίηεζε ζε κηα ππεξεζία εκπηζηνζχλεο-trust service, ιεηηνπξγψληαο σο κηα πχιε εηζφδνπ ζε κηα PKI. Αξρηθά ε ππεξεζία X-KISS εληνπίδεη ηελ ηνπνζεζία πνπ βξίζθεηαη ην θιεηδί εθηειψληαο ηελ ιεηηνπξγία Locate. Ύζηεξα, επηζηξέθεη πιεξνθνξίεο ζρεηηθέο κε ην ςεθηαθφ πηζηνπνηεηηθφ πνπ ρξεζηκνπνηήζεθε ρσξίο λα είλαη επηθπξσκέλεο. Η ιεηηνπξγία Validate εθηειεί ηηο ίδηεο ιεηηνπξγίεο κε ηελ Locate κε ηε δηαθνξά φηη νη πιεξνθνξίεο πνπ επηζηξέθεη γηα ην θιεηδί είλαη επηθπξσκέλεο θαη έκπηζηεο.

΢ει. 68 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.3.3 Λεηηνπξγία Validate [2]

΢ην ζρήκα 3.3.3 έλαο client αηηείηαη απφ ηελ ππεξεζία XKMS

ηελ

πηζηνπνίεζε ελφο θιεηδηνχ. Η X-KISS κέζσ ηεο ιεηηνπξγίαο Validate βξίζθεη ηελ ηνπνζεζία ηνπ θιεηδηνχ αλαιχεη ηηο πιεξνθνξίεο ηνπ ζηνηρείνπ <KeyInfo> θαη κέζσ κίαο ππεξεζίαο εκπηζηνζχλεο επηθνηλσλεί κε ηελ PKI γηα λα επηθπξψζεη ην θιεηδί. Σειηθά, επηζηξέθεη πιεξνθνξίεο ζρεηηθά κε ην θιεηδί ζηνλ client.

3.3.2 Τπεξεζία X-KRSS

Η

πξνδηαγξαθή Χ-KRSS θαζνξίδεη έλα πξσηφθνιιν γηα κηα ππεξεζία

ηζηνχ πνπ δέρεηαη θαηαρψξεζε ησλ πιεξνθνξηψλ δεκφζησλ θιεηδηψλ. Μφιηο θαηαρσξεζεί, ην δεκφζην θιεηδί κπνξεί λα ρξεζηκνπνηεζεί απφ θνηλνχ κε ηελ XKISS, ή κηα ππνδνκή δεκφζηνπ θιεηδηνχ φπσο ηα X.509 θαη PKIX. Δίλαη αλεμάξηεηε απφ ηελ PKI πνπ ρξεζηκνπνηείηαη θαη απηφ νθείιεηαη ζηνλ ζρεδηαζκφ ηνπ πξνηχπνπ XKMS. Η Χ-KRSS πεξηγξάθεη έλα πξσηφθνιιν γηα ηελ θαηαρψξεζε θαη ηελ επαθφινπζε δηαρείξηζε ησλ πιεξνθνξηψλ δεκφζηνπ θιεηδηνχ.

΢ει. 69 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Σν πξσηφθνιιν επηηξέπεη ηελ πηζηνπνίεζε ηνπ αηηνχληνο θαη ζηελ πεξίπησζε πνπ ην δεπγάξη θιεηδηψλ παξάγεηαη απφ ηνλ πειάηε, απφδεημε ηεο θαηνρήο (Proof of Possession) ηνπ ηδησηηθνχ θιεηδηνχ. Έλα κέζν ηεο κεηάδνζεο ηνπ ηδησηηθνχ θιεηδηνχ ζηνλ πειάηε παξέρεηαη ζηελ πεξίπησζε πνπ ην ηδησηηθφ θιεηδί παξάγεηαη απφ ηελ ππεξεζία θαηαρψξεζεο. Η πξνδηαγξαθή Χ-KRSS ππνζηεξίδεη ηηο ιεηηνπξγίεο πνπ αλαθέξνληαη παξαθάησ. ΢εκεηψλεηαη φηη κηα ππεξεζία XKMS κπνξεί λα πξνζθέξεη φιεο ή θακία απφ απηέο ηηο ιεηηνπξγίεο. 

Register: Η πιεξνθνξία ζπλδέεηαη ζε έλα δεπγάξη δεκφζηνπ θιεηδηνχ κέζσ κηαο ζχλδεζεο θιεηδηνχ.

Reissue: Μηα ππάξρνπζα θαηαρσξεκέλε ζχλδεζε θιεηδηνχ επαλεθδίδεηαη.

Revoke: Μηα ππάξρνπζα θαηαρσξεκέλε ζχλδεζε θιεηδηνχ αλαθαιείηαη.

Recover: Σν ηδησηηθφ θιεηδί πνπ ζπλδέεηαη κε κηα ζχλδεζε θιεηδηνχ αλαθηάηαη.

3.3.3 Πιενλεθηήκαηα ηεο XKMS

Η XKMS έρεη πνιιά πιενλεθηήκαηα, ηα ζεκαληηθφηεξα απφ ηα νπνία είλαη: 

Δπθνιία ζηε ρξήζε: Η θηιηθή γηα ηνλ πξνγξακκαηηζηή ζχληαμε ηεο XKMS, εμαιείθεη ηελ αλάγθε γηα εξγαιεία PKI. Η πξνδηαγξαθή XKMS επηηξέπεη

ζηνπο

πξνγξακκαηηζηέο

λα

πινπνηνχλ

γξήγνξα

ραξαθηεξηζηηθά εκπηζηνζχλεο, πνπ ελζσκαηψλνπλ θξππηνγξαθηθή ππνζηήξημε

γηα

ηηο

XML

ςεθηαθέο

ππνγξαθέο

θαη

ηελ

XML

θξππηνγξάθεζε ρξεζηκνπνηψληαο ηα ηππνπνηεκέλα εξγαιεία XML. 

Γξήγνξε ζηελ αλάπηπμε: Με ηελ απινχζηεπζε ηεο αλάπηπμεο εθαξκνγψλ, ε XKMS αθαηξεί ηελ αλάγθε γηα αλάπηπμε PKI θαη αληί απηνχ, κεηαθηλεί ηελ πνιππινθφηεηα ηνπ PKI ζηα ηκήκαηα απφ ηελ

΢ει. 70 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

πιεπξά ηνπ δηαθνκηζηή. 

Αλνηθηφ πξφηππν: Η XKMS είλαη έλα αλνηθηφ πξφηππν γηα δηαλνκή θαη θαηαρψξηζε θιεηδηψλ.

Αληνρή ζην ρξφλν: Τπνζηεξίδεη ηηο λέεο θαη αλαδπφκελεο εμειίμεηο ηνπ PKI, δεδνκέλνπ φηη νη κειινληηθέο εμειίμεηο PKI είλαη πεξηνξηζκέλεο ζε ζπζηαηηθά απφ ηελ πιεπξά ηνπ server.

3.4 Γιώζζα Πξνδηαγξαθήο Ιζρπξηζκώλ Αζθάιεηαο ‐ SAML

Η γιψζζα πξνδηαγξαθήο ηζρπξηζκψλ αζθάιεηαο (Security Assertion Markup Languag - SAML) είλαη έλα πξφηππν βαζηζκέλν ζηελ XML. Ο ζθνπφο ηεο SAML είλαη λα θαζνξίζεη µηα πξφηππε αλαπαξάζηαζε δεδνκέλσλ αζθάιεηαο πνπ λα είλαη αλαγλσξίζηκε απφ δηαθνξεηηθέο ππεξεζίεο αζθάιεηαο δηαθνξεηηθψλ ππεξεζηψλ ηζηνχ, αλεμάξηεηα απφ ηηο ηερλνινγίεο ή ηηο πνιηηηθέο πνπ ρξεζηκνπνηνχλ.

Με

ην

πξφηππν

απηφ

ιχλνληαη

ηα

πξνβιήκαηα

δηαιεηηνπξγηθφηεηαο θαη πξνζβαζηκφηεηαο κεηαμχ ησλ ππεξεζηψλ αζθάιεηαο ζηηο δηάθνξεο ππεξεζίεο ηζηνχ. Μπνξεί δειαδή κηα ππεξεζία λα ιεηηνπξγήζεη σο ζεκείν πξφζβαζεο γηα ηηο ππφινηπεο απφ ηε ζηηγκή πνπ ε απζεληηθνπνίεζε ηνπ ρξήζηε γίλεη ζηελ πξψηε ππεξεζία. Η ηερληθή απηή είλαη γλσζηή σο Sigle Sign On (SSO). Απνηειεί επίζεο έλα είδνο ππνδνκήο δηαρείξηζεο δηθαησκάησλ (Permission Management Infrastructure - PMI). Πξηλ απφ ηελ SAML, νη πινπνηήζεηο PMI έπξεπε λα βαζηζηνχλ ζε πνιχπινθα θαη αζχκβαηα παθέηα ινγηζκηθνχ απφ δηάθνξεο εηαηξίεο (Rosenberg et.al., 2004). Απηή ηε ζηηγκή ην πξφηππν βξίζθεηαη ζηελ δεχηεξε έθδνζε ζχκθσλα κε ηελ OASIS (Organization for the Advancement of Structured Information Standards) πνπ είλαη θαη ν δεκηνπξγφο ηνπ. Η SAML δηαζέηεη ηξεηο δηαθνξεηηθνχο κεραληζκνχο πνπ είλαη νη εμήο: 

Ιζρπξηζκνί (Assertions): Δίλαη έλα XML ζρήκα γηα ην πξνζδηνξηζκφ ησλ

΢ει. 71 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ηζρπξηζκψλ αζθάιεηαο πνπ εθδίδνληαη απφ θάπνηα αξρή ηεο SAML πνπ κπνξεί λα δξνπλ σο αξρέο απζεληηθνπνίεζεο, αξρέο ραξαθηεξηζηηθψλ ή ζεκεία απνθάζεσλ πνιηηηθψλ αζθάιεηαο. 

Πξσηφθνιιν (Protocol): Οη αηηήζεηο κεηαμχ ησλ ππεξεζηψλ θαη ε αληαιιαγή κελπκάησλ γίλνληαη κε ηε ρξήζε ελφο πξσηνθφιινπ client/server.

Γεζκεχζεηο (Bindings): Οη δεζκεχζεηο είλαη νη θαλφλεο ρξήζεο ησλ ηζρπξηζκψλ ζηα πιαίζηα εξγαζίαο (frameworks). Απηνί νη θαλφλεο πεξηγξάθνληαη σο ζχλνιν ζπλδέζεσλ θαη πξσηνθφιισλ.

΢ρήκα 3.4.1 Η ζρέζε κεηαμύ ησλ κεραληζκώλ ηεο SAML [2]

Σν πξφηππν θαζνξίδεη ηξία δηαθνξεηηθά είδε ηζρπξηζκψλ πνπ κπνξνχλ λα δεκηνπξγεζνχλ απφ µηα αξρή ηεο SAML:

΢ει. 72 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Απζεληηθνπνίεζε:

Τπνδεηθλχεη

φηη

ε

θαζνξηζκέλε

ηαπηφηεηα

έρεη

απζεληηθνπνηεζεί απφ µηα δεδνκέλε αξρή ζε έλα δεδνκέλν ρξφλν. 

Υαξαθηεξηζηηθφ: Η θαζνξηζκέλε ηαπηφηεηα είλαη ζπλδεδεκέλε µε ηα θαζνξηζκέλα ραξαθηεξηζηηθά.

Απφθαζε ειέγρνπ πξφζβαζεο: Απνθαζίδεη γηα ηνλ έιεγρν πξφζβαζεο ζε έλαλ πφξν βαζηζκέλε ζε µηα αίηεζε ειέγρνπ πξφζβαζεο.

3.4.1 Παξάδεηγκα Υξήζεο SAML

Έζησ φηη έλαο ρξήζηεο κηαο ππεξεζίαο ηαμηδησηηθνχ γξαθείνπ πξνζπαζεί λα νξγαλψζεη ηηο δηαθνπέο ηνπ κέζσ. Η ππεξεζία ηνπ ηαμηδησηηθνχ γξαθείνπ ζπλεξγάδεηαη γηα ηελ παξνρή θαιχηεξσλ πξνζθνξψλ κε κία ππεξεζία θξάηεζεο αεξνπνξηθψλ εηζηηεξίσ��, κηα ππεξεζία θξάηεζεο δσκαηίσλ θαη κηα ππεξεζία θξάηεζεο απηνθηλήησλ. Γηα λα απνθηήζεη πξφζβαζε ν ρξήζηεο ζε απηέο ηηο ππεξεζίεο θαη λα θάλεη θξάηεζε ρξεηάδεηαη λα έρεη θαηαρσξήζεη ζηε θάζε κία ηα πξνζσπηθά ηνπ ζηνηρεία θαη ηα ζηνηρεία ηεο πηζησηηθήο ηνπ θάξηαο. Απηφ ζεκαίλεη φηη έρεη αθνινπζήζεη ηε δηαδηθαζία απηή ηνπιάρηζηνλ ηέζζεξεηο θνξέο κηαο θαη νη ππεξεζίεο έρνπλ δηαθνξεηηθνχο δηαθνκηζηέο πνπ δηαρεηξίδνληαη ηα ζπλζεκαηηθά. Με ηε ρξήζε ηεο SAML ν ρξήζηεο κπνξεί λα απνθηήζεη πξφζβαζε ζε φιεο ηηο ππεξεζίεο εηζάγνληαο ηα ζηνηρεία ηνπ κφλν ζηελ ππεξεζία ηνπ ηαμηδησηηθνχ γξαθείνπ ζρήκα. 3.4.1. Αξρηθά ν ρξήζηεο εηζάγεη ηα ζπλζεκαηηθά ηνπ ζηελ ππεξεζία traveling.com θαη απηφκαηα απνθηά έλα ηζρπξηζκφ SAML, κέζσ ηεο αξρήο απζεληηθνπνίεζεο, σο απφδεημε ηεο απζεληηθφηεηάο ηνπ. Ύζηεξα ν ρξήζηεο γηα λα θάλεη κηα θξάηεζε αεξνπνξηθψλ εηζηηεξίσλ κέζσ ηεο ππεξεζίαο ChosenAirline.com πξέπεη λα απνθηήζεη πξφζβαζε ζε απηή. Οπφηε ν ρξήζηεο γηα λα απνθηήζεη πξφζβαζε, δεκηνπξγεί κηα αίηεζε πξφζβαζεο γηα ηνλ πφξν θαη ηελ ζηέιλεη ζηελ ππεξεζία αζθάιεηαο ηεο ChosenAirline.com καδί κε ηνλ ηζρπξηζκφ απζεληηθνπνίεζεο ηνπ. Η

΢ει. 73 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ππεξεζία

αζθάιεηαο

αξρηθά

ειέγρεη

ηελ

εγθπξφηεηα

ηνπ

ηζρπξηζκνχ

απζεληηθνπνίεζεο θαη χζηεξα κεηαβηβάδεη ην αίηεκα καδί κε ηνλ ηζρπξηζκφ απζεληηθνπνίεζεο ζηελ αξρή ραξαθηεξηζηηθψλ ηεο SAML αηηψληαο ηεο έλα ηζρπξηζκφ ραξαθηεξηζηηθψλ. Αθνχ ιάβεη ε ππεξεζία αζθάιεηαο ηνλ ηζρπξηζκφ ραξαθηεξηζηηθνχ δεκηνπξγεί κηα αίηεζε έιεγρνπ πξφζβαζεο καδί κε ηνλ πφξν θαη ηνλ ηζρπξηζκφ ραξαθηεξηζηηθνχ ζηελ αξρή ειέγρνπ πξφζβαζεο. Η αξρή ειέγρνπ πξφζβαζεο απνθαίλεηαη γηα ην αλ ζα δψζεη πξφζβαζε ζην ρξήζηε, κέζσ ησλ δηαζπλδέζεσλ θαη ηεο πνιηηηθήο πξφζβαζεο πνπ έρεη δεκηνπξγεζεί γηα ηνλ ρξήζηε. Σέινο, επηζηξέθεη ζηελ ππεξεζία αζθάιεηαο ηνλ ηζρπξηζκφ πξφζβαζεο ε νπνία δίλεη πξφζβαζε ζηε θφξκα δεκηνπξγίαο θξαηήζεσλ αεξνπνξηθψλ εηζηηεξίσλ.

΢ρήκα 3.4.2 Single sign On [2]

Με απηφ ηνλ ηξφπν επηηπγράλεηαη ε κνλαδηθή πξφζβαζε (SSO) ζηηο ππεξεζίεο πνπ εθηφο απφ ηε θνξεηφηεηα ηεο ηαπηφηεηαο πξνζζέηεη πεξηζζφηεξε αζθάιεηα θαζψο κεηψλνληαη νη πηζαλφηεηεο γηα επηζέζεηο phishing. Ο ρξήζηεο

΢ει. 74 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

γίλεηαη πεξηζζφηεξν θαρχπνπηνο γηα ην πφηε θαη πνχ πξέπεη λα δψζεη ηα ζπλζεκαηηθά ηνπ. Αθφκε εμαιείθεηαη ην θφζηνο ππνζηήξημεο ησλ πειαηψλ ζε πεξίπησζε απψιεηαο ζπλζεκαηηθψλ.

΢ρήκα 3.4.3 Ιζρπξηζκόο πξόζβαζεο ζε έλα πόξν

3.5 Δπεθηάζηκε Γιώζζα Διέγρνπ Πξόζβαζεο ‐ XACML

H XACML είλαη βαζηζκέλε ζηελ XML θαη ν ζθνπφο ηεο είλαη λα επηηξέπεη ηελ επηθνηλσλία ησλ πνιηηηθψλ αζθάιεηαο κεηαμχ δηαθνξεηηθψλ ππεξεζηψλ ηζηνχ ή εηαηξηψλ. Γεκηνπξγήζεθε απφ ηελ OASIS ηνλ Φεβξνπάξην ηνπ 2003 θαη απηή ηε ζηηγκή βξίζθεηαη ζηελ ηξίηε έθδνζε. Πξνηνχ δεκηνπξγεζεί ε XACML ε θάζε εηαηξία είρε ην δηθφ ηεο δηαθνξεηηθφ ηξφπν δεκηνπξγίαο θαη έθθξαζεο ηεο πνιηηηθήο αζθάιεηαο κε απνηέιεζκα ε επηθνηλσλία κεηαμχ δχν εηαηξηψλ λα είλαη πνιχπινθε έσο αδχλαηε. Η έλλνηα ηνπ SSO δελ κπνξνχζε λα ρξεζηκνπνηεζεί θαη ε δηαιεηηνπξγηθφηεηα κεηαμχ δχν εηαηξηψλ πξνυπφζεηε ηελ ζχγθιηζε ηεο κνξθήο έθθξαζεο ηεο πνιηηηθήο αζθάιεηαο ησλ δχν εηαηξηψλ. Η XACML ρξεζηκνπνηείηαη γηα λα ιχζεη ην πξφβιεκα απηφ θαζψο δελ είλαη εμαξηψκελε απφ ην ζχζηεκα πνπ εθαξκφδεη ηηο πνιηηηθέο αζθάιεηαο. Η αλάπηπμε πνιηηηθψλ αζθάιεηαο απφ ηνπο πξνγξακκαηηζηέο θαη ε εθαξκνγή ηνπο κε ηελ XACML γίλεηαη ζε κηθξφηεξν ρξνληθφ δηάζηεκα ζε ζρέζε κε αληίζηνηρεο ηερλνινγίεο. Αθφκε κπνξεί λα δηαρεηξηζηεί δεδνκέλα θαη πιεξνθνξίεο πνπ είλαη ζηε κνξθή XML θεηκέλνπ αιιά

΢ει. 75 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θαη δηαθνξεηηθήο κνξθήο φπσο είλαη νη ζρεζηαθέο βάζεηο δεδνκέλσλ θαζψο θαη δεδνκέλα απφ δηαδηθηπαθέο εθαξκνγέο. Η XACML κπνξεί λα ρξεζηκνπνηεζεί ζε ζπλδπαζκφ κε ηελ SAML (παξάγξαθνο 3.4). Αλ έλαο ρξήζηεο δεηήζεη πξφζβαζε ζε κία ππεξεζία κέζσ ηνπ πξσηφθνιινπ ηεο SAML ηφηε ζα πξέπεη λα παξζεί κία απφθαζε κέζσ κηαο πνιηηηθήο αζθάιεηαο πνπ έρεη δεκηνπξγεζεί γηα ην ζπγθεθξηκέλν ρξήζηε. Η πνιηηηθή απηή κπνξεί λα εθθξαζηεί κέζσ ηεο XACML. Οη πνιηηηθέο αζθάιεηαο βαζίδνληαη ζηα δηθαηψκαηα πξφζβαζεο πνπ δίλνληαη ζε έλα ρξήζηε ή ζε έλα ζχζηεκα. Σα δηθαηψκαηα νκαδνπνηνχληαη ζπλήζσο ζε ιίζηεο ειέγρνπ πξφζβαζεο (Access Control Lists – ACL) πνπ ζπλδένπλ θάζε ρξήζηε θαη ηα δηθαηψκαηά ηνπ κε ηνπο αληίζηνηρνπο πφξνπο. Σα δηθαηψκαηα δηαρσξίδνληαη ζε ηξείο θαηεγνξίεο πνπ είλαη ην δηθαίσκα αλάγλσζεο (read) ελφο πφξνπ, εγγξαθήο (write) θαη εθηέιεζεο (execute). Ο έιεγρνο πξφζβαζεο κπνξεί αθφκε λα θαηεγνξηνπνηεζεί ζχκθσλα κε ην ξφιν ηνπ θάζε ρξήζηε (Role-Base Access Control -RBAC). Με απηή ηελ ηερληθή κπνξνχλ λα δεκηνπξγεζνχλ θαλφλεο αζθάιεηαο ζχκθσλα κε ηνπο πξαγκαηηθνχο ξφινπο πνπ έρνπλ ηα άηνκα κηαο εηαηξίαο ή ελφο νξγαληζκνχ φπσο γηα παξάδεηγκα ν νηθνλνκηθφο δηεπζπληήο κηα εηαηξίαο κπνξεί λα έρεη πιήξε δηθαηψκαηα πξφζβαζεο ζε φια ηα νηθνλνκηθά δεδνκέλα ηεο εηαηξίαο, ελψ νη ππάιιεινη ηνπ ινγηζηεξίνπ λα ζηεξνχληαη ην δηθαίσκα δηαγξαθήο κίαο πιεξνθνξίαο. Οη πνιηηηθέο αζθάιεηαο δεκηνπξγνχληαη απφ ηελ XACML ζε ζπλδπαζκφ κε ηνπο θαλφλεο αζθάιεηαο. Οη θαλφλεο αζθάιεηαο ηεο δίλνπλ επειημία γηαηί κπνξεί λα θαιχςεη πεξηζζφηεξα ζελάξηα αζθάιεηαο. Έλαο θαλφλαο XACML απνηειείηαη απφ ηξία κέξε: 

Σνλ ζηφρν (Target) πνπ απνηειεί ηελ πεξηγξαθή ησλ δηθαησκάησλ πνπ επξφθεηην λα δνζνχλ γηα έλα πφξν, φπσο είλαη έλα θείκελν κηα ππεξεζία ή έλα ζχζηεκα, απφ έλα ρξήζηε ή έλα άιιν ζχζηεκα.

Σελ επίδξαζε (Effect) πνπ ζα έρεη ε εθαξκνγή ηνπ θαλφλα ζηνλ πφξν. Μπνξεί λα έρεη δχν ηηκέο allow / deny.

΢ει. 76 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Οη ζπλζήθεο (Conditions) κπνξνχλ λα εθαξκνζηνχλ ζε έλα θαλφλα δίλνληαο ηνπ ηελ ηδηφηεηα λα ιεηηνπξγεί δπλακηθά. Μηα πηζαλή ζπλζήθε κπνξεί λα είλαη ν ψξα πξφζβαζεο ζε έλα πφξν. Αλ δειαδή ζε κία ηξάπεδα πξέπεη λα εμαζθαιηζηεί ε πξφζβαζε ζε επαίζζεηεο πιεξνθνξίεο

ηφηε

κπνξεί λα νξηζηεί κηα ρξνλνζπξίδα πξφζβαζεο. Οη θαλφλεο κπνξνχλ λα θάλνπλ ρξήζε ησλ βαζηθψλ καζεκαηηθψλ πξάμεσλ γηα λα ππνζηεξίμνπλ ηνλ ππνινγηζκφ ησλ ζπλζεθψλ κέζσ ζπλαξηήζεσλ. Μπνξεί δειαδή λα ρξεζηκνπνηήζεη ζην πξνεγνχκελν παξάδεηγκα κηα ζπλάξηεζε γηα λα ππνινγίζεη αλ ε ψξα πνπ αηηείηαη ε πξφζβαζε ζην πφξν ηαηξηάδεη κε ηε ρξνλνζπξίδα. Αθφκε, έλα ραξαθηεξηζηηθφ ησλ θαλφλσλ είλαη νη “ππνρξεψζεηο” (Obligations) πνπ κπνξεί λα νξίζεη σο έλα πξφζζεην κέηξν αζθάιεηαο. Αλ γηα παξάδεηγκα δνζεί ζε έλα ρξήζηε πιήξεο πξφζβαζε ζε έλα πφξν γηα πξψηε θνξά, ν θαλφλαο ηνλ ππνρξεψλεη λα ζηείιεη έλα e-mail ζηελ ππεξεζία πνπ ηνπ έδσζε πξφζβαζε κε ζθνπφ ηε δεκηνπξγία ελφο αξρείνπ θαηαγξαθήο πξφζβαζεο (log access file).

3.5.1 Παξάδεηγκα Xξήζεο ηεο XACML

Σν ζρήκα 3.5.1 πεξηγξάθεη έλα παξάδεηγκα κηαο ππεξεζίαο ηζηνχ πνπ ζηέιλεη έλα αίηεκα πξφζβαζεο πξνο ηελ ππεξεζία SAML θαη XACML. Σα δχν πξφηππα αιιεινζπκπιεξψλνληαη θαζψο ε SAML κπνξεί λα δηαρεηξίδεηαη ηηο αηηήζεηο θαη λα παίξλεη ηηο απνθάζεηο κέζσ ησλ πνιηηηθψλ αζθάιεηαο πνπ έρνπλ δεκηνπξγεζεί απφ ηελ XACML. ΢ην πξψην βήκα ηνπ ζρήκαηνο κία ππεξεζία ζηέιλεη έλα SOAP κήλπκα πνπ πεξηέρεη έλα αίηεκα πξφζβαζεο ελφο ρξήζηε ζε έλα πφξν. Σν κήλπκα κεηαθξάδεηαη απφ ηελ SAML εμάγνληαο ηελ ηαπηφηεηα ηνπ ρξήζηε, απφ έλα ςεθηαθφ πηζηνπνηεηηθφ, θαη ην αίηεκα πξφζβαζεο ζηνλ πφξν. Σν ΢εκείν Δθαξκνγήο Πνιηηηθήο (Policy Enforcement Point - PEP) ρξεζηκνπνηεί ηα δεδνκέλα απηά γηα λα δεκηνπξγήζεη έλα εξψηεκα απφθαζεο SAML γηα εμνπζηνδφηεζε ηνπ ρξήζηε ζηνλ πφξν. ΢ην δεχηεξν βήκα ην εξψηεκα

΢ει. 77 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

απνζηέιιεηαη ζην ΢εκείν Απφθαζεο Πνιηηηθήο (Policy Decision Point – PDP) πνπ απνθαζίδεη γηα ην εξψηεκα κέζσ ιήςεο ηεο πνιηηηθήο πνπ έρεη δεκηνπξγεζεί γηα ην ρξήζηε απφ ην ΢εκείν Αλάθηεζεο Πνιηηηθήο (Policy Retrieval Point – PRP). To PRP αλ δελ έρεη πξνζπειάζεη μαλά ηελ αληίζηνηρε πνιηηηθή, επηθνηλσλεί κε έλα ζεκείν απνζήθεπζεο πνιηηηθψλ αζθάιεηαο (βήκα ηέζζεξα). Η πνιηηηθή πνπ αληηζηνηρεί ζηελ ηαπηφηεηα ηνπ ζπγθεθξηκέλνπ ρξήζηε έρεη δεκηνπξγεζεί απφ έλα ΢εκείν Γηαρείξηζεο Πνιηηηθψλ XACML (Policy Administration Point -PAP) βάζε ελφο αιγφξηζκνπ πνπ ζπλδπάδεη θαλφλεο. Αθνχ αλαθηεζεί ε πνιηηηθή, γίλεηαη δηαζέζηκε ζην PDP (βήκα πέληε). Σν PDP αηηείηαη πιεξνθνξίεο απφ ην ΢εκείν Πιεξνθνξηψλ Πνιηηηθήο (Policy Information Point-PIP) γηα λα ππνινγίζεη ην θαηεγφξεκα ελφο θαλφλα. Σν θαηεγφξεκα ζε έλα θαλφλα απνηειεί ηελ ηθαλφηεηα αίηεζεο ελφο ζηνηρείνπ. Σν ζηνηρείν απηφ κπνξεί λα απνηειεί έλα ξφιν απφ έλα ζχζηεκα RBAC ή ηελ ηξέρνπζα ψξα γηα λα ππνινγηζηεί κηα ζπλάξηεζε ζπλζήθεο ελφο θαλφλα. Οη πιεξνθνξίεο ηνπ ζηνηρείν επηζηξέθνληαη απφ ην PIP ζην PAP ζηε κνξθή ελφο ηζρπξηζκνχ ζηνηρείνπ SAML (Βήκα επηά). Απφ ηε ζηηγκή πνπ ην PAP έρεη ζηε δηάζεζή ηνπ φζεο πιεξνθνξίεο ρξεηάδεηαη γηα λα ιάβεη ηελ απφθαζε, αμηνινγεί ηνλ θαλφλα θαη ζηε πεξίπησζε πνπ δίλεηαη ε πξφζβαζε ζην ρξήζηε επηζηξέθεη ζην PEP έλα ηζρπξηζκφ εμνπζηνδφηεζεο SAML (βήκα νθηψ). Οη θαλφλεο ηεο πνιηηηθήο εθαξκφδνληαη απφ ην ΢εκείν Δπηβνιήο Πνιηηηθήο πνπ ζα κπνξνχζε λα απνηειεί κηα ππεξεζία ηζηνχ πνπ ιακβάλεη αηηήζεηο πξφζβαζεο γηα πφξνπο θαη γηα λα δεηήζεη πξφζβαζε γηα απηνχο λα επηθνηλσλεί κε έλα PDP. Σν PDP απηφ κπνξεί λα βξίζθεηαη ζε δηαθνξεηηθφ ζεκείν θαη ν θαλφλαο λα εθαξκφδεηαη απφ ηελ ππεξεζία ηζηνχ πνπ ιακβάλεη ην αίηεκα (βήκα 9) (O'Neill et al, 2003).

΢ει. 78 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 3.5.1 Γηάγξακκα αξρηηεθηνληθήο XACML [5]

3.6 Γηαρείξηζε Πιεξνθνξίαο Μέζσ ηεο Γιώζζαο Γηθαησκάησλ XrML

Η XrML (eXtensible Rights Markup Language) είλαη κία γιψζζα βαζηζκέλε ζηελ XML θαη έρεη σο ζθνπφ ηελ δεκηνπξγία πλεπκαηηθψλ δηθαησκάησλ

ζηηο

πιεξνθνξίεο πνπ κεηαθέξνληαη ζην δηαδίθηπν αιιά θαη ζηηο δηάθνξεο ππεξεζίεο ηζηνχ. Ο ζρεδηαζκφο ηεο έρεη γίλεη κε ηέηνην ηξφπν ψζηε λα είλαη ζπκβαηή κε δηάθνξεο ηερλνινγίεο. Τπνζηεξίδεη έλα κεγάιν εχξνο απφ επηρεηξεζηαθά πξφηππα πνπ δηαρεηξίδνληαη ειεχζεξν ε εκπνξηθφ ειεθηξνληθφ πεξηερφκελν αμηνινγψληαο ην αλάινγα κε ην ζθνπφ ρξήζεο ηνπο. H XrML έρεη ηελ ηθαλφηεηα λα δεκηνπξγήζεη θαη λα ρεηξηζηεί απιά κνληέια δηθαησκάησλ φπσο θαζεκεξηλά θείκελα πνπ αληαιιάζνπλ κεηαμχ ηνπο ππάιιεινη κηαο εηαηξίαο αιιά θαη πνιχπινθα κνληέια φπσο κηα ππεξεζία ειεθηξνληθνχ βίληεν club.

΢ει. 79 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Σν κνληέιν δεδνκέλσλ ηεο XrML απνηειείηαη απφ ηέζζεξεηο νληφηεηεο θαη απφ ηηο ζρέζεηο πνπ έρνπλ κεηαμχ ηνπο. Η πην ζεκαληηθή ζρέζε ηεο είλαη ν ηζρπξηζκφο “ρνξήγεζε δηθαησκάησλ” Grant. H δνκή ηνπ Grant απνηειείηαη απφ ηηο εμήο νληφηεηεο: 

Principle: Σνλ απνδέθηε πνπ ρνξεγνχληαη ηα δηθαηψκαηα.

Right: Σα δηθαηψκαηα πνπ ρνξεγνχληαη.

Resource: Η πεγή γηα ηελ νπνία ρνξεγνχληαη ηα δηθαηψκαηα

Condition: Ο φξνο πνπ πξέπεη λα πιεξείηαη γηα ηελ ρνξήγεζε ησλ δηθαησκάησλ.

΢ρήκα 3.6.1 Η δνκή ηεο XrML θαη νη ζρέζεηο κεηαμύ ηνπο [2]

Η πξψηε νληφηεηα -Principle αλαθέξεηαη ζην άηνκν πνπ ζα ιάβεη ηα δηθαηψκαηα δίλνληαο θάπνην δηαπηζηεπηήξην φπσο είλαη έλα ςεθηαθφ πηζηνπνηεηηθφ Χ.509 ή κία ςεθηαθή ππνγξαθή. Αλ ε απζεληηθνπνίεζε ηνπ είλαη επηηπρήο ηφηε ζα ηνπ ρνξεγεζνχλ ηα δηθαηψκαηα. Η νληφηεηα Right είλαη ζηελ νπζία ην ξήκα πνπ πεξηγξάθεη ηα δηθαηψκαηα γηα κία πιεξνθνξία, φπσο ν ρξήζηεο Α έρεη ην δηθαίσκα λα πξνζπειάζεη, δηαβάζεη, εθηππψζεη, πξνσζήζεη ην έγγξαθν Β. Η νληφηεηα Resource πεξηγξάθεη ηελ πιεξνθνξία πνπ ζα δνζνχλ ηα δηθαηψκαηα

΢ει. 80 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

φπσο είλαη έλα ειεθηξνληθφ βηβιίν, κηα ηαηλία ή αθφκε θαη κία εηθφλα. Η ηειεπηαία νληφηεηα Condition πξνζδηνξίδεη ηνπο φξνπο ή ηηο ζπλζήθεο πνπ πξέπεη λα πιεξνχληαη ψζηε λα δνζνχλ ηα δηθαηψκαηα (Rosenberg et al, 2004). Μεξηθά παξαδείγκαηα είλαη νη ρξνλνζπξίδεο γηα θάπνηεο ππεξεζίεο ηζηνχ πνπ ιεηηνπξγνχλ ζαλ δαλεηζηηθέο βηβιηνζήθεο ε βίληεν club.

Δπίινγνο

΢ην θεθάιαην απηφ αλαθέξζεθαλ νη ηερλνινγίεο πνπ έρνπλ σο βάζε ηελ XML θαη ζπκβάινπλ ζηελ δεκηνπξγία ηεο αζθάιεηαο ππεξεζηψλ ηζηνχ. Απνηειεί ππφβαζξν γηα ηελ θαιχηεξε θαηαλφεζε ηνπ πξνηχπνπ WSS πνπ ζα παξνπζηαζηεί ζην πέκπην θεθάιαην. Σα πξνεγνχκελα πξφηππα είλαη πνιχ επέιηθηα θαη αλεμάξηεηα απφ ηερλνινγηθέο πιαηθφξκεο. Παξνπζηάδνπλ αξθεηέο αδπλακίεο αθήλνληαο αλνηρηέο θάπνηεο πφξηεο αζθάιεηαο. Χζηφζν πνιιέο απφ απηέο ηηο απεηιέο κπνξνχλ λα πξνιεθζνχλ ρξεζηκνπνηψληαο ηηο ελδεδεηγκέλεο ζηξαηεγηθέο ρξήζεο ηνπο γηα ηελ αλάπηπμε ηνπ απαηηνχκελνπ επηπέδνπ αζθάιεηαο. Η αλάγθε γηα ηε θάιπςε πνιιψλ ζελαξίσλ ρξήζεο ζηηο ππεξεζίεο ηζηνχ, αλεβάδεη ηελ πνιππινθφηεηα θαη κεηψλεη ηελ επθνιία ρξήζεο ηνπο. Σν επφκελν θεθάιαην αλαθέξεηαη ζηε γιψζζα BPEL (Business Process Execution Language) θαη ηε δνκή ηεο. Αλαιχεηαη ν ηξφπνο ιεηηνπξγίαο ηεο θαη ηα ραξαθηεξηζηηθά ηεο.

΢ει. 81 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Κεθάιαην 4ν: Η Γιώζζα Δθηέιεζεο Δπηρεηξεζηαθήο Γηαδηθαζίαο - BPEL

Δηζαγσγή

΢ην θεθάιαην απηφ πεξηγξάθεηαη ε δνκή ηεο γιψζζαο εθηέιεζεο επηρεηξεκαηηθψλ δηαδηθαζηψλ BPEL. Η WS-BPEL είλαη κηα ζρεηηθά λέα ηερλνινγία θαη ην πξφηππφ ηεο βξίζθεηαη ζηελ δεχηεξε έθδνζε απφ ην 2007. Γεκηνπξγήζεθε σο απνηέιεζκα ηεο ζπλεξγαζίαο πνιιψλ εηαηξηψλ θαη απηή ηε ζηηγκή απνηειεί πξφηππν ηεο OASIS. Πεξηγξάθνληαη επίζεο ν ηξφπνο ιεηηνπξγίαο ηεο, ηα ζεηηθά ηεο ζηνηρεία θαζψο θαη ηα αξλεηηθά ηεο. ΢ηελ ηειεπηαία παξάγξαθν ηνπ θεθαιαίνπ παξνπζηάδεηαη

έλα

απιφ

παξάδεηγκα

κηαο

αθεξεκέλεο

επηρεηξεκαηηθήο

δηαδηθαζίαο κε ζθνπφ ηελ θαιχηεξε θαηαλφεζε ηεο ιεηηνπξγίαο ηεο θαη ηελ άκεζε επαθή κε ηελ γιψζζα.

΢ει. 82 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

4.1 Ο ΢θνπόο θαη ηα Θεηηθά ΢ηνηρεία ηεο Γιώζζαο BPEL.

Η αλάπηπμε ησλ ππεξεζηψλ ηζηνχ γηα εηαηξηθή ρξήζε απνηειεί πιένλ απαξαίηεην θνκκάηη ζην ρψξν ησλ εηαηξηψλ. Οη νξγαληζκνί ζηεξίδνπλ ηελ εχξπζκε ιεηηνπξγία θαη ηελ παξαγσγηθφηεηα ηνπο ζε απηέο. Η ξαγδαία εμέιημε ηνπ δηαδηθηχνπ

έρεη

νδεγήζεη

ζηελ

αλάπηπμε

ππεξεζηψλ

ηζηνχ

θαη

ηεο

ππεξεζηνζηξεθήο αξρηηεθηνληθήο ζπζηεκάησλ - SOA. Οη ππεξεζίεο ηζηνχ ηείλνπλ εδψ θαη ιίγα ρξφληα λα ελζσκαηψλνπλ επηρεηξεκαηηθέο δηαδηθαζίεο θαη λα δεκηνπξγείηαη ε αλάγθε γηα δηαιεηηνπξγηθφηεηα κεηαμχ ηνπο. Η ππεξεζηνζηξεθήο αξρηηεθηνληθή θαη ε αθεξεκέλε θηινζνθία ηεο, ρξεηαδφηαλ έλα πξφηππν πνπ λα κπνξεί λα δηαζπλδέεη ηηο ππεξεζίεο ηζηνχ κεηαμχ ηνπο. Η BPEL δεκηνπξγήζεθε γηα απηφ

αθξηβψο

ην

ζθνπφ,

ηε

ζχλζεζε,

ηελ

ελνξρήζηξσζε

θαη

ηελ

δηαιεηηνπξγηθφηεηα κεηαμχ ησλ ππεξεζηψλ ηζηνχ. Έρεη ηελ ηθαλφηεηα λα θαζνξίδεη ηηο επηρεηξεκαηηθέο δηαδηθαζίεο πνπ αιιειεπηδξνχλ κε εμσηεξηθέο νληφηεηεο κέζσ ησλ ππεξεζηψλ ηζηνχ πνπ πεξηγξάθνληαη κέζσ ηεο WSDL 1.1. Μπνξεί λα εθθξάζεη ηηο αιιειεπηδξάζεηο ησλ ππεξεζηψλ ρξεζηκνπνηψληαο θαηαζηάζεηο (states), ραξαθηεξηζηηθφ πνπ ε WSDL δελ ππνζηήξηδε. Οπφηε νη δχν γιψζζεο αιιεινζπκπιεξψλνληαη ψζηε λα ζπκβάινπλ ζηελ επηθνηλσλία κεηαμχ δχν endpoints αληαιιάζνληαο κελχκαηα SOAP είηε ζχγρξνλα είηε αζχγρξνλα. Η BPEL αξρηθά αλαπηχρζεθε απφ ηελ Microsoft ηην BEA θαη ηελ IBM ηον Ινχιην ηνπ 2002. Οη εηαηξίεο ζπλδχαζαλ ραξαθηεξηζηηθά απφ ππάξρνπζεο γιψζζεο φπσο ηελ XML, ηην WSFL (Web Services Flow Language) ηεο ΙΒΜ πνπ είλαη κία γιψζζα πξνηχπνπ ξνήο πνπ απνδίδεη κε γξαθήκαηα κηα επηρεηξεζηαθή δηαδηθαζία. Υξεζηκνπνηήζεθε θαη ε BPML (Business Process Modeling Language) σο βάζε γηα ηε δεκηνπξγία ηεο, πνπ απνηειεί κηα κεηαγιψζζα κνληεινπνίεζεο επηρεηξεκαηηθψλ δηαδηθαζηψλ. Η Microsoft ζπλέβαιε κε ηελ XLANG πνπ είλαη βαζηζκέλε ζηελ XML θαη απνηειεί επέθηαζε ηεο WSDL. Ο ζπλδπαζκφο ησλ παξαπάλσ γισζζψλ νδήγεζε ζηελ δεκηνπξγία ηνπ πξφηππνπ BPEL4WS 1.0. Σνλ Απξίιην ηνπ 2003 ε OASIS αλαθνίλσζε ην πξφηππν BPEL4WS 1.1 ελψ ηνλ ΢επηέκβξην ηνπ 2004 δεκηνπξγήζεθε ε δεχηεξε έθδνζε κε ην φλνκα WS-BPEL 2.0

΢ει. 83 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

(Weerawarana et. al., 2005). Σν XPATH 1.0 θαη ε XSLT ρξεζηκνπνηνχληαη απφ ηελ BPEL γηα ηελ δηαρείξηζε ησλ δεδνκέλσλ. Σν πξφηππν ηεο BPEL δεκηνπξγήζεθε έρνληαο πιήξε ζπκβαηφηεηα κε ηα ππάξρνληα πξφηππα πνπ ζπλζέηνπλ ηηο ππεξεζίεο ηζηνχ θαη βξίζθεηαη ζην πςειφηεξν επίπεδν ηεο ζηνίβαο (ζρήκα 4.1). Οη πξνδηαγξαθέο ηηο BPEL αλαθέξνληαη ζηελ θνξεηφηεηα θαη ηελ δηαιεηηνπξγηθφηεηα κεηαμχ ησλ δηάθνξσλ ηερλνινγηψλ πνπ ρξεζηκνπνηνχληαη γηα ηελ αλάπηπμε ππεξεζηψλ ηζηνχ. Η επειημία θαη ε επθνιία ζηηο δηάθνξεο αιιαγέο ησλ ππεξεζηψλ ηζηνχ απνηειεί έλα αθφκε ζεηηθφ ζεκείν ηνπ πξνηχπνπ. Η αλαδξνκηθή ζχλζεζε ππεξεζηψλ θάλεη εθηθηή ηελ δηαζχλδεζε ππεξεζηψλ κεηαμχ ηξίησλ ππαξρφλησλ ππεξεζηψλ. Δπίζεο κπνξεί λα παξέρεη δηαθνξεηηθέο φςεηο ηεο ζχλζεζεο ησλ ππεξεζηψλ ζηηο εηαηξίεο πνπ ζπκκεηέρνπλ, ππνζηεξίδνληαο ηελ εμειημηκφηεηα ηεο θάζε κίαο. Η BPEL ππνζηεξίδεη ηε δηαρείξηζε ηεο επηθνηλσλίαο κεηαμχ δχν end-points κε ηε ρξήζε πνιιαπιψλ θαηαζηάζεσλ θαζψο θαη ηελ αλάθηεζε απηψλ κε ηνπο δηαρεηξηζηέο ζθαικάησλ. Έηζη ζηελ πεξίπησζε πνπ ζε κία δηαδηθαζία πιεξσκήο κε πηζησηηθή θάξηα αλ ν αξηζκφο πιεθηξνινγεζεί εζθαικέλα, ηφηε ε δηαδηθαζία αληί λα ηεξκαηηζηεί ζα δεηήζεη ηελ εηζαγσγή λένπ αξηζκνχ.

΢ρήκα 4.1 Η BPEL ζηε ζηνίβα ησλ πξόηππσλ ησλ ππεξεζηώλ ηζηνύ [7]

΢ει. 84 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Αθφκε έρεη ηελ ηθαλφηεηα λα δηαρσξίδεη ηελ επηρεηξεκαηηθή δηαδηθαζία απφ ηνπο κεραληζκνχο αληαιιαγήο κελπκάησλ, ηα πξσηφθνιια επηθνηλσλίαο θαη ηνπο κεραληζκνχο πνπ ειέγρνπλ ηελ πνηφηεηα ηεο ππεξεζίαο. Οη κεραληζκνί απηνί βξίζθνληαη ζε δηαθνξεηηθά επίπεδα (levels-ζρήκα 4.1) θαη ε BPEL κπνξεί λα ηνπο ζπκπεξηιάβεη γηα λα ζπλζέζεη ππεξεζίεο ηζηνχ. Δπνκέλσο κε ηε ρξήζε ηεο BPEL δίλεηαη ζηνλ πξνγξακκαηηζηή πεξηζζφηεξε επειημία, αθνχ κπνξεί λα επηζπλάςεη, παξαδείγκαηνο ράξηλ, κηα πνιίηηθή αζθάιεηαο-WS-Policy γηα ηελ πνηφηεηα ηεο ππεξεζίαο ζηα δηαθνξεηηθά επίπεδα ηεο BPEL δηαδηθαζίαο θαη ζηα ζπζρεηηδφκελα αξρεία WSDLs. Μπνξεί αθφκε λα ρξεζηκνπνηήζεη δηαθνξεηηθέο δηαζπλδέζεηο γηα λα δηαρεηξηζηεί ηηο αιιειεπηδξάζεηο. Σν αξλεηηθφ ζηνηρείν ηεο BPEL είλαη φηη δελ κπνξεί λα εθαξκνζηεί ζε φιεο ηηο πεξηπηψζεηο θαζψο δελ αθνινπζνχλ φιεο νη εθαξκνγέο ην κνληέιν ηεο ελνξρήζηξσζεο. 4.2 Η Γνκή ηεο BPEL

Μηα επηρεηξεκαηηθή δηαδηθαζία BPEL δεκηνπξγείηαη θαη αλαγλσξίδεηαη σο κία ππεξεζία ηζηνχ. Δπνκέλσο είλαη απαξαίηεην γηα ηε ζπγθεθξηκέλε δηαδηθαζία λα νξηζηεί έλα αξρείν WSDL πνπ ηελ πεξηγξάθεη θαη ηελ ζπλνδεχεη. Η ζχλδεζή ηεο κε ηηο ππφινηπεο ππεξεζίεο ηζηνχ ή κε ηνπο clients γηα ηελ αληαιιαγή κελπκάησλ γίλεηαη κέζσ πνξηψλ –portTypes. ΢ην ζρήκα 4.2.1 ε πφξηα Α

΢ρήκα 4.2.1 Πόξηεο επηθνηλσλίαο κεηαμύ δηαδηθαζίαο BPEL θαη WS [20].

΢ει. 85 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

αλήθεη ζε κία ππεξεζία ηζηνχ δίλνληαο ηε δπλαηφηεηα ζηε δηαδηθαζία BPEL λα επηθνηλσλήζεη κέζσ απηήο κε ηελ ππεξεζία. Η δηαδηθαζία BPEL παξέρεη ηελ πφξηα Β ψζηε λα ππάξρεη έλα ζεκείν επηθνηλσλίαο πξνο απηή. Οη πιεπξέο πνπ αιιειεπηδξνχλ κεηαμχ ηνπο θαζνξίδνληαη κε ην ζηνηρείν <partnerLink> κέζα ζην αληίζηνηρν αξρείν WSDL. Σν θάζε βήκα εθηέιεζήο ηεο είλαη κηα δξαζηεξηφηεηα (activity). Τπάξρνπλ δχν ηχπνη δξαζηεξηνηήησλ πνπ είλαη νη βαζηθέο (basic) θαη νη δνκεκέλεο (structured). Οη δξαζηεξηφηεηεο πνπ αιιειεπηδξνχλ κε ππεξεζίεο ηζηνχ είλαη νη receive, reply, pick, invoke θαζψο θαη νη ρεηξηζη��ο γεγνλφησλ (event handlers). ΢ηηο δνκεκέλεο δξαζηεξηφηεηεο ππάξρεη ε δπλαηφηεηα ηεο παξάιιειεο εθηέιεζεο κε ην ζηνηρείν <forEach> θαζψο θαη ηελ ρξήζε βξφρσλ επαλάιεςεο κέζσ ησλ ζηνηρείσλ <if>, <while>, <repeatUntil>. Γηα ηε δηαρείξηζε ησλ δεδνκέλσλ ππάξρνπλ κεηαβιεηέο πνπ πεξηέρνπλ θπξίσο κελχκαηα πνπ έρνπλ ιεθζεί ε πνπ επξφθεηην λα απνζηαινχλ. Μπνξεί αθφκε λα πεξηέρνπλ δεδνκέλα γηα ηε ζπκπεξηθνξά κηαο δηαδηθαζίαο θαη πιεξνθνξίεο ζρεηηθά κε ηελ θαηάζηαζε πνπ βξίζθεηαη κηα δηαδηθαζία. Οη κεηαβιεηέο απηνχ ηνπ είδνπο κπνξεί λα έρνπλ ηδηφηεηεο (properties) πνπ ηηο πξνζδηνξίδνπλ θαη ηνπο δίλνπλ ινγηθή γηα ηελ εθηέιεζε ηεο δηαδηθαζίαο. Η BPEL παξέρεη έλα κεραληζκφ γηα ηε δηαρείξηζε ησλ κελπκάησλ θαη ηελ ζσζηή παξάδνζή ηνπο γηα θάζε instance πνπ δεκηνπξγείηαη θαηά ηελ έλαξμε κηαο δηαδηθαζίαο. Έηζη ινηπφλ αλ ζε κηα δηαδηθαζία ιακβάλνπλ κέξνο πνιιαπιέο πιεπξέο, θάηη πνπ κπνξεί λα ζεκαίλεη θαη πνιιαπιέο δηαδηθαζίεο, γηα λα γίλεη ζσζηά ε αληηζηνίρεζε ησλ κελπκάησλ ρξεζηκνπνηνχληαη ηα ζχλνια ζπζρεηηζκψλCorrelationSets. Οη δηαρεηξηζηέο γεγνλφησλ - event handlers αληαπνθξίλνληαη φηαλ θάπνην event ζπκβεί. Τπάξρνπλ δχν ηχπνη event handlers. Ο πξψηνο ηχπνο αλαθέξεηαη ζε απηνχο πνπ αληαπνθξίλνληαη ζε γεγνλφηα ηα νπνία βξίζθνληαη κέζα ζε κελχκαηα θαη ζπκβαίλνπλ θαηά ηελ εθηέιεζε κηαο ιεηηνπξγίαο ηνπ αξρείνπ WSDL. Δπίζεο ππάξρνπλ νη δηαρεηξηζηέο γεγνλφησλ πνπ αληαπνθξίλνληαη ζε γεγνλφηα alarm θαη ζπκβαίλνπλ χζηεξα απφ πξνθαζνξηζκέλν ρξνληθφ δηάζηεκα πνπ νξίδεη ν πξνγξακκαηηζηήο. Αλ ε εθηέιεζε κηαο δξαζηεξηφηεηαο είλαη αλεπηηπρήο νη δηαρεηξηζηέο ζθαικάησλ (fault handlers) αλαιακβάλνπλ λα επαλαθέξνπλ

ηελ

ξνή

ηεο

δηαδηθαζίαο.

Οη

δηαρεηξηζηέο

΢ει. 86 από 195

αληηζηάζκηζεο


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

compensation handlers ρξεζηκνπνηνχληαη ζηελ BPEL γηα λα αθπξψζνπλ κία δηαδηθαζία φπσο κία θξάηεζε ελφο δσκαηίνπ ζε έλα μελνδνρείν. Γηαθέξνπλ απφ ηνπο fault handlers θαζψο δξνπλ ζηελ πεξίπησζε πνπ απαηηείηαη ε πεξάησζε κηαο εγθαηαιειεηκκέλεο δηεξγαζίαο θαη φρη φηαλ κηα δηαδηθαζία δελ πεξαηψλεηαη κε ηνλ αλακελφκελν ηξφπν. Έλα απφ ηα βαζηθφηεξα ζηνηρεία ηεο BPEL απνηειεί ην ζηνηρείν <scope> πνπ κπνξεί λα πεξηέρεη εκθσιεπκέλα σο παηδηά ηνπ φινπο ηνπο πξνεγνχκελνπο κεραληζκνχο πνπ αλαθέξζεθαλ. Με ην ζηνηρείν απηφ κπνξεί κηα πνιχπινθε επηρεηξεζηαθή δηαδηθαζία λα αλαιπζεί ζε κηθξφηεξα θνκκάηηα δηαηεξψληαο κία ηεξαξρία. H δπλαηφηεηα ηεο BPEL λα επεθηείλεηαη αλάινγα κε ηηο ζπλζήθεο πνπ απαηηνχληαη δίλεη κεγάιε επειημία ζηνπο πξνγξακκαηηζηέο ρξεζηκνπνηψληαο λέα ζηνηρεία θαη λέα ηδηφηεηεο ζηνηρείσλ. Έηζη κε ηε δεκηνπξγία επεθηάζεσλ (extensions) κπνξεί λα θαιπθηνχλ πεξηζζφηεξα ζελάξηα θαη πην εμεηδηθεπκέλεο πεξηπηψζεηο, σζηφζν παχεη πιένλ λα ππάξρεη ε ηδηφηεηα ηεο θνξεηφηεηαο.

Β

΢ρήκα 4.2.2 Η δνκή ηεο BPEL [11]

΢ει. 87 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Α

΢ρήκα 4.2.2 Η δνκή ηεο BPEL [11]

΢ει. 88 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

4.3 Οη Σερληθέο Αλάπηπμεο Δπηρεηξεκαηηθώλ Γηαδηθαζηώλ κε BPEL.

Η BPEL έρεη ηελ δπλαηφηεηα λα πεξηγξάςεη επηρεηξεκαηηθέο δηαδηθαζίεο κε δχν δηαθνξεηηθνχο ηξφπνπο: 

Με ην πξψηε ηερληθή κπνξεί λα θαζνξίδεη ηηο ιεπηνκέξεηεο κηαο επηρεηξεκαηηθήο δηαδηθαζίαο. Η δηαδηθαζία απηή νλνκάδεηαη εθηειέζηκε επηρεηξεκαηηθή

δηαδηθαζία

(executable

business

processes)

θαη

κνληεινπνηεί ηηο ιεηηνπξγίεο ελφο ζπλεξγάηε ζε κηα ππεξεζία ηζηνχ(Juric et. al., 2006). 

΢ηε δεχηεξε ηερληθή ε BPEL θαζνξίδεη ηα δεκφζηα κελχκαηα επηθνηλσλίαο κεηαμχ ησλ δχν πιεπξψλ. Η δηαδηθαζία απηή νλνκάδεηαη αθεξεκέλε επηρεηξεκαηηθή δηαδηθαζία (abstract business processes) θαη δελ νξίδεη ηηο εζσηεξηθέο ιεπηνκέξεηεο κηαο επηρεηξεκαηηθήο δηαδηθαζίαο (Juric et. al., 2006). Οη εθηειέζηκεο επηρεηξεκαηηθέο δηαδηθαζίεο είλαη δηαδηθαζίεο πνπ ζπλζέηνπλ

έλα ζχλνιν απφ ππάξρνπζεο ππεξεζίεο ην νπνίν θαζνξίδεη ηνλ αθξηβή αιγφξηζκν ησλ δξαζηεξηνηήησλ θαζψο θαη ηα εηζεξρφκελα θαη εμεξρφκελα κελχκαηα. Οη δηαδηθαζίεο απηέο κπνξνχλ λα εθηειεζηνχλ απφ κηα κεραλή εθηέιεζεο BPEL. Δίλαη πνιχ ζεκαληηθέο θαζψο ζπκπιεξψλνπλ ην ράζκα κεηαμχ επηρεηξεκαηηθψλ δηαδηθαζηψλ θαη ησλ κπινθ θψδηθα πνπ είλαη απαξαίηεηα γηα λα θαιχςνπλ ηηο απαηηήζεηο ηνπο. Όηαλ δεκηνπξγείηαη κία λέα εθηειέζηκε επηρεηξεκαηηθή δηαδηθαζία, δεκηνπξγείηαη ζηελ πξάμε κία λέα ππεξεζία ηζηνχ πνπ απνηειεί ηελ ζχλζεζε άιισλ ππεξεζηψλ. Σν πεξηβάιινλ απηήο ηεο ππεξεζίαο BPEL ρξεζηκνπνηεί έλα ζχλνιν απφ portTypes πνπ κέζσ απηψλ παξέρεη ηηο ιεηηνπξγίεο ηεο φπσο θάζε ππεξεζία ηζηνχ. Απνηεινχλ ην πην ζεκαληηθή ηερληθή θαζψο ρξεζηκνπνηείηαη ζηελ πιεηνςεθία ησλ πεξηπηψζεσλ. Οη αθεξεκέλεο επηρεηξεκαηηθέο δηαδηθαζίεο δελ κπνξνχλ λα εθηειεζηνχλ. ΢θνπφο ηνπο είλαη λα πεξηγξάθνπλ ηελ αληαιιαγή ησλ δεκφζησλ κελπκάησλ γηα

΢ει. 89 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ηελ επηθνηλσλία κεηαμχ δχν νληνηήησλ. Η πεξηγξαθή κπνξεί λα αθνξά κηα ζπγθεθξηκέλε ππεξεζία ή έλα ζχλνιν ππεξεζηψλ ηζηνχ. Αθφκε έρνπλ ηελ δπλαηφηεηα λα πεξηγξάθνπλ θαη ηελ ζπκπεξηθνξά κηαο νληφηεηαο πνπ ζπκκεηέρεη ζε κηα επηρεηξεκαηηθή δηαδηθαζία. Οη δχν πην ηαθηηθέο πεξηπηψζεηο ρξήζεσλ είλαη νη εμήο:  Γηα λα πεξηγξάςνπλ ηε ζπκπεξηθνξά κηαο ππεξεζίαο ρσξίο λα είλαη γλσζηφ κε πνηεο επηρεηξεκαηηθέο δηαδηθαζίεο ζα αιιειεπηδξάζνπλ.  Γηα λα νξίζνπλ ηε ζπλεξγαζία ησλ πξσηφθνιισλ κεηαμχ πνιιαπιψλ ζπκκεηερφλησλ θαη ηδηαίηεξα λα πεξηγξάςνπλ ηελ ζπκπεξηθνξά ηνπ θαζελφο. Οη αθεξεκέλεο δηαδηθαζίεο ζπάληα ρξεζηκνπνηνχληαη σζηφζν, κπνξνχλ λα αληηθαηαζηήζνπλ ζχλνια θαλφλσλ πνπ ζπλήζσο πεξηγξάθνληαη κε θπζηθή γιψζζα (Juric et. al., 2006).

4.4 Απιέο θαη Γνκεκέλεο Γξαζηεξηόηεηεο ηεο BPEL

Η

ζπκπεξηθνξά

κηαο

BPEL

δηαδηθαζίαο

θαζνξίδεηαη

απφ

ηηο

δξαζηεξηφηεηέο ηεο (activities) πνπ είλαη ηα βαζηθά δνκηθά ηεο ζπζηαηηθά. Τπάξρνπλ δχν ηχπνη δξαζηεξηνηήησλ: νη βαζηθέο θαη νη δνκεκέλεο. Οη βαζηθέο δξαζηεξηφηεηεο πεξηγξάθνπλ ηα ζηνηρεηψδε βήκαηα ηεο ζπκπεξηθνξάο κηαο δηαδηθαζίαο επηηειψληαο ηνλ πξννξηζκέλν ζθνπφ ηνπο, ελψ νη δνκεκέλεο δξαζηεξηφηεηεο εκπεξηέρνπλ άιιεο δξαζηεξηφηεηεο, δνκεκέλεο ή βαζηθέο, πξνζδηνξίδνληαο ηελ ινγηθή ειέγρνπ-ξνήο κηαο δηαδηθαζίαο. Οη βαζηθέο δξαζηεξηφηεηεο κηαο BPEL δηαδηθαζίαο κπνξεί λα είλαη νη αθφινπζεο: 

receive: Λακβάλεη κελχκαηα, δειαδή δεδνκέλα απφ έλαλ εμσηεξηθφ ζπλεξγάηε κέζσ κηαο ππεξεζίαο.

΢ει. 90 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

reply: ΢πλδέεηαη κε κηα δξαζηεξηφηεηα receive, απαληψληαο ζηνλ εμσηεξηθφ ζπλεξγάηε αλάινγα κε ην είδνο ηνπ κελχκαηνο πνπ έρεη ιεθζεί πξνεγνχκελα. Η απφθξηζε κπνξεί λα πεξηέρεη θαλνληθά δεδνκέλα ή λα είλαη κήλπκα ζθάικαηνο.

invoke: Υξεζηκνπνηείηαη γηα ηελ θιήζε κηαο ππεξεζίαο ηζηνχ πνπ παξέρεηαη απφ

έλα

ζπλεξγάηε.

Οη

ιεηηνπξγίεο

πνπ

επηηειεί

κηα

ππεξεζία

πξνζδηνξίδνληαη απφ ηελ γιψζζα WSDL 1.1 θαη ζηελ BPEL είλαη νη κνλφδξνκεο (one-way) θαη νη ακθίδξνκεο αίηεζεο-απφθξηζεο (requestresponse). 

assign: Υξεζηκνπνηείηαη γηα ηελ δηαρείξηζε δεδνκέλσλ έηζη ψζηε λα είλαη πεξηζζφηεξν αμηνπνηήζηκα απφ κηα δηαδηθαζία θαη ηνπο ζπλεξγάηεο ηεο. Μπνξεί λα αληηγξάςεη ηκήκα ή ην ζχλνιν ησλ δεδνκέλσλ κηαο κεηαβιεηήο ζε κηα άιιε κεηαβιεηή ή ζε έλα ηκήκα ηεο. Ο πξνζδηνξηζκφο απηψλ ησλ ηκεκάησλ εθθξάδεηαη κε ηελ γιψζζα XPath 1.0.

wait: Υξεζηκνπνηείηαη γηα ηελ θαζπζηέξεζε ηεο εθηέιεζεο κηαο δηαδηθαζίαο γηα θάπνην θαζνξηζκέλν ρξνληθφ δηάζηεκα ή κέρξη ηελ έιεπζε θάπνηαο ζπγθεθξηκέλεο

ρξνληθήο

ζηηγκήο.

Η

δξαζηεξηφηεηα

νινθιεξψλεηαη

απηφκαηα αλ ε ρξνληθή ζηηγκή έρεη ήδε παξέιζεη ή ην ρξνληθφ δηάζηεκα είλαη κεδέλ ή αξλεηηθφ. 

exit: Σεξκαηίδεη απηφκαηα φιεο ηηο ηξέρνπζεο δξαζηεξηφηεηεο κηαο δηαδηθαζίαο. Υξεζηκνπνηείηαη ζε απξφζκελεο πεξηπηψζεηο ζνβαξψλ ζθαικάησλ θαηά ηελ εθηέιεζε.

empty: Καηά ηελ εθηέιεζε ηεο δελ γίλεηαη ηίπνηα. Απνηειεί έλα ηξφπν ρεηξηζκνχ ζθάικαηνο, έλα ηξφπν ζπγρξνληζκνχ κηαο ξνήο δξαζηεξηνηήησλ ή

απιά

ηε

δέζκεπζε

ρψξνπ

γηα

ηελ

εηζαγσγή

κειινληηθψλ

δξαζηεξηνηήησλ. 

extensionActivity: Απνηειεί ζηελ νπζία έλα πεξηηχιηγκα γηα ηελ εηζαγσγή λέσλ δξαζηεξηνηήησλ πνπ δελ ζπκπεξηιακβάλνληαη ζηελ πξνδηαγξαθή ηεο

΢ει. 91 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

BPEL θαη νλνκάδνληαη δξαζηεξηφηεηεο επέθηαζεο. Πξέπεη πάλησο λα ζπκκνξθψλνληαη κε ηελ βαζηθή ζεκαζηνινγία ηεο BPEL. 

throw: Υξεζηκνπνηείηαη φηαλ κηα δηαδηθαζία πξέπεη λα ζεκαηνδνηήζεη έλα εζσηεξηθφ ζθάικα. Παξέρεη ηελ νλνκαζία γηα ην ζθάικα θαη πξναηξεηηθά κπνξεί

λα

δψζεη

θαη

δεδνκέλα

κε

επηπιένλ

πιεξνθνξίεο

πνπ

ρξεζηκνπνηνχληαη απφ ηνλ ρεηξηζηή ζθαικάησλ γηα ηελ αληηκεηψπηζή ηνπ. 

rethrow: Έρεη παξφκνηα ιεηηνπξγία κε ηε throw. Μπνξεί λα ρξεζηκνπνηεζεί φκσο κφλν κέζα ζε θάπνην ρεηξηζηή ζθαικάησλ, φπνπ παξέρεη ην φλνκα θαη πξναηξεηηθά ηα αξρηθά δεδνκέλα ηνπ ζθάικαηνο. Σπρφλ ηξνπνπνηήζεηο ησλ δεδνκέλσλ απφ ην ρεηξηζηή ζθαικάησλ δελ ιακβάλνληαη ππφςε απφ ηε rethrow (Λαηάλεο, 2009).

Οη δνκεκέλεο δξαζηεξηφηεηεο κηαο BPEL δηαδηθαζίαο είλαη: 

sequence: Απνηειείηαη απφ κηα νκάδα δξαζηεξηνηήησλ πνπ εθηεινχληαη αθνινπζηαθά θαη ζπγθεθξηκέλα κε ηελ ζεηξά κε ηελ νπνία εκθαλίδνληαη κέζα ζηελ δξαζηεξηφηεηα sequence.

if-else: Μνηάδεη κε ηελ αληίζηνηρε εληνιή πνπ ζπλαληάκε ζε δηαδεδνκέλεο γιψζζεο πξνγξακκαηηζκνχ. Απνηειείηαη απφ κηα ιίζηα θιάδσλ πνπ θαζνξίδνληαη απφ ην ζηνηρείν <if> θαη ηα πξναηξεηηθά ζηνηρεία <elseif> θαη <else>. Κάζε θιάδνο πεξηέρεη ηελ δηθή ηνπ ζπλζήθε (<condition>) θαη δξαζηεξηφηεηα. Οη ζπλζήθεο ησλ θιάδσλ <if> θαη <elseif> ειέγρνληαη κε ηε ζεηξά εκθάληζήο ηνπο θαη εθηειείηαη ε δξαζηεξηφηεηα ηνπ πξψηνπ θιάδνπ πνπ ηθαλνπνηείηαη ε ζπλζήθε ηνπ. Αλ δελ ηθαλνπνηείηαη θακία ζπλζήθε εθηειείηαη ε δξαζηεξηφηεηα ηνπ θιάδνπ <else>, εθφζνλ απηφο ππάξρεη. ΢ε θάζε πεξίπησζε, ζηε ζπλέρεηα ε if-else νινθιεξψλεηαη.

while: Δίλαη επαλαιεπηηθή δξαζηεξηφηεηα πνπ πεξηέρεη κηα άιιε δξαζηεξηφηεηα θαη κηα ζπλζήθε. Όζν ε ζπλζήθε επαιεζεχεηαη, ε εζσηεξηθή δξαζηεξηφηεηα εθηειείηαη. Δπεηδή ν έιεγρνο ηεο ζπλζήθεο γίλεηαη ζηελ αξρή, κπνξεί ην ζψκα ηεο while λα κελ εθηειεζηεί θαη θαζφινπ.

΢ει. 92 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

repeatUntil: Δίλαη επαλαιεπηηθή δξαζηεξηφηεηα φκνηα κε ηε while, κφλν πνπ ν έιεγρνο ηεο ζπλζήθεο γίλεηαη ζην ηέινο. Έηζη, ε εζσηεξηθή δξαζηεξηφηεηα ζα εθηειεζηεί ηνπιάρηζηνλ κηα θνξά.

forEach: Δίλαη επαλαιεπηηθή δξαζηεξηφηεηα. Η εζσηεξηθή δξαζηεξηφηεηα πνπ πεξηέρεη, πξέπεη λα είλαη ηχπνπ <scope>, εθηειείηαη Ν θνξέο. Ο αξηζκφο Ν πξνθχπηεη απφ ηελ δηαθνξά ηεο ηειηθήο ηηκήο κέηξεζεο <finalCounterValue> απφ ηελ αξρηθή ηηκή κέηξεζεο <startCounterValue> απμαλφκελε θαηά 1. Οη επαλαιήςεηο κπνξνχλ λα πξνγξακκαηηζηνχλ λα γίλνληαη είηε ζεηξηαθά είηε παξάιιεια.

flow: Υξεζηκνπνηείηαη γηα ηελ παξάιιειε εθηέιεζε δξαζηεξηνηήησλ. ΢πγθεθξηκέλα, νη εζσηεξηθέο δξαζηεξηφηεηέο ηεο εθθηλνχλ ηαπηφρξνλα, φηαλ μεθηλά ε δνκεκέλε δξαζηεξηφηεηα flow. Πνιιέο θνξέο, νη δξαζηεξηφηεηεο ζην ζψκα κηαο flow κπνξεί λα εμαξηψληαη κεηαμχ ηνπο, νπφηε είλαη πηζαλφ θάπνηα δξαζηεξηφηεηα λα εθηειείηαη κεηά ηελ νινθιήξσζε κηαο άιιεο ή θαη λα

κελ

εθηειείηαη

αιιειεμαξηήζεηο

θαζφινπ.

Σν

ζηνηρείν

ξπζκίδνληαο

ηελ

ξνή

πνπ

εθηέιεζεο

ειέγρεη ησλ

απηέο

ηηο

εζσηεξηθψλ

δξαζηεξηνηήησλ είλαη ην <link>. 

pick: Υξεζηκνπνηείηαη γηα ηελ επηιεθηηθή εθηέιεζε δξαζηεξηνηήησλ. Πεξηέρεη ηνπιάρηζηνλ έλα ζηνηρείν onMessage θαη πξναηξεηηθά έλα ή πεξηζζφηεξα ζηνηρεία onAlarm. Σα ζηνηρεία onMessage αθνξνχλ εηζεξρφκελα κελχκαηα απφ ιεηηνπξγίεο ππεξεζηψλ ηζηνχ πνπ ζρεηίδνληαη κε κηα δηαδηθαζία, ελψ ηα ζηνηρεία onAlarm αθνξνχλ θάπνηα ρξνληθή εηδνπνίεζε. Κάζε έλα απφ ηα ζηνηρεία πεξηέρεη κηα εζσηεξηθή δξαζηεξηφηεηα. Οπνηνδήπνηε γεγνλφο (κήλπκα

ή

αληίζηνηρεο

εηδνπνίεζε) εκθαληζηεί πξψην, πξνθαιεί ηελ εθηέιεζε ηεο δξαζηεξηφηεηάο

ηνπ.

Μφιηο

νινθιεξσζεί

δξαζηεξηφηεηα, νινθιεξψλεηαη θαη ε pick (Λαηάλεο, 2009).

΢ει. 93 από 195

ε

εζσηεξηθή


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

4.5 Ο Σξόπνο Λεηηνπξγίαο ηεο BPEL Μία ππεξεζία ηζηνχ BPEL ρξεζηκνπνηεί θαη άιια πξφηππα γηα λα ιεηηνπξγήζεη. Θα πξέπεη λα παξέρεη ηελ πεξηγξαθή ηεο κέζσ ελφο αξρείνπ WSDL ψζηε λα “εθηίζεηαη” ζην δηαδίθηπν φπσο θαη νη ζπλεξγάηεο ηεο, αλ είλαη θαη απηνί ππεξεζίεο ηζηνχ (ζρήκα 4.5.1). Απφ ηε ζηηγκή πνπ πξνκεζεχνληαη νη ζπλεξγάηεο ή ν client ην αξρείν ηεο πεξηγξαθήο, κπνξνχλ λα επηθνηλσλήζνπλ κε ηελ ππεξεζία αληαιιάζνληαο κελχκαηα SOAP πξνθαζνξηζκέλεο κνξθήο (format). Έηζη κπνξνχλ λα θαιέζνπλ ηελ ππεξεζία κε ηελ δξαζηεξηφηεηα invoke. Με ηελ θιήζε απηή ε επηρεηξεκαηηθή δηαδηθαζία ηεο BPEL ιακβάλεη έλα αίηεκα θαη δεκηνπξγείηαη έλα λέν ζηηγκηφηππφ (instance) ηεο. Ύζηεξα ε δηαδηθαζία BPEL εθηειεί ηελ δξαζηεξηφηεηα πνπ ηεο έρεη δεηεζεί θαη απαληά ζην αίηεκα ηνπ πειάηε βαζηδφκελε ζην κνληέιν αίηεζεο-απφθξηζεο (request-response). Η δηαδηθαζία εθηέιεζεο ηνπ θψδηθα γίλεηαη απφ κία κεραλή BPEL πνπ έρεη ηελ ηθαλφηεηα λα αλαγλσξίδεη αξρεία .wsdl, .xsd, .soap, .bpel, .xml θαη λα αιιειεπηδξά κε άιιεο ππεξεζίεο ε κε clients πνπ κπνξνχλ λα ηξέρνπλ ζε νπνηαδήπνηε πιαηθφξκα.

΢ρήκα 4.5.1 Αξρεία WSDL θαη ππεξεζίεο ηζηνύ

Η απάληεζε πξνο ηνλ πειάηε κπνξεί λα γίλεη κε ηε ρξήζε ηεο δξαζηεξηφηεηα reply. ΢πγθεληξσηηθά ε ιεηηνπξγία κηαο BPEL πξνυπνζέηεη ηξία βήκαηα. Αξρηθά ηελ ιήςε ηνπ αξρείνπ WSDL, ηελ θιήζε ηεο BPEL δηαδηθαζίαο θαη ηέινο ηελ απάληεζε απφ απηήλ πξνο ηελ νληφηεηα πνπ ηελ θάιεζε.

΢ει. 94 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

4.6 Παξάδεηγκα Υξήζεο κηαο Δπηρεηξεκαηηθήο Γηαδηθαζίαο BPEL

΢ηελ παξάγξαθν απηή παξνπζηάδεηαη έλα απιφ παξάδεηγκα κηαο αθεξεκέλεο επηρεηξεκαηηθήο δηαδηθαζίαο BPEL πνπ ζθνπφο ηεο είλαη ε ιήςε παξαγγειίαο απφ έλα πειάηε. Η ππεξεζία απηή ιακβάλεη ηελ παξαγγειία κε δχν ηξφπνπο. Δίηε ζε κία παξαγγειία πνπ πεξηιακβάλεη φια ηα αληηθείκελα, είηε ζε πνιιαπιέο πνπ ζπλζέηνπλ κία παξαγγειία. ΢ηα παξαθάησ ζρήκαηα δελ ζπκπεξηιακβάλνληαη φια ηα αξρεία ηεο επηρεηξεκαηηθήο δηαδηθαζίαο. Χζηφζν, παξνπζηάδνληαη ην αξρείν .wsdl πνπ πεξηγξάθεη ηνπο ζπκκεηέρνληεο ζηελ ππεξεζία, ηε δνκή ησλ κελπκάησλ επηθνηλσλίαο θαη ηελ επηρεηξεκαηηθή δηαδηθαζία, θαζψο θαη ηα κπινθ θψδηθα BPEL.

΢ρήκα 4.6.1 Αξρείν shippingLT.wsdl [11]

΢ηελ παξαγγειία ζπκκεηέρνπλ δχν πιεπξέο, ν πειάηεο θαη ε ππεξεζία απνζηνιήο παξαγγειίαο. ΢ην ζρήκα 4.6.1 παξνπζηάδεηαη ην αξρείν WSDL πνπ πεξηγξάθεη ηηο δχν πιεπξέο. ΢ηελ αξρή ηνπ αξρείνπ νξίδεηαη ε νλνκαηνινγία πνπ ρξεζηκνπνηείηαη θαη χζηεξα αλαθέξεηαη ε ηνπνζεζία ηνπ αξρείνπ shippingPT.wsdl πνπ πεξηγξάθεη ην ζρήκα ησλ κελπκάησλ επηθνηλσλίαο θαη ηηο πφξηεο ηεο

΢ει. 95 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

επηρεηξεκαηηθήο δηαδηθαζίαο BPEL κέζσ ηνπ ζηνηρείνπ <wsdl:import>. Με ην ζηνηρείν <plink:partnerLinkType > νξίδνληαη νη ξφινη ησλ δχν πιεπξψλ. ΢ην ζρήκα 4.6.2 νξίδεηαη αξρηθά ε νλνκαηνινγία θαη χζηεξα πξνζδηνξίδεηαη ε ηνπνζεζία ηνπ αξρείνπ XSD πνπ πεξηγξάθεη ηνλ ηχπν ησλ δεδνκέλσλ πνπ κπνξεί λα δερηνχλ ηα κελχκαηα, κέζσ ηνπ ζχλζεηνπ ζηνηρείνπ <wsdl:types>/<xsd:schema>. ΢ηελ ζπλέρεηα ηνπ αξρείνπ νξίδνληαη νη δχν ηχπνη κελπκάησλ πνπ ζα αληαιιάζζνληαη κέζσ ησλ ζηνηρείσλ <wsdl:message>. Η πξψηε δήισζε νξίδεη ην κήλπκα πνπ ζα αηηεζεί ηελ απνζηνιή ηεο παξαγγειίαο θαη ε δεχηεξε ην πεξηερφκελν ηεο παξαγγειίαο.

΢ρήκα 4.6.2 Αξρείν shippingPT.wsdl [11]

Με ην ζχλζεην ζηνηρείν <wsdl:portType>/<wsdl:operation> νξίδνληαη νη δχν πφξηεο επηθνηλσλίαο ηεο επηρεηξεκαηηθήο δηαδηθαζίαο BPEL κία γηα θάζε ηχπν κελπκάησλ. ΢ην ζρήκα 4.6.3Α αθνχ νξηζηεί ε νλνκαηνινγία ησλ πξνδηαγξαθψλ

΢ει. 96 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

πνπ ρξεζηκνπνηνχληαη θαη ε ηνπνζεζία ηνπ αξρείν shippingPT.wsdl νξίδεηαη έλαο

Α

΢ρήκα 4.6.3 Αξρείν WSDL γηα ηελ πεξηγξαθή ηεο παξαγγειίαο [11]

κεηξεηήο πνπ πεξηνξίδεη ην ειάρηζην θαη ην κέγηζην αξηζκφ ησλ αληηθεηκέλσλ ηεο παξαγγειίαο απφ έλα έσο πελήληα. Σν ζηνηρείν πνπ νξίδεη απηφ ην κεηξεηή είλαη ην <wsdl:types> θαη ρξεζηκνπνηείηαη ζηηο αθεξεκέλεο επηρεηξεκαηηθέο δηαδηθαζίεο. ΢ηελ ζπλέρεηα νξίδνληαη νη ηδηφηεηεο ησλ δεδνκέλσλ ηεο επηρεηξεκαηηθήο δηαδηθαζίαο BPEL θαζψο θαη ζε πνην ηχπν κελχκαηνο αλήθνπλ, φπσο είλαη ην shippOrderID πνπ ρξεζηκνπνηείηαη γηα λα ζπζρεηίδεη ην ζεκείσκα ηεο απνζηνιήο shipping notices κε ηελ απνζηνιή –shipping θαη αλήθεη θαη ζηνπο δχν ηχπνπο κελπκάησλ. Με ηε ρξήζε ηνπ ζηνηρείνπ <vprop:propertyAlias> (ζρήκα 4.6.3Β) δεκηνπξγνχληαη ζηελ νπζία νδεγίεο γηα ην πψο ε BPEL δηαδηθαζία ζα κπνξέζεη λα δηαβάζεη ηηο ηηκέο ησλ ηδηνηήησλ κέζα απφ ηα κελχκαηα. Η ηδηφηεηα shipComplete

΢ει. 97 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ρξεζηκνπνηείηαη γηα λα πξνζδηνξίζεη πφηε κία απνζηνιή έρεη νινθιεξσζεί. Οη ηδηφηεηεο itemsTotal, ItemsCount πξνζδηνξίδνπλ ιεπηνκέξεηεο ζρεηηθά κε ην ζπλνιηθφ αξηζκφ ησλ αληηθεηκέλσλ θαη ην κεηξεηή ηνπο αληίζηνηρα. Ο ηδηφηεηεο απηέο ρξεζηκνπνηνχληαη ζηελ πεξίπησζε πνπ κία παξαγγειία δηαρσξίδεηαη ζε πνιιαπιά κέξε.

Β

΢ρήκα 4.6.3 Αξρείν WSDL γηα ηελ πεξηγξαθή ηεο παξαγγειίαο [11]

΢ην ζρήκα 4.6.4Α παξνπζηάδεηαη ν θψδηθαο BPEL ηεο επηρεηξεκαηηθή δηαδηθαζία. Κάζε δηαδηθαζία νξίδεηαη κε ην ζηνηρείν <process> θαη ην φλνκά ηεο name="shippingService". Ύζηεξα, νξίδεηαη ε νλνκαηνινγία ησλ πξνδηαγξαθψλ

΢ει. 98 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Α

΢ρήκα 4.6.4 Αξρείν επηρεηξεκαηηθήο δηαδηθαζίαο BPEL [11]

πνπ ρξεζηκνπνηείηαη απφ ηελ αθεξεκέλε δηαδηθαζία. Mε ην ζηνηρείν <import> εηζάγεη ηα αξρεία wsdl, πνπ αλαιχζεθαλ παξαπάλσ, ψζηε λα έρεη ηηο θαηάιιειεο πιεξνθνξίεο γηα ην ρεηξηζκφ ησλ κελπκάησλ θαη ην δεδνκέλσλ. Σν ζηνηρείν <partnerLinks> νξίδεη ηνπο ζπλεξγάηεο πνπ ζηελ ζπγθεθξηκέλε δηαδηθαζία είλαη ν πειάηεο (customer). ΢ηελ ζπλέρεηα νξίδνληαη νη ηξείο κεηαβιεηέο shipRequest, shipNotice, itemsShiped θαη νη ηχπνη ηνπο πνπ ζα ρξεζηκνπνηεζνχλ απφ ηε δηαδηθαζία. Η κεηαβιεηή shipRequest θαη shipNotice είλαη ηχπνπ κελχκαηνο shippingRequestMsg θαη shippingNoticeMsg αληίζηνηρα.

΢ει. 99 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Β

΢ρήκα 4.6.4 Αξρείν επηρεηξεκαηηθήο δηαδηθαζίαο BPEL [11]

΢ει. 100 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Η

κεηαβιεηή

itemCountType

είλαη

εηδηθνχ

ηχπνπ

xsd.

Με

ην

ζηνηρείν

<correlationSets> δειψλεηαη ε ζπζρέηηζε ηνπ θσδηθνχ ηεο παξαγγειίαο shipOrderID κε ηελ παξαγγειία shipOrder (ζρήκα 4.6.4Β). Σν ζηνηρείν <sequence> ππνδειψλεη ηελ αξρή κηαο ζεηξάο δξαζηεξηνηήησλ πνπ ζα εθηειεζηνχλ αθνινπζηαθά. Η πξψηε δξαζηεξηφηεηα πνπ εθηειείηαη είλαη ε <receive> πνπ αξρηθνπνηεί ην αίηεκα ιήςεο κίαο παξαγγειίαο απφ έλαλ πειάηε. Γηα λα γίλεη απνδεθηή κία νιφθιεξε παξαγγειία πξέπεη πξψηα λα ηθαλνπνηεί ηελ ζπλζήθε πνπ ειέγρεη αλ έρεη νινθιεξσζεί κία παξαγγειία. Αλ ε ζπλζήθε είλαη αιεζήο, ηφηε κία λέα αθνινπζία απφ δξαζηεξηφηεηεο νξίδεηαη θαη εθηειείηαη ψζηε λα κπνξέζεη ε επηρεηξεκαηηθή δηαδηθαζία BPEL λα ιάβεη ηα δεδνκέλα ηεο παξαγγειίαο. Απηφ γίλεηαη αληηγξάθνληαο ηα δεδνκέλα κε ηε ρξήζε ηεο δξαζηεξηφηεηαο <assign>. Αθνχ αληηγξαθνχλ ηα δεδνκέλα ρξεζηκνπνηείηαη ε κνλφδξνκε δξαζηεξηφηεηα <invoke> πνπ θαιεί ηε ζπκκεηέρνπζα ππεξεζία shippingNotice. Η κεηαβιεηή εηζφδνπ είλαη ε shipNotice. ΢ην εζσηεξηθφ ηεο invoke

δεκηνπξγείηαη άιιε κία

ζπζρέηηζε πνπ ζπλδέεη ηελ αίηεζε παξαγγειίαο κε ηελ ίδηα ηελ παξαγγειία θαη ε ιήςε ηεο παξαγγειίαο νινθιεξψλεηαη. ΢ηελ πεξίπησζε φκσο πνπ ε ζπλζήθε δελ ηθαλνπνηεζεί, ηφηε κία λέα αθνινπζία δξαζηεξηνηήησλ εθηειείηαη. Η δεχηεξε πεξίπησζε αληηζην��ρεί ζηελ παξαγγειία πνπ απνζηέιιεηαη ζε πνιιαπιά θνκκάηηα. Γηα λα απνζηαινχλ φια ηα αληηθείκελα νξίδεηαη έλαο βξφρνο <while> πνπ ζα εθηειείηαη φζν ν αξηζκφο ησλ ζηαικέλσλ αληηθεηκέλσλ είλαη κηθξφηεξνο ησλ ζπλνιηθψλ. Η αξρηθή ηηκή ηνπ κεηξεηή $itemsShipped ησλ αληηθεηκέλσλ αξρηθνπνηείηαη εμσηεξηθά απφ ην βξφρν θαη πξηλ ην πέξαο ηνπ πξνζηίζεληαη ηα λέα αληηθείκελα κε ηελ έθθξαζε: $itemsShipped

+

bpel:getVariableProperty('shipNotice',

'props:itemsCount')

Γ

(ζρήκα 4.6.4 ). Αθφκε κία εκθσιεπκέλε αθνινπζία δξαζηεξηνηήησλ νξίδεηαη κεηά ηελ ζπλζήθε πνπ ζην εζσηεξηθφ ηεο αληηγξάθεη ηα δεδνκέλα θαη θαιεί ηελ ζπκκεηέρνπζα ππεξεζία γηα λα ιάβεη ηελ κεξηθή παξαγγειία.

΢ει. 101 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Γ

΢ρήκα 4.6.4 Αξρείν επηρεηξεκαηηθήο δηαδηθαζίαο BPEL [11]

΢ει. 102 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Δπίινγνο

΢ην θεθάιαην απηφ παξνπζηάζηεθε ε ηζηνξηθή εμέιημε θαη ε δνκή ηεο γιψζζαο BPEL. Σα ζεηηθά ηεο ζηνηρεία ππεξηεξνχλ ησλ αξλεηηθψλ πνπ είλαη ειάρηζηα. Σα πην ζεκαληηθά είλαη ε επθνιία εθαξκνγήο ηεο, ε αλεμαξηεζία πιαηθφξκαο θαη ε επειημία ηεο. ΢ην θεθάιαην παξνπζηάζηεθε επίζεο, έλα απιφ παξάδεηγκα ψζηε λα θαηαλνεζεί θαιχηεξα ε ιεηηνπξγία ηεο. Η BPEL κέξα κε ηελ κέξα θεξδίδεη έδαθνο κηαο θαη απνηειεί ην παξφλ θαη ην κέιινλ ηεο ππεξεζηνζηξεθήο αξρηηεθηνληθήο. ΢ην επφκελν θεθάιαην παξνπζηάδνληαη νη πξνδηαγξαθέο WS-Security, WSS-Policy, WS-Federation, WSS-Conversation θαη WS-Trust θαη ην πψο κπνξνχλ λα ρξεζηκνπνηεζνχλ κε ηελ BPEL ψζηε λα δεκηνπξγεζεί έλα πςειφ επίπεδν αζθάιεηαο γηα ηηο επηρεηξεκαηηθέο δηαδηθαζίεο.

΢ει. 103 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Κεθάιαην 5ν: WS-Security θαη BPEL

Δηζαγσγή: H Αξρηηεθηνληθή ηνπ Μνληέινπ Αζθάιεηαο ησλ Τπεξεζηώλ Ιζηνύ.

Σν πξφηππν WS-Security (WSS) είλαη ν ζεκέιηνο ιίζνο γηα ηε δεκηνπξγία ελφο πςεινχ επηπέδνπ αζθάιεηαο ππεξεζηψλ ηζηνχ. Δπεθηείλεη ηηο δπλαηφηεηεο ηνπ πξνηχπνπ ησλ κελπκάησλ SOAP δίλνληάο ηνπο ηελ ηθαλφηεηα λα κεηαθέξνληαη κε αζθάιεηα. Σν θαζνιηθφ κνληέιν γηα ηε δεκηνπξγία αζθαιψλ ππεξεζηψλ ηζηνχ είλαη απηφ πνπ παξνπζηάδεηαη ζην ζρήκα 5.1.1. Απνηειεί κία νηθνγέλεηα πξνηχπσλ πνπ ζηε βάζε ηεο αξρηηεθηνληθήο ηνπ βξίζθεηαη ην πξφηππν ηνπ κελχκαηνο SOAP. Αθξηβψο ζην επφκελν επίπεδν βξίζθεηαη ην πξφηππν WSSecurity. ΢ην ηξίην επίπεδν βξίζθνληαη ηα πξφηππα WS-Policy, WS-Privacy θαη WS-Trust. Σν πξφηππν ηεο WS-Policy δεκηνπξγήζεθε γηα λα πξνζδηνξίζεη ηηο απαηηήζεηο αζθαιείαο κεηαμχ ησλ πιεπξψλ πνπ ζπκκεηέρνπλ ζε κία ππεξεζία ηζηνχ. Η πξνδηαγξαθή WS-Trust ρξεζηκνπνηείηαη γηα ηελ δεκηνπξγία εκπηζηνζχλεο κεηαμχ νκάδσλ κέζσ ηεθκεξίσλ αζθάιεηαο. Σν ηειεπηαίν πξφηππν απηνχ ηνπ επηπέδνπ είλαη ην WS-Privacy θαη πεξηγξάθεη ηε ζχληαμε θαη ηε ζεκαζηνινγία γηα ηε δηαζχλδεζε ησλ ηδησηηθψλ πνιηηηθψλ κε ηηο ππεξεζίεο ηζηνχ. Σν πξφηππν WSSecure Conversation δηαρεηξίδεηαη ηελ αζθαιή επηθνηλσλία ησλ κελπκάησλ SOAP κέζσ ζπλφδσλ. Η δηαρείξηζε ησλ πνιηηηθψλ πξφζβαζεο εθηφο απφ ηελ XACML (παξάγξαθνο 4.5) κπνξεί λα γίλεη θαη κέζσ ηεο πξνδηαγξαθήο WS-Authorization. Η επηθνηλσλία κεηαμχ δηαθνξεηηθψλ πξνηχπσλ αζθάιεηαο ζηηο δηαθνξεηηθέο ππεξεζίεο ηζηνχ κπνξεί λα επηηεπρζεί κέζσ ηνπ πξνηχπνπ WS-Federation, δξψληαο πάλσ απφ ηα πξφηππα WS-Policy θαη WS-Trust έρνληαο σο ζηφρν ηε δηαρείξηζε ησλ ζρέζεσλ εκπηζηνζχλεο. ΢ην θεθάιαην απηφ ζα πεξηγξαθνχλ ηα πξφηππα πνπ αλαθέξζεθαλ θαζψο θαη ηνλ ηξφπν πνπ κπνξνχλ λα εθαξκνζηνχλ ζηηο επηρεηξεκαηηθέο δηαδηθαζίεο BPEL.

΢ει. 104 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 5.1 Αξρηηεθηνληθή κνληέινπ WS-Security [2]

5.1 Ο ΢θνπόο ηνπ Μνληέινπ WS-Security

Σν κνληέιν WS-Security έρεη δεκηνπξγεζεί κε ζθνπφ λα δηαζθαιίζεη ηελ χπαξμε ηεο αθεξαηφηεηαο, ηεο εκπηζηεπηηθφηεηαο θαζψο θαη ηελ ηαπηνπνίεζε ηνπ απνζηνιέα ζηε βαζηθή κνλάδα επηθνηλσλίαο ησλ ππεξεζηψλ ηζηνχ πνπ είλαη ηα κελχκαηα SOAP (παξάγξαθνο 2.5). Σν πξφηππν WSS δελ έρεη δεκηνπξγεζεί κε ζθνπφ λα αληηθαηαζηήζεη θάπνηα ππάξρνληα. Αληίζεηα γηα λα πεηχρεη ηελ εκπηζηεπηηθφηεηα,

ηελ

αθεξαηφηεηα

θαη

ηελ

ηαπηνπνίεζε

ηνπ

απνζηνιέα

ρξεζηκνπνηεί ηα εξγαιεία αζθάιεηαο XML. Η αθεξαηφηεηα ηνπ κελχκαηνο παξέρεηαη απφ ηελ ηζρχ ηεο XML ππνγξαθήο θαη ηα ηεθκήξηα αζθάιεηαο (Security Tokens) γηα λα εγγπεζνχλ φηη ηα κελχκαηα έρνπλ δεκηνπξγεζεί απφ ηνλ θαηάιιειν απνζηνιέα θαη δελ έρνπλ κεηαβιεζεί θαηά ηελ κεηαθνξά. Οκνίσο ηελ εκπηζηεπηηθφηεηα ηνπ κελχκαηνο παξέρεη ε XML θξππηνγξάθεζε, ψζηε λα δηαηεξνχληαη ηα ηκήκαηα ελφο SOAP κελχκαηνο εκπηζηεπηηθά. Ο ζρεδηαζκφο ηνπ κνληέινπ μεθίλεζε ηνλ Οθηψβξην ηνπ 2001 απφ ηελ

΢ει. 105 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Microsoft. Μεξηθνχο κήλεο αξγφηεξα, ηνλ Απξίιην ηνπ 2002, ε Microsoft ζπλεξγάζηεθε κε ηελ IBM και ηην VeriSign με αποηέλεζμα να δεκηνπξγήζνπλ κία αξρηθή κνξθή ηνπ κνληέινπ κε ηελ νλνκαζία “Security in a Web Services World”. Σν πξφηππν εγθξίζεθε ην 2004 θαη απηή ηε ζηηγκή βξίζθεηαη ζηελ έθδνζε 1.1 απνηειψληαο πξφηππν ηεο OASIS. Οη απαηηήζεηο πνπ έρνπλ νξηζηεί γηα ην πξφηππν απηφ είλαη: 

Η ππνζηήξημε πνιιαπιψλ ηεθκεξίσλ αζθάιεηαο (Security Tokens).

Η ππνζηήξημε ηεο εκπηζηνζχλεο κεηαμχ πνιιαπιψλ πεξηνρψλ (domain trust).

Η ππνζηήξημε πνιιαπιψλ ηχπσλ ππνγξαθψλ (Signature formats).

H ππνζηήξημε end-to-end αζθάιεηαο ηνπ κελχκαηνο θαη φρη κφλν ζην επίπεδν κεηαθνξάο ηνπ (Lawrence et al. 2006). Σν κνληέιν κπνξεί λα δεκηνπξγήζεη έλα πςειφ επίπεδν αζθάιεηαο κεηαμχ

ππεξεζηψλ πνπ ρξεζηκνπνηνχλ δηαθνξεηηθέο πιαηθφξκεο θαη ηερλνινγίεο αζθάιεηαο, δίλνληαο ηελ αίζζεζε ζηνπο ρξήζηεο φηη ρξεζηκνπνηνχλ κία εληαία ππεξεζία. Με απηφλ ηνλ ηξφπν κία ππεξεζία πνπ ρξεζηκνπνηεί ην πξφηππν Kerberos κπνξεί λα επηθνηλσλήζεη κε κία άιιε πνπ ρξεζηκνπνηεί ην πξφηππν ησλ ςεθηαθψλ πηζηνπνηεηηθψλ Χ.509. Σα κελχκαηα SOAP έρνπλ ζρεδηαζηεί ψζηε λα κεηαθέξνληαη κέζσ νπνηνπδήπνηε πξσηνθφιινπ φπσο είλαη ην HTTP, HTTP-S, SMTP, SSL, IP-Sec θαη FTP. Σα πξσηφθνιια απηά φκσο δελ κπνξνχλ λα ππνζηεξίδνπλ ην πςειφ επίπεδν αζθάιεηαο πνπ απαηηνχλ νη ππεξεζίεο ηζηνχ ζηελ επηθνηλσλία ηνπο. Σν SSL θαη ην TLS κπνξνχλ λα δεκηνπξγήζνπλ έλα αζθαιή point-to-point δίαπιν επηθνηλσλίαο κεηαμχ ησλ ππεξεζηψλ. Όζν ηα κελχκαηα SOAP βξίζθνληαη ζε απηφ ην δίαπιν είλαη αζθαιή (ζρήκα 5.1.1). Απφ ηε ζηηγκή φκσο πνπ έλα κήλπκα θζάζεη ζηνλ παξαιήπηε παχεη λα είλαη αζθαιέο. Με ηε ρξήζε ηνπ WS-Security έλα κήλπκα SOAP κπνξεί λα είλαη αζθαιέο ζε φιε ηε δηάξθεηα δσήο ηνπ θαζψο ην κνληέιν δεκηνπξγεί έλα end-to-end αζθαιή δίαπιν επηθνηλσλίαο πξνζζέηνληαο

΢ει. 106 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ζην κήλπκα θξππηνγξάθεζε XML, ςεθηαθέο ππνγξαθέο XML θαη ηεθκήξηα αζθάιεηαο.

΢ρήκα 5.1.1 Point to point δίαπινο επηθνηλσλίαο [2]

΢πγθξίλνληαο ηνπο δχν δηαχινπο αζθάιεηαο κπνξνχκε λα δηαθξίλνπκε φηη ν Point-to-point δίαπινο εθαξκφδεηαη κε επθνιία ελψ ζην end-to-end ππάξρεη κηα πνιππινθφηεηα θαζψο ρξεζηκνπνηνχληαη πεξηζζφηεξνη κεραληζκνί αζθάιεηαο. Αθφκε, ν δίαπινο point-to-point είλαη εμαξηψκελνο απνθιεηζηηθά απφ ην επίπεδν κεηαθνξάο θαη εθαξκφδεηαη ζε φια ηα παθέηα κεηαθνξάο θαηά ηε δηάξθεηα ηεο ζπλεδξίαο, ελψ ν δίαπινο end-to-end δελ πεξηνξίδεηαη ζην επίπεδν ηεο κεηαθνξάο θαη κπνξεί λα εθαξκνζηεί ζε έλα θνκκάηη κφλν ηεο επηθνηλσλίαο. Μπνξεί δειαδή λα εθαξκνζηεί κφλν ζε έλα κήλπκα SOAP αίηεζε θαη φρη ζε έλα κήλπκα SOAP απάληεζεο.

5.1.1 Οη Μεραληζκνί Αζθάιεηαο ησλ Μελπκάησλ SOAP

Οη κεραληζκνί αζθάιεηαο ησλ κελπκάησλ SOAP απνηεινχληαη απφ ηα ηεθκήξηα αζθάιεηαο (Security Tokens) ζε ζπλδπαζκφ κε ηελ XMLENC θαη ηηο

΢ει. 107 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

XMLDSIG. Σα ηεθκήξηα ή δηαπηζηεπηήξηα αζθάιεηαο έρνπλ σο ζθνπφ λα επηθπξψλνπλ ηηο αμηψζεηο αζθάιεηαο (claims) πνπ είλαη ε ζχλδεζε κεηαμχ ελφο κπζηηθνχ ή ελφο θιεηδηνχ κε θάπνην πξφζσπν ή γεληθά κε κία νληφηεηα. Με ηε ρξήζε ησλ αμηψζεσλ κέζσ ησλ ηεθκήξησλ αζθάιεηαο, κία νληφηεηα κπνξεί λα ππνγξάςεη ή λα θξππηνγξαθήζεη έλα θείκελν ρξεζηκνπνηψληαο ην ηδησηηθφ ηεο θιεηδί. Σα ηεθκήξηα αζθάιεηαο δηαθξίλνληαη ζε ηξείο θαηεγνξίεο: 

Username Token: Σεθκήξην ζπλζεκαηηθψλ.

Binary Security Tokens: o Χ.509 Token: Σεθκήξην ςεθηαθψλ πηζηνπνηεηηθψλ Χ.509. o Kerberos Token: Σεθκήξην Κέξβεξνο.

XML Tokens o SAML Token: Τεκμήριο SAML. o Rights Expression Language (REL) Token: Σεθκήξην γιψζζαο αλαπαξάζηαζεο δηθαησκάησλ. o SOAP with Attachments (SWA): Μελχκαηα SOAP κε επηζπλάςεηο.

Οη παξαπάλσ κεραληζκνί ηνπνζεηνχληαη ζηελ θεθαιίδα ηνπ κελχκαηνο SOAP κέζα ζην ζηνηρείν αζθάιεηαο <wsse:Security> θαη είλαη ζηελ νπζία νη κεραληζκνί πνπ πεξηέρνπλ πιεξνθνξίεο γηα ηελ απζεληηθνπνίεζε θαη ηελ εμνπζηνδφηεζε ηνπ κελχκαηνο. ΢χκθσλα κε ηηο απαηηήζεηο ηνπ κνληέινπ κπνξνχλ λα ρξεζηκνπνηνχληαη παξάιιεια θαη λα εκθαλίδνληαη πεξηζζφηεξεο απφ κία θνξέο. Σν ζηνηρείν απφγνλνο <wsse:Security> κπνξεί λα πεξηέρεη αθφκε ζηνηρεία φπσο ην <xenc:EncryptedKey> θαη κία ιίζηα αλαθνξψλ γηα λα πξνζδηνξηζηνχλ ηα θξππηνγξαθεκέλα κέξε ηνπ κελχκαηνο κε XMLENC. Η θεθαιίδα κπνξεί λα θξππηνγξαθεζεί ρξεζηκνπνηψληαο ην ζηνηρείν <wsse11:EncryptedHeader>. Σν ζηνηρείν απηφ πεξηέρεη έλα ζηνηρείν παηδί, ην <xenc:EncryptedData>, πνπ

΢ει. 108 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

αληηθαζηζηά ην πεξηερφκελν ηεο θεθαιίδαο. Οκνίσο, κπνξεί λα ζπκπεξηιακβάλεη έλα ζηνηρείν πνπ αλαθέξεηαη ζηα κέξε ηνπ θεηκέλνπ πνπ έρνπλ ππνγξαθεί ρξεζηκνπνηψληαο XMLDSIG (ζτήμα 5.1.2). Ο πξνζδηνξηζκφο ηεο εκβέιεηαο πνπ έρεη ε XMLENC ή κία XMLDSIG κπνξεί λα πξνζδηνξηζηεί κέζσ ηνπ ID ζην ζηνηρείν <anyElement wsu:Id="...">...</anyElement>. Σα παξαπάλσ ζηνηρεία κπνξνχλ λα ρξεζηκνπνηεζνχλ γηα ηελ δεκηνπξγία ελφο πςεινχ επηπέδνπ αζθάιεηαο ζε κηα επηρεηξεκαηηθή δηαδηθαζία BPEL. Γίλεηαη ε δπλαηφηεηα λα θξππηνγξαθεζνχλ θαη λα ππνγξαθνχλ επαίζζεηα δεδνκέλα φπσο αξηζκνί πηζησηηθψλ θαξηψλ, απφξξεηα έγγξαθα, κελχκαηα ειεθηξνληθήο αιιεινγξαθίαο θαη νηηδήπν��ε άιιν κπνξεί λα πξνζδηνξηζηεί σο εκπηζηεπηηθή πιεξνθνξία ζε κία ππεξεζία ηζηνχ BPEL.

΢ρήκα 5.1.2 Γνκή κελύκαηνο SOAP

΢ει. 109 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Γηα λα γίλεη γλσζηφ ζηνλ παξαιήπηε αλ πξέπεη λα πξνζπειάζεη ηελ θεθαιίδα

ην

ζρήκα

ρξεζηκνπνηεί

ηελ

πξναηξεηηθή

ηδηφηεηα

<wsse:Security/@S11:mustUnderstand>. Αλ ε ηηκή ηεο είλαη ην „1‟ ηφηε ν παξαιήπηε ρξεηάδεηαη λα αλαθηήζεη ην πεξηερφκελφ ηεο. Αλ φκσο ε ηηκή είλαη „0‟ ν παξαιήπηεο αγλνεί ην πεξηερφκελν ηεο θεθαιίδαο. Η ηδηφηεηα απηή εθαξκφδεηαη γηα ηηο εθδφζεηο κελπκάησλ SOAP 1.1 θαη 1.2. Γχν

αθφκε

πξναηξεηηθέο ηδηφηεηεο πνπ νξίδεη ην ζρήκα είλαη ε

<wsse:Security/@S11:actor> θαη <wsse:Security/@S12:role> πνπ έρνπλ ζθνπφ λα πξνζδηνξίζνπλ κία ζπγθεθξηκέλε δξάζε ή ξφιν κηαο θεθαιίδαο. Έλα παξάδεηγκα ρξήζε ηνπο κπνξεί λα είλαη κία εθαξκνγή πνπ ιεηηνπξγεί απνθιεηζηηθά ζε ιεηηνπξγηθφ

ζχζηεκα

windows

<wsse:Security

S11:actor="FooWindowsServer"…>. Σν ζηνηρείν <wsse:Security> ρξεζηκνπνηείηαη πεξηζζφηεξεο απφ κία θνξέο φηαλ νη παξαιήπηεο ηνπ κελχκαηνο είλαη πεξηζζφηεξνη ηνπ ελφο, πεξηέρνληαο ηηο αληίζηνηρεο πιεξνθνξίεο ζην θάζε έλα κπινθ. Η ρξήζε ζπλζεκαηηθψλ γηα ηελ πξφζβαζε ησλ ρξεζηψλ ζε κηα ππεξεζία είλαη κηα πνιχ ζπλεζηζκέλε ηαθηηθή αζθάιεηαο. Χζηφζν πνιινί είλαη νη θίλδπλνη πνπ ειινρεχνπλ. Σν Username Security Token Profile νξίδεη ηνλ αζθαιή ηξφπν πνπ πεξηθιείνληαη ηα ζπλζεκαηηθά ζε έλα κήλπκα SOAP. Ο θσδηθφο ελφο ρξήζηε, αλάινγα κε ην επίπεδν αζθάιεηαο πνπ απαηηείηαη, κπνξεί λα αλαπαξαζηαζεί κέζα ζην ηεθκήξην απηνχζηνο ή λα είλαη θξππηνγξαθεκέλνο κε ηε ρξήζε θάπνηνπ αιγφξηζκνπ θαηαθεξκαηηζκνχ. Αλ παξέρεηαη απηνχζηνο ηφηε κεηαθέξεηαη κέζσ ελφο αζθαινχο δηαχινπ επηθνηλσλίαο point-to-point. ΢ηελ πεξίπησζε φκσο πνπ ην επίπεδν αζθάιεηαο πξέπεη λα δηαηεξείηαη πςειφ, ν θσδηθφο θξππηνγξαθείηαη κε ηε ρξήζε ελφο αιγφξηζκνπ θαηαθεξκαηηζκνχ, κηαο ρξνλνζθξαγίδαο θαη κίαο ηπραίαο ζεηξάο (nonce) απφ bits παξάγνληαο κία ζχλνςε. Η ζχλνςε απηή πεξηέρεηαη ζην ζηνηρείν <wsse:PasswordType="wsse:PasswordDigest">. Με ηε ρξήζε ηεο ρξνλνζθξαγχδαο ζην ζηνηρείν <wsu:Created>, εηζάγεηαη ε έλλνηα ηεο ηπραίαο αθνινπζίαο bits γηα ηελ δεκηνπξγία ηεο ζχλνςεο. Αθφκε ν παξαιήπηεο ηνπ κελχκαηνο κπνξεί λα απνξξίςεη «παιαηά» κελχκαηα κηαο θαη ν ρξφλνο πνπ

΢ει. 110 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

δεκηνπξγήζεθαλ βξίζθεηαη εθηφο ηεο απνδεθηήο ρξνλνζπξίδαο πνπ έρεη νξηζηεί απφ ηνλ απνδέθηε. Η ηπραία ζεηξά bit (nonce) πνπ πεξηέρεηαη ζην ζηνηρείν <wsse:Nonce>, ζπκπεξηιακβάλεηαη ζηε δεκηνπξγία ηεο ζχλνςεο ψζηε λα ζσξαθίζεη ην κήλπκα απφ replay-attacks. Έηζη ζηελ πεξίπησζε πνπ ν παξαιήπηεο ιάβεη δεχηεξν κήλπκα κε ίδηα ζεηξά bit ηφηε ζα ην απνξξίςεη.

΢ρήκα 5.1.3 Παξάδεηγκα ελόο Username Token [12]

Σν ηεθκήξην απηφ κπνξεί λα ρξεζηκνπνηεζεί ζε επηρεηξεκαηηθέο δηαδηθαζίεο BPEL πνπ ρξεηάδεηαη εμνπζηνδνηεκέλε πξφζβαζε γηα λα εθηειεζηνχλ ή λα θαιέζνπλ άιιεο δηαδηθαζίεο. Έηζη φηαλ έλαο client ζέιεη λα ρξεζηκνπνηήζεη ηελ ππεξεζία ζα πξέπεη λα δψζεη ην username ηνπ θαη ην password πνπ ηνπ έρεη ήδε δνζεί. Σν ηεθκήξην απηφ ρξεζηκνπνηείηαη ζπρλά ζηηο επηρεηξεκαηηθέο δηαδηθαζίεο BPEL θαζψο νη πεξηπηψζεηο πνπ κφλν εμνπζηνδνηεκέλα άηνκα κπνξνχλ λα έρνπλ πξφζβαζε ζε απηέο είλαη πνιιέο. Μηα απφ ηηο πην ζπλεζηζκέλεο πεξηπηψζεηο ρξήζεο ηνπ είλαη ζηελ απζεληηθνπνίεζε ελφο ρξήζηε ζε έλα ειεθηξνληθφ θαηάζηεκα πνπ θαηά ηελ θάζε ηεο απνζηνιήο θαη πιεξσκήο κηαο παξαγγειίαο δεηείηαη ε απζεληηθνπνίεζε ηνπ.

΢ει. 111 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.1.2

Binary Security Tokens

Σν Username Token πνπ πεξηγξάθεθε ζηελ πξνεγνχκελε παξάγξαθν πεξηέρεη δεδνκέλα πνπ εθθξάδνληαη ζε XML. Χζηφζν, δελ κπνξνχλ λα αλαπαξαζηαζνχλ φιεο νη πιεξνθνξίεο αζθάιεηαο λα σο XML δεδνκέλα. Μεξηθά πξφηππα αζθάιεηαο είλαη ζε δπαδηθή κνξθή θαη γηα λα κπνξνχλ λα ππνζηεξηρηνχλ απφ ηελ WS-Security δεκηνπξγήζεθαλ ηα Binary Security Tokens. ΢ηελ θαηεγνξία απηή αλήθνπλ δχν πνιχ γλσζηέο πξνδηαγξαθέο πνπ ρξεζηκνπνηνχληαη επξέσο απφ ηηο ππάξρνπζεο εθαξκνγέο (O'Neill et al, 2003). Δίλαη ην X.509 Certificate Token Profile θαη ην Kerberos Token Profile. Σα δχν πξφηππα αλαθνηλψζεθαλ ηελ πξψηε Φεβξνπαξίνπ ηνπ 2006 απφ ηελ OASIS. Σα ςεθηαθά πηζηνπνηεηηθά X.509v3 έρνπλ ήδε αλαθεξζεί ζηηο ςεθηαθέο ππνγξαθέο XML θαη ηελ θξππηνγξάθεζε XML πνπ ζθνπφο ηνπο είλαη λα δηαζθαιίζνπλ φηη ην θιεηδί αλήθεη ζε έλα ζπγθεθξηκέλν απνζηνιέα. Οη πιεξνθνξίεο απηέο πεξηθιείνληαη απφ ην ζηνηρεηφ <KeyInfo>. Αθφκε κπνξνχλ κέζσ ηνπ X.509v3 Certificate Token Profile λα πεξηιακβάλνληαη ζην security header ελφο κελχκαηνο SOAP ψζηε λα εμππεξεηνχλ δηάθνξα ζελάξηα αζθάιεηαο. Μία πεξίπησζε ρξήζεο ηνπο είλαη φηαλ ην ζψκα ελφο κελχκαηνο SOAP είλαη θξππηνγξαθεκέλν θαη νη πιεξνθνξίεο ηνπ θιεηδηνχ βξίζθνληαη ζην security header (ζρήκα 5.1.3.1). Η ζπρλή ρξήζε ησλ ςεθηαθψλ πηζηνπνηεηηθψλ X.509v3 απφ δηάθνξεο εθαξκνγέο επηβάιεη ηελ πηνζέηεζε ηνπο θαη απφ ηηο επηρεηξεκαηηθέο δηαδηθαζίεο BPEL. Έηζη φηαλ απαηηείηαη έλα εκπηζηεπηηθφ κήλπκα κεηαμχ ππεξεζίαο θαη client ε ρξήζε ηνπ X.509v3 Certificate Token Profile μπορεί να ζπκβάιεη ζηελ δηαζθάιηζε ηεο εκπηζηεπηηθφηεηαο φηαλ ρξεζηκνπνηείηαη κε ηελ XMLENC θαη ζηελ αθεξαηφηεηα ηνπ κελχκαηνο φηαλ ρξεζηκνπνηείηαη κε ηηο XMLDSIG. Σν Kerberos Token Profile δεκηνπξγήζεθε ψζηε λα κπνξνχλ νη ππεξεζίεο ηζηνχ λα επηθνηλσλήζνπλ κε εθαξκνγέο πνπ ήδε ην έρνπλ πηνζεηήζεη αιιά θαη γηα λέεο ππεξεζίεο ηζηνχ. Σν ηεθκήξην ππνζηεξίδεη έμη δηαθνξεηηθέο εθδφζεηο ηνπ

΢ει. 112 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

πξνηχπνπ Kerberos εηζάγνληαο ηελ αληίζηνηρε έθδνζε ζηελ ηδηφηεηα ValueType ηνπ ζηνηρείνπ ξίδα <wsse:BinarySecurityToken> (ζρήκα 5.1.3.2). 1 2 3 4 5 6

http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile1.1#Kerberosv5_AP_REQ http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile1.1#GSS_Kerberosv5_AP_REQ http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile1.1#Kerberosv5_AP_REQ1510 http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile1.1#GSS_Kerberosv5_AP_REQ1510 http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile1.1#Kerberosv5_AP_REQ4120 http://docs.oasis-open.org/wss/oasis-wss-kerberos-token-profile1.1#GSS_Kerberosv5_AP_REQ4120 Όηαλ έλαο client ζέιεη λα απνθηήζεη απνθηήζεη πξφζβαζε ζε κία ππεξεζία

ηζηνχ πξέπεη λα ζηείιεη ηα δηαπηζηεπηήξηα ηνπ ζην Kerberos Domain Controller (KDC). O KDC επηθπξψλεη ηα δηαπηζηεπηήξηα θαη επηζηξέθεη ζηνλ client έλα Ticket Granting Ticket (TGT). Ο client χζηεξα κπνξεί κέζσ ηνπ TGT λα αηηεζεί πξφζβαζε ζηελ ππεξεζία ε νπνία κε ηε ζεηξά ηεο ηνπ απαληάεη κε έλα Service Granting Ticket (SGT). Η δηαδηθαζία απζεληηθνπνίεζεο Kerberos κπνξεί λα ρξεζηκνπνηεζεί κέζσ ηνπ token profile θαη ζε κηα επηρεηξεκαηηθή δηαδηθαζία BPEL ψζηε λα δψζεη πξφζβαζε ζε δηάθνξεο νληφηεηεο αθφκε θαη ζηελ ίδηα ηε δηαδηθαζία BPEL. Μπνξεί αθφκε λα ρξεζηκνπνηεζεί ζε ζπλδπαζκφ κε ηηο XMLDSIG

θαζψο

θαη

κε

ηελ

XMLENC.

Όηαλ

έλα

εηζηηήξην

Kerberos

πξνζδηνξίδεηαη σο θιεηδί κηαο ππνγξαθήο, κέζσ κηαο αλαθνξάο θαη ηνπ ζηνηρείν <wsse:SecurityTokenReference,

ηφηε ν αιγφξηζκνο ηεο ππνγξαθήο είλαη έλαο

θαηαθεξκαηηζκέλνο θσδηθφο απζεληηθνπνίεζεο κελπκάησλ. ΢ηελ πεξίπησζε πνπ έλα εηζηηήξην Kerberos πξνζδηνξίδεηαη σο θιεηδί θξππηνγξάθεζεο, πάιη κέζσ κηαο αλαθνξάο, ηφηε ν αιγφξηζκνο θξππηνγξάθεζεο είλαη έλαο ζπκκεηξηθφο.

΢ει. 113 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 5.1.3.1 X.509 Certificate Token Profile [16]

΢ρήκα 5.1.3.2 Kerberos Token Profile [18]

΢ει. 114 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.1.3

SAML Token Profile

H SAML παξνπζηάζηεθε ζηελ παξάγξαθν 3.4 σο κηα γιψζζα πνπ ζθνπφο ηεο είλαη λα δηαρεηξίδεηαη δεηήκαηα απζεληηθνπνίεζεο θαη ηαπηνπνίεζεο νληνηήησλ κεηαμχ ππεξεζηψλ ηζηνχ. Σν θχξην πιενλέθηεκά ηεο είλαη ε ραιαξή ζχδεπμε (loosely coupled) πνπ παξέρεη κεηαμχ ησλ ππεξεζηψλ ηζηνχ. Η SAML έρεη πνιιέο εθαξκνγέο ζε δηάθνξα πξφηππα πνπ έρνπλ δεκηνπξγεζεί γηα ηελ αζθάιεηα ησλ ππεξεζηψλ ηζηνχ θαη είλαη νη εμήο: 

WS-Security tokens: Οη ηζρπξηζκνί ηεο SAML ρξεζηκνπνηνχληαη κέζσ ηνπ XML SAML Security Token γηα ηελ αζθάιεηα ησλ κελπκάησλ SOAP.

Single Sign On (SSO) and Single Logout : Υξεζηκνπνηείηαη ζην πξφηππν SSO γηα ηελ απζεληηθνπνίεζε ελφο ρξήζηε θαηά ηελ κνλαδηθή είζνδν θαη έμνδφ ηνπ απφ κηα ππεξεζία.

Identity Federation: Υξεζηκνπνηείηαη γηα ηελ θνξεηφηεηα ηεο ηαπηφηεηαο κηαο νληφηεηαο ζηηο δηάθνξεο ππεξεζίεο ηζηνχ πνπ ζπλεξγάδνληαη.

Privacy-preserving identification: Υξεζηκνπνηείηαη γηα ηελ δηαηήξεζε ηεο ηδησηεθφηεηαο ηεο ηαπηφηεηαο. Δίλαη επνκέλσο έλα ηδαληθφ πξφηππν πνπ κπνξεί λα εθαξκνζηεί γηα ηε

δεκηνπξγία ελφο πςεινχ επηπέδνπ αζθάιεηαο ζε κία επηρεηξεκαηηθή δηαδηθαζία BPEL. Το SAML Token Profile 1.1 πξνηππνπνηήζεθε απφ ηελ OASIS ηελ πξψηε Φεβξνπαξίνπ ηνπ 2006 αληηθαζηζηψληαο ηελ πξνεγνχκελε έθδνζε 1.0 θαη δηαηεξψληαο πιήξε ζπκβαηφηεηα κε απηήλ. Αλήθεη ζηελ θαηεγνξία ησλ XML Tokens θαη ν ζθνπφο ηνπ είλαη λα ρξεζηκνπνηεί ηνπο ηζρπξηζκνχο (assertions) ηεο SAML γηα ηελ end-to-end αζθάιεηα ησλ κελπκάησλ SOAP. Μπνξεί λα ρξεζηκνπνηεζεί ζε ζπλδπαζκφ κε ηηο XMLDSIG θαη ηελ XMLENC κε ηε ρξήζε αλαθνξψλ (references) φπσο θαη ηα πξνεγνχκελα ηεθκήξηα αζθάιεηαο. Όηαλ ν παξαιήπηεο ιάβεη έλα κήλπκα SOAP, αλάινγα κε ηελ πνιηηηθή πνπ

΢ει. 115 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

αθνινπζεί, δηαβάδεη ην πεξηερφκελν ην ζηνηρείνπ <wsse:Security> ή κηα αλαθνξά πξνο έλα ηζρπξηζκφ SAML. Έλαο SAML ηζρπξηζκφο εζσθιείεηαη ζε έλα ζηνηρείν <wsse:SecurityTokenReference> ην νπνίν κπνξεί λα εκθαλίδεηαη σο παηδί ζε έλα ζηνηρείν <ds:KeyInfo> κηαο XMLDSIG. Τπάξρνπλ ηξείο δηαθνξεηηθνί ηξφπνη γηα λα δεκηνπξγεζεί κηα αλαθνξά ζε έλα SAML security token. 

Με ηε ρξήζε ηνπ ζηνηρείνπ <wsse:Reference> έρνληαο δψζεη έλα id ζηνλ ηζρπξηζκφ κέζσ ηνπ ζηνηρείνπ <wsu:Id>.

Με κία ελζσκαησκέλε αλαθνξά κέζσ ηνπ ζηνηρείνπ <wsse:Embedded> πνπ πεξηθιείεη ηνλ ηζρπξηζκφ.

Με ηε ρξήζε ηνπ ζηνηρείνπ <wsse:KeyIdentifier> πνπ πξνυπνζέηεη ηελ ρξήζε ηνπ ζηνηρείνπ <wsse:EncodedString> ζηνλ ηζρπξηζκφ (Kelvin et al., 2006). Ο ηζρπξηζκφο πνπ ζηέιλεη ν απνζηνιέαο γηα θάπνηα νληφηεηα (subject),

πξέπεη λα επηθπξσζεί κε θάπνην ηξφπν απφ ηνλ παξαιήπηε. Γηα ηελ επηθχξσζε ηνπ ηζρπξηζκνχ ην SAML security token profile ρξεζηκνπνηεί έλα απφ ηνπο δχν εμήο κεραληζκνχο: 

Holder-of-key

Sender-vouches

΢ηνλ πξψην κεραληζκφ ν απνζηνιέαο-αηηνχκελνο ζπκπεξηιακβάλεη κία XMLDSIG πνπ πεξηέρεη έλα ζηνηρείν <KeyInfo>. Μέζα ζην κπινθ ηνπ <KeyInfo> εκθσιεχεηαη κηα αλαθνξά SecurityTokenReference πνπ αλαθέξεηαη ζηελ ηνπνζεζία ηνπ ηζρπξηζκνχ. ΢ηελ πεξίπησζε απηή ν ηζρπξηζκφο SAML πεξηέρεη θάπνην θιεηδί, φπσο έλα ςεθηαθφ πηζηνπνηεηηθφ Χ.509, γηα λα ρξεζηκνπνηεζεί ζηελ επηθχξσζε ηεο ππνγξαθήο ηνπ κε ην ζηνηρείν <ConfirmationMethod>. ΢ηνλ δεχηεξν κεραληζκφ γηα λα επηθπξσζεί ε νληφηεηα ηνπ ηζρπξηζκνχ SAML ν απνζηνιέαο εγγπάηαη γηα απηφλ ρσξίο λα ζπκπεξηιάβεη ηελ ππνγξαθή ηνπ. Ο παξαιήπηεο έρεη ήδε έκπηζηε ζρέζε κε ηνλ απνζηνιέα γλσξίδνληαο ηελ ηαπηφηεηά ηνπ. Χζηφζν ν απνζηνιέαο

ζα

πξέπεη

λα

εγγπεζεί

ηελ

αθεξαηφηεηα

΢ει. 116 από 195

ηνπ

κελχκαηνο


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ρξεζηκνπνηψληαο κηα XMLDSIG (Rosenberg et al., 2004).

΢ρήκα 5.1.4 Παξάδεηγκα SAML Security Token Profile [17]

To ζπγθεθξηκέλν ηεθκήξην κπνξεί λα εθαξκνζηεί κε ηελ BPEL δίλνληαο κεγάιε επειημία ζε απιά θαη ηδηαίηεξα ζε πνιχπινθα ζελάξηα ρξήζεο. Αλ ζε κηα επηρεηξεκαηηθή δηαδηθαζία BPEL πνιιαπιέο νληφηεηεο αηηνχληαη πξφζβαζε ζε πνιιαπιέο ηνπνζεζίεο, ηφηε ην ζελάξην απηφ κπνξεί λα αληηκεησπηζηεί κε ηε ρξήζε ηνπ SAML Security Token Profile. Χζηφζν,

κεηνλέθηεκα

ηνπ

ζπγθεθξηκέλνπ

ηεθκεξίνπ

απνηεινχλ

νη

πνιιαπιέο επηζέζεηο πνπ κπνξεί λα δερηεί φπσο Message Insertion, Message Deletion, Message Modification, Replay, Eavesdropping θαη Man-in-the-Middle attack. Η αληηκεηψπηζε απηψλ ησλ απεηιψλ κπνξεί λα γίλεη κε δηάθνξεο ηερληθέο πνπ έρνπλ ήδε αλαθεξζεί φπσο ε Sing-Encrypt-Sign, νη ρξνλνζθξαγίδεο θαζψο θαη κε ηε ρξήζε ηνπ SSL.

΢ει. 117 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.1.4

XrML Security Token Profile 1.1

Η γιψζζα δηθαησκάησλ XrML παξνπζηάζηεθε ζηελ παξάγξαθν 3.6 σο κία γιψζζα πνπ ρξεζηκνπνηείηαη γηα λα δηαρεηξηζηεί ηα δηθαηψκαηα ησλ αξρείσλ πνπ δηαθηλνχληαη ζην δηαδίθηπν. Χζηφζν έρεη πηνζεηεζεί απφ ην πξφηππν WS-Security κε ην XrML Security Token Profile 1.1 ψζηε λα ρξεζηκνπνηείηαη γηα ηελ δηαθχιαμε ηεο εκπηζηεπηηθφηεηαο θαη ηεο αθεξαηφηεηαο ησλ κελπκάησλ. Όπσο θαη ηα ππφινηπα ηεθκήξηα έηζη θαη απηφ ηνπνζεηείηαη ζε κία θεθαιίδα αζθάιεηαο (security header) κέζσ ηνπ ζηνηρείνπ <r:license>. Μπνξεί επίζεο λα ρξεζηκνπνηεζεί κέζσ κηαο αλαθνξάο <wsse:SecurityTokenReference> πνπ πεξηέρεη ην URI ηνπ ηεθκεξίνπ.

΢ρήκα 5.1.5 XrML Token θαη XMLDSIG [19]

Σν XrML Token Profile αληηκεησπίδεη ην ίδην πξφβιεκα κε ην SAML Token Profile πνπ πξέπεη λα επηβεβαηψζνπλ κε θάπνην ηξφπν ηηο αμηψζεηο (claims) γηα κία νληφηεηα πνπ αληηπξνζσπεχεηαη κέζσ ηεο άδεηαο (license). Γηα λα ην πεηχρεη απηφ

΢ει. 118 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ην ηεθκήξην ρξεζηκνπνηεί κηα παξφκνηα ηερληθή κε ην SAML ηεθκήξην. Ο απνζηνιέαο κέζα ζην ζηνηρείν <r:lisence> ζπκπεξηιακβάλεη αλαγθαζηηθά έλα ζηνηρείν <r:grant> θαη έλα ζηνηρείν <r:KeyHolder> εηζάγνληαο ζε απηφ ην θιεηδί πνπ ζα ρξεζηκνπνηεζεί γηα ηελ αλαγλψξηζε ησλ αμηψζεσλ. Σν θιεηδί απηφ επηθπξψλεη κία XMLDSIG πνπ έρεη δεκηνπξγήζεη ν απνζηνιέαο γηα λα θξππηνγξαθήζεη κέξνο ηνπ κελχκαηνο SOAP νιφθιεξν ην ζψκα ηνπ (ζρήκα 5.1.5). Ο παξαιήπηεο επηθπξψλνληαο ηελ XMLDSIG κέζσ ηνπ θιεηδηνχ πνπ βξίζθεηαη ζην ζηνηρείν <r:KeyHolder> ηφηε εμνπζηνδνηεί νηηδήπνηε βξίζθεηαη ζην πεξηερφκελν

ηνπ

κελχκαηνο.

Αθξηβψο

ν

ίδηνο

κεραληζκφο

κπνξεί

λα

ρξεζηκνπνηεζεί γηα ηελ εκπηζηεπηηθφηεηα ελφο κελχκαηνο κε ηε ρξήζε ηεο XMLENC.

Σν

ζηνηρείν

<r:KeyHolder>

ζα

πεξηέρεη

πάιη

ην

θιεηδί

πνπ

απνθξππηνγξαθεί ην θξππηνγξαθεκέλν θνκκάηη ηνπ κελχκαηνο. Τπάξρνπλ ηξείο δηαθνξεηηθνί ηχπνη αδεηψλ. Ο πξψηνο ρξεζηκνπνηείηαη γηα λα πεξηγξάςεη ηελ άδεηα ελφο ζηνηρείνπ (Attribute Licenses) φπσο ζε πνηφλ αλήθεη έλα e-mail ή κηα ππεξεζία ηζηνχ πνπ κπνξεί λα είλαη κηα επηρεηξεκαηηθή δηαδηθαζία BPEL. Ο δεχηεξνο ηχπνο άδεηαο ρξεζηκνπνηείηαη γηα ηελ εμνπζηνδφηεζε ηνπ απνζηνιέα (Sender Authorization) λα ρξεζηκνπνηήζεη θάπνην πφξν φπσο έλα αξρείν ή κηα επηρεηξεκαηηθή δηαδηθαζία BPEL. Ο ηειεπηαίνο ηχπνο άδεηαο έρεη λα θάλεη κε ηελ εμνπζηνδφηεζε ελφο εθδφηε (Issuer Authorization) αδεηψλ λα εθδψζεη άδεηεο γηα ηνπο απνζηνιείο κελπκάησλ (DeMartini et al., 2006). Σν ηεθκήξην απηφ κπνξεί λα ρξεζηκνπνηεζεί κε επθνιία ζηηο επηρεηξεκαηηθέο δηαδηθαζίεο

BPEL

παξέρνληαο

έλα

κεραληζκφ

γηα

ηελ

δηαζθάιηζε

ηεο

εκπηζηεπηηθφηεηαο θαη ηεο αθεξαηφηεηαο ζηα κελχκαηα SOAP. Χζηφζν φπσο θαη ην ηεθκήξην ηεο SAML έρεη θαη απηφ πνιιαπιέο απεηιέο αζθάιεηαο.

΢ει. 119 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.2 WS-Policy Framework

Η δεκηνπξγία πνιηηηθψλ αζθάιεηαο γηα ηηο ππεξεζίεο ηζηνχ είλαη έλα ζεκαληηθφ θνκκάηη ζηε ζηνίβα ησλ πξνδηαγξαθψλ WS-Security. To πξφηππν WSPolicy δεκηνπξγήζεθε κε ζθνπφ λα πεξηγξάθεη ηνπο πεξηνξηζκνχο θαη ηηο απαηηήζεηο αζθάιεηαο κηαο ππεξεζίαο ηζηνχ. Θα κπνξνχζε λα είλαη έλα θνηλφ πξφηππν κε ηελ WSDL θαζψο απνηειεί ζηελ νπζία πξνέθηαζή ηεο, σζηφζν ηα πιενλεθηήκαηα ηνπ λα είλαη έλα μερσξηζηφ πξφηππν νδήγεζαλ ηελ W3C λα ην θαηνρπξψζεη σο έρεη. Η WSDL ρξεζηκνπνηείηαη γηα λα πεξηγξάςεη ηηο ιεηηνπξγίεο κηαο ππεξεζίαο ηζηνχ, ελψ ε WS-Policy πεξηγξάθεη κε ιεηηνπξγηθά θνκκάηηα φπσο ηελ αζθάιεηα θαη ηελ πνηφηεηα κηαο ππεξεζίαο. Με απηφ ηξφπν ε πεξηγξαθή κηαο ππεξεζίαο δελ είλαη κνλνιηζηθή. Αθφκε ε ρξήζε ησλ πνιηηηθψλ δελ πεξηνξίδεηαη κφλν ζηα, end-points φπσο ε WSDL, αιιά κπνξεί λα αθνξά πνιιέο νληφηεηεο δηαθνξεηηθνχ είδνπο φπσο θείκελα XML, βάζεηο δενκέλσλ θαη δηαθνξεηηθνχο δηαθφκηζεο (Rosenberg et al. 2004). Δπνκέλσο, ε επειημία πνπ κπνξεί λα δψζεη ε πξνδηαγξαθή

WS-Policy

ηελ

θαζηζηά

ηδαληθή

γηα

λα

εθαξκνζηεί

ζε

ππεξεζηνζηξεθήο αξρηηεθηνληθέο πνπ ζπλζέηνληαη κέζσ ηεο BPEL. Η WS-Policy είλαη ζηελ νπζία κηα γιψζζα πνπ κε ην ζπληαθηηθφ ηεο κπνξεί λα εθθξάζεη ηηο πνιηηηθέο αζθάιεηαο κηαο ππεξεζίαο θαη ηνλ ηξφπν πνπ ζπλδπάδνληαη γηα λα απνηειέζνπλ ηνπο ηζρπξηζκνχο αζθάιεηαο. Χζηφζν δελ αξθεί κφλν απηή ε πξνδηαγξαθή γηα λα εθαξκφζνπκε κηα πνιηηηθή αζθάιεηαο ζε κία επηρεηξεκαηηθή

πξνδηαγξαθή

BPEL. To WS-Policy

Framework

ζπλδπάδεη

δηαθνξεηηθέο πξνδηαγξαθέο φπσο ηελ WS-Policy, WS-PolicyAttachment, WSPolicyAssertions

θαη

WS-SecurityPolicy

ψζηε

λα

δεκηνπξγνχληαη

θαη

λα

επηζπλάπηνληαη ελαιιαθηηθέο πνιηηηθέο αζθάιεηαο ζε ππεξεζίεο ηζηνχ. Η πξνδηαγξαθή WS-PolicyAttachment παξέρεη ζηξαηεγηθέο γηα ηελ ζπζρέηηζε ησλ αξρείσλ πνιηηηθψλ αζθάιεηαο κε ζπγθεθξηκέλεο πεγέο φπσο κία πεξηγξαθή WSDL. Σν πξφηππν PolicyAssertions πεξηγξάθεη θνηλνχο ηζρπξηζκνχο πνιηηηθψλ αζθάιεηαο πνπ εθαξκφδνληαη ζε δηαθνξεηηθέο πεξηνρέο κε δηαθνξεηηθέο πνιηηηθέο.

΢ει. 120 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Η πξνδηαγξαθή WS-Security Policy πεξηγξάθεη ηζρπξηζκνχο πνιηηηθψλ αζθάιεηαο πνπ ζπζρεηίδνληαη άκεζα κε ην πξφηππν WS-Security.

5.2.1 WS-Policy Language

΢ην ζρήκα 5.2.1 παξνπζηάδεηαη έλα αξρείν WS-Policy πνπ κπνξεί λα ρξεζηκνπνηεζεί γηα ηελ θξππηνγξάθεζε ησλ κελπκάησλ επηθνηλσλίαο κηαο BPEL δηαδηθαζίαο. Σν ζηνηρείν ηειεζηήο <wsp:ExactlyOne> ππνδειψλεη φηη πξέπεη λα ρξεζηκνπνηεζεί έλαο απφ ηνπο δχν ηζρπξηζκνχο πνπ είλαη ζηνηρεία παηδηά ηνπ. Οη ηειεζηέο ηεο WS-Policy ζπλνιηθά είλαη δχν. Ο δεχηεξνο είλαη ν <wsp:All> πνπ επηβάιεη ηε ρξήζε φισλ ησλ ηζρπξηζκψλ. Οπφηε ζην παξαπάλσ παξάδεηγκα γηα ηελ θξππηνγξάθεζε ησλ κελπκάησλ είηε ζα ρξεζηκνπνηεζεί ν αιγφξηζκνο θξππηνγξάθεζεο

Basic256Rsa15,

είηε

ν

αιγφξηζκνο

θξππηνγξάθεζεο

TripleDesRsa15.

΢ρήκα 5.2.1.1 Παξάδεηγκα WS-Policy [14]

΢ην ζρήκα 5.2.1.1 παξνπζηάδεηαη ε δνκή κηαο πνιηηηθήο αζθάιεηαο πνπ έρεη σο ζηνηρείν ξίδα ην <wsp:Policy>. Σν ζηνηρείν απηφ κπνξεί λα έρεη δχν ηδηφηεηεο νη νπνίεο πξνζδηνξίδνπλ ηελ πνιηηηθή είηε κε έλα /wsp:Policy/@Name ψζηε λα ρξεζηκνπνηείηαη κέζσ απηνχ ζηα XML αξρεία, είηε κέζσ ελφο κνλαδηθνχ id -

΢ει. 121 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

/wsp:Policy/@wsu:Id γηα λα ρξεζηκνπνηείηαη κε ην πξφηππν WS-Security.

΢ρήκα 5.2.1.2 Γνκή κηαο πνιηηηθήο αζθάιεηαο

Με ηε ρξήζε ελφο ηειεζηή πξνζδηνξίδνληαη νη ελαιιαθηηθέο πνιηηηθέο (Policy Alternates). Οη ελαιιαθηηθέο πνιηηηθέο απνηεινχληαη απφ έλα ζχλνιν ηζρπξηζκψλ (assertions) ίδηνπ ηχπνπ (Vedamuthu et al., 2007). Έρνπλ σο ζθνπφ λα πεξηγξάςνπλ ηε ζπκπεξηθνξά-πνιηηηθή πνπ πξέπεη λα εθαξκνζηεί ζε έλα αληηθείκελν (subject). Με απηφ ηνλ ηξφπν θαζνξίδεηαη πνηνη ηζρπξηζκνί παξέρνληαη απφ ηελ ππεξεζία, ψζηε ν πειάηεο ε κία άιιε ππεξεζία λα ηελ αθνινπζήζεη. Έηζη κηα νληφηεηα πνπ ππνζηεξίδεη έζησ κία ελαιιαθηηθή πνιηηηθή κηαο ππεξεζίαο κπνξεί λα ηελ εθαξκφζεη. Γηα ηελ θαιχηεξε ιεηηνπξγία θαη επηινγή ησλ ελαιιαθηηθψλ πνιηηηθψλ, ην WS-Policy Framework 1.5 παξέρεη έλα βνεζεηηθφ εξγαιείν πνπ νλνκάδεηαη Policy Intersection. Όηαλ πνιιαπιέο πιεπξέο έρνπλ δεκηνπξγήζεη πνιιαπιέο πνιηηηθέο, ν κεραληζκφο απηφο κπνξεί λα επηιέμεη έλα ππνζχλνιν θνηλψλ

ελαιιαθηηθψλ πνιηηηθψλ.

Αξρηθά

ν κεραληζκφο ζηελ

πξνζπάζεηά ηνπ λα δεκηνπξγήζεη ζπκβαηφηεηα κεηαμχ ησλ πιεπξψλ θάλεη κία πξνεπηινγή κε ηηο πηζαλέο θνηλέο ελαιιαθηηθέο. Χο εθ ηνχηνπ, ν κεραληζκφο είλαη αλεμάξηεηνο απφ domains νπφηε χζηεξα κπνξεί λα απνθιείζεη ηηο αζχκβαηεο ελαιιαθηηθέο. Σν εξγαιείν απηφ κπνξεί λα έρεη πνιιαπιέο εθαξκνγέο ζηηο ππεξεζίεο BPEL φπσο ζηελ πεξίπησζε πνπ έλαο client ζέιεη λα πιεξνθνξεζεί ζρεηηθά κε ηηο ελαιιαθηηθέο πνιηηηθέο αζθάιεηαο πνπ ρξεζηκνπνηνχληαη γηα ηελ κεηαμχ ηνπο επηθνηλσλία.

΢ει. 122 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.2.2 WS-Policy Assertions

Έλαο

ηζρπξηζκφο

πνιηηηθήο

(Policy

Assertion)

αληηπξνζσπεχεη

κηα

απαίηεζε ή ηθαλφηεηα ή κία άιιε ηδηφηεηα κηαο ζπκπεξηθνξάο. Αθφκε, κπνξεί λα πξνζδηνξίδεη κία ζπκπεξηθνξά πνπ είλαη απαίηεζε ή ηθαλφηεηα ελφο αληηθεηκέλνπ πνπ πεξηιακβάλεηαη ζε κία πνιηηηθή αζθάιεηαο (Vedamuthu et. Al., 2007). Μπνξεί λα είλαη απινί ή θαη πνιχπινθνη. ΢ε κία πνιηηηθή κπνξνχλ λα ρξεζηκνπνηεζνχλ πνιιαπινί νκφηηκνη ηζρπξηζκνί πνπ ν θαζέλαο πξνζδηνξίδεη κηα ζπγθεθξηκέλε ζπκπεξηθνξά. Δπίζεο δίλεηαη ε δπλαηφηεηα λα ρξεζηκνπνηεζνχλ ηζρπξηζκνί πνπ πεξηέρνπλ εκθσιεπκέλεο εθθξάζεηο πνιηηηθψλ αζθάιεηαο, ζηελ νπζία δειαδή άιινπο

ηζρπξηζκνχο.

΢ηα

ραξαθηεξηζηηθά

ησλ

ηζρπξηζκψλ

ζπλήζσο

ζπκπεξηιακβάλεηαη κία ιεπηνκεξήο πεξηγξαθή ηνπο θαη έλα ζχλνιν απφ ηα έγθπξα αληηθείκελα πνπ ζα εθαξκνζηνχλ.

΢ρήκα 5.2.2.1 Policy Assertion with Assertion Parameters [13]

Δπηπξφζζεηα, ζπκπεξηιακβάλεηαη ην εχξνο ηζρχνο ηνπο γηα έλα ζπγθεθξηκέλν αληηθείκελν πνιηηηθήο. Αλ γηα παξάδεηγκα έλαο ηζρπξηζκφο ρξεζηκνπνηείηαη ζε κηα πνιηηηθή πνπ αλαθέξεηαη ζε έλα αληηθείκελν πνιηηηθήο endpoint, ηφηε ζηνλ ηζρπξηζκφ αλαθέξεηαη αλ ζα εθαξκνζηεί ζε έλα κφλν κήλπκα επηθνηλσλίαο ή ζε φια. Γηα λα ζπκπεξηιεθζνχλ νη επηπιένλ πιεξνθνξίεο ζηνπο ηζρπξηζκνχο ππάξρνπλ δχν ηερληθέο. Οη ηζρπξηζκνί κε παξακέηξνπο θαη νη εκθσιεπκέλνη ηζρπξηζκνί. ΢ην ζρήκα 5.2.2.1 παξνπζηάδεηαη έλαο ηζρπξηζκφο πνπ πξνζδηνξίδεη κέζσ ηνπ ζηνηρείνπ <sp:SignedParts> ηα κέξε ηνπ κελχκαηνο SOAP πνπ απαηηείηαη λα ππνγξαθνχλ. Οη παξάκεηξνη απηνχ ηνπ ηζρπξηζκνχ είλαη ην θπξίσο ζψκα θαη ε θεθαιίδα ηνπ κελχκαηνο. Οη εκθσιεπκέλνη ηζρπξηζκνί δίλνπλ

΢ει. 123 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

κεγαιχηεξε επειημία ζε πνιχπινθα ζελάξηα εθαξκνγήο πνιηηηθψλ αζθάιεηαο θαη κπνξνχλ λα ρξεζηκνπνηεζνχλ κε ην κεραληζκφ δηαηνκήο πνιηηηθψλ (policy intersection mechanism).

΢ρήκα 5.2.2.2 Transport Security Policy Assertion [13]

΢ην ζρήκα 5.2.2.2 παξνπζηάδεηαη κηα πνιηηηθή αζθάιεηαο πνπ έρεη σο αληηθείκελν εθαξκνγήο ηελ κεηαθνξά ησλ κελπκάησλ SOAP. Σν ζηνηρείν <sp:TransportBinding> απνηειεί ηνλ ηζρπξηζκφ ξίδα πνπ εκθσιεπκέλνο ζε απηφλ βξίζθεηαη ν ηζρπξηζκφο <sp:TransportToken>. Ο εκθσιεπκέλνο ηζρπξηζκφο επεθηείλεη ηελ ζπκπεξηθνξά ηνπ εμσηεξηθνχ ηζρπξηζκνχ πνπ απαηηεί ηε ρξήζε ελφο ζπγθεθξηκέλνπ token πνπ είλαη ην <sp:HttpsToken>. Ο <sp:AlgorithmSuite> είλαη ν δεχηεξνο εκθσιεπκέλνο ηζρπξηζκφο ζηνλ <sp:TransportBinding>, πνπ κε ηε ζεηξά ηνπ επεθηείλεη ηελ ζπκπεξηθνξά ηνπ. Η ζχληαμε ησλ εκθσιεπκέλσλ ηζρπξηζκψλ απαηηεί ηδηαίηεξε πξνζνρή θαζψο κπνξεί λα γίλνπλ ηδηαίηεξα πνιχπινθνη. Δπίζεο, πξνηείλεηαη ε ρξήζε ησλ XMLDSIG γηα ηελ πξνζηαζία ησλ ηζρπξηζκψλ κηαο θαη είλαη επάισηνη ζε επηζέζεηο.

΢ει. 124 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.2.3 WS-Attachments

Η πξνδηαγξαθή WS-Attachments δεκηνπξγήζεθε κε ζθνπφ λα επηζπλάπηεη ηηο πνιηηηθέο αζθάιεηαο κε ηα αληηθείκελα πνπ εθαξκφδνληαη. Γηα λα δεκηνπξγήζεη ηελ ζπζρέηηζε απηή δηαζέηεη δχν κεραληζκνχο. Ο πξψηνο επηηξέπεη ηηο πεξηγξαθέο ησλ πφξσλ πνπ βαζίδνληαη ζε XML (xml-based) λα ζπζρεηίδνληαη κε ηηο πνιηηηθέο αζθάιεηαο σο κέξνο ηνπ ίδηνπ ηνπ νξηζκνχ ηνπο. Ο δεχηεξνο κεραληζκφο επηηξέπεη ηελ ζπζρέηηζε ησλ πνιηηηθψλ αζθάιεηαο κε ηα αληηθείκελα πνιηηηθήο αζθάιεηαο αλεμάξηεηα απφ ην ζεκείν νξηζκνχ ηνπο.

΢ρήκα 5.2.3.1 Schema ηνπ ζηνηρείνπ PolicyAttachment [14]

΢ην ζρήκα 5.2.3.1 παξνπζηάδεηαη έλα ςεπδνζρήκα ηνπ αλεμάξηεηνπ κεραληζκνχ επηζχλαςεο πνιηηηθψλ. Με ην ζηνηρείν <wsp:AppliesTo> πξνζδηνξίδεηαη ην εχξνο (scope) εθαξκνγήο ηεο πνιηηηθήο. Δπίζεο ζην ίδην ζηνηρείν αλαθέξεηαη ε νλνκαηνινγία πνπ ρξεζηκνπνηείηαη ζε κηα πνιηηηθή. Με ην ζηνηρείν <Policy> αλαθέξεηαη κηα πνιηηηθή πνπ επηζπλάπηεηαη γηα έλα αληηθείκελν. ΢ην ζηνηρείν /wsp:PolicyAttachment/wsp:PolicyReference επηζπλάπηεηαη ε αλαθνξά κε έλα URI, πνπ δείρλεη ζην ζεκείν πνπ βξίζθεηαη ε πνιηηηθή αζθάιεηαο. Δπηπιένλ, κπνξεί

λα

ρξεζηκνπνηεζεί

ην

πξναηξεηηθφ

ζηνηρείν

/wsp:PolicyAttachment/wsse:Security γηα λα ζπκπεξηιάβεη κηα XMLDSIG ψζηε λα πξνζηαηεχνληαη απφ επηζέζεηο. Ο αλεμάξηεηνο ηξφπνο ζπζρέηηζεο πνιηηηθψλ αζθάιεηαο κε αληηθείκελα κπνξεί λα ρξεζηκνπνηεζεί κε ηελ WSDL θαη ην UDDI.

΢ει. 125 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Έηζη φηαλ έλαο client ε κία ππεξεζία ελεκεξψλεηαη γηα ηα ραξαθηεξηζηηθά κηαο επηρεηξεκαηηθήο δηαδηθαζίαο BPEL κπνξεί λα ιάβεη θαη πιεξνθνξίεο ζρεηηθά κε πνιηηηθή αζθάιεηαο. Με ηελ ηερληθή ηεο αλεμάξηεηεο επηζχλαςεο πνιηηηθψλ, δίλεηαη πεξηζζφηεξε επειημία ζηελ επαλαρξεζηκνπνίεζε ηνπο θαζψο θαη ζηηο αιιαγέο ηνπο. Ο ελζσκαησκέλνο ηξφπνο επηζχλαςεο πνιηηηθψλ κπνξεί λα ρξεζηκνπνηεζεί κε νπνηνδήπνηε αληηθείκελν XML.

5.2.4 WS Security Policy

Η πξνδηαγξαθή WS Security Policy 1.2 βξίζθεηαη ζηελ θνξπθή ηνπ WS Policy Framework θαη ν ζθνπφο ηνπ είλαη λα νξίδεη θνηλνχο ηξφπνπο πεξηγξαθήο κέζσ ηζρπξηζκψλ, γηα λα δεκηνπξγεζνχλ πνιηηηθέο αζθαιείαο πνπ εθαξκφδνληαη ζηα κελχκαηα SOAP. Αθφκε, παξέρεη επειημία ζηε ρξήζε ησλ ηεθκεξίσλ, ζηελ θξππηνγξάθεζε,

ηηο

ςεθηαθέο

ππνγξαθέο

θαη

ησλ

κεραληζκψλ

πνπ

ρξεζηκνπνηνχληαη κε ζηφρν ηελ δηαιεηηνπξγηθφηεηα πνπ βαζίδεηαη ζηε ζχγθιηζε (matching) ησλ ηζρπξηζκψλ. Δπηπξφζζεηα, ζηφρνο ηνπ είλαη ε λα επεθηείλεη θαη λα ελδπλακψζεη ηηο δπλαηφηεηεο ηνπ WS-Policy Framework, ηνπ WS-Trust θαζψο θαη ηνπ WS-SecureConversation θαζψο ρξεζηκνπνηείηαη ζε φια απηά ηα πξφηππα. Οη θχξηεο θαηεγνξίεο ησλ ηζρπξηζκψλ πνιηηηθήο αζθάιεηαο είλαη νη εμήο πέληε: i)

Security binding assertions

ii) Protection assertions iii) Token assertions iv) Supporting token assertions v) Protocol assertions Οη

ηζρπξηζκνί

δέζκεπζεο

αζθάιεηαο

(security

binding

΢ει. 126 από 195

assertions)


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ρξεζηκνπνηνχληαη

γηα

λα

θαζνξηζηεί

ν

θχξηνο

κεραληζκφο

ξνήο

πνπ

ρξεζηκνπνηείηαη ζηελ αληαιιαγή κελπκάησλ. Καζνξίδεη επίζεο ζεκαληηθέο ηδηφηεηεο ηνπ κεραληζκνχ φπσο ηα θιεηδηά πνπ ρξεζηκνπνηνχληαη θαη ηνπο αιγφξηζκνπο γηα ηελ θξππηνγξάθεζε. Σξείο δηαθνξεηηθνί ηχπνη ηζρπξηζκψλ αλήθνπλ ζε απηήλ ηελ θαηεγνξία πνπ ν θάζε έλαο θαιχπηεη δηαθνξεηηθά ζελάξηα. Οη ηζρπξηζκνί είλαη νη εμήο: 

Transport binding assertion: Υξεζηκνπνηείηαη φηαλ ε αζθάιεηα ησλ κελπκάησλ επηθνηλσλίαο

παξέρεηαη

απφ

ην

κέζν

κεηάδνζεο

ησλ

δεδνκέλσλ πνπ ζπλήζσο είλαη ην HTTPS. 

Asymmetric binding assertion: Ο ηζρπξηζκφο απηφο ρξεζηκνπνηείηαη ζηελ πεξίπησζε πνπ νη δχν πιεπξέο θαηέρνπλ ηεθκήξηα αζθάιεηαο φπσο ηα ςεθηαθά πηζηνπνηεηηθά Υ.509 θαη ρξεζηκνπνηείηαη ην δεκφζην θιεηδί ηνπ απνζηνιέα γηα ηελ θξππηνγξάθεζε θαη ην ηδησηηθφ ηνπ γηα ηελ απνθξππηνγξάθεζε.

Symmetric binding assertion: Αληίζηνηρα, ν ζπκκεηξηθφο ηζρπξηζκφο δέζκεπζεο ρξεζηκνπνηείηαη φηαλ εθαξκφδεηαη θξππηνγξάθεζε κε ην θνηλφ θιεηδί. Οη ηζρπξηζκνί πξνζηαζίαο (protection assertions) θαζνξίδνπλ πνηα κέξε ηνπ

κελχκαηνο ζα πξνζηαηεχνληαη. Γχν ηχπνη αλήθνπλ ζε απηήλ ηελ θαηεγνξία ησλ ηζρπξηζκψλ. Ο πξψηνο είλαη ν ηζρπξηζκφο αθεξαηφηεηαο πνπ ρξεζηκνπνηεί ηηο XMLDSIG θαη ν δεχηεξνο ηζρπξηζκφο εκπηζηεπηηθφηεηαο πνπ ρξεζηκνπνηεί αληίζηνηρα ηελ XMLENC. ΢πλνιηθά νη ηζρπξηζκνί ησλ δχν απηψλ ηχπσλ είλαη νη εμήο πέληε:  Signed Parts Assertion: Ιζρπξηζκφο θνκκαηηψλ πξνο ππνγξαθή.  Signed Elements Assertion: Ιζρπξηζκφο ζηνηρείσλ πξνο ππνγξαθή.  Encrypted Parts Assertion:Ιζρπξηζκφο θνκκαηηψλ πξνο θξππηνγξάθεζε.  Encrypted

Elements

Assertion:

Ιζρπξηζκφο

΢ει. 127 από 195

ζηνηρείσλ

πξνο


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θξππηνγξάθεζε.  Encrypted Elements Assertion: Ιζρπξηζκφο απαηηνχκελσλ ζηνηρείσλ Οη ηζρπξηζκνί ηεθκεξίσλ (token assertions) θαζνξίδνπλ πνηα απφ ηα ηεθκήξηα πνπ αλήθνπλ ζην πξφηππν WS-Security ζα ρξεζηκνπνηεζνχλ ψζηε λα πξνζηαηεχνπλ ηα κελχκαηα SOAP. Οη ηζρπξηζκνί ππνζηήξημεο ηεθκεξίσλ (supporting token assertions) ρξεζηκνπνηνχληαη

κε ζθνπφ λα παξέρνπλ

επηπξφζζεηεο αμηψζεηο (claims) ζηνπο clients θαη είλαη νη εμήο ηέζζεξεηο: 1. Supporting Tokens 2. Signed Supporting Tokens 3. Endorsing Supporting tokens 4. Signed Endorsing supporting tokens Οη ηζρπξηζκνί πξσηφθνιινπ (protocol assertions) θαζνξίδνπλ ηξείο ηχπνπο ηζρπξηζκψλ πνπ είλαη νη WSS10, WSS11 θαη Trust10 θαη ρξεζηκνπνηνχληαη θαη απηνί γηα ηελ πξνζηαζία ησλ κελπκάησλ επηθνηλσλίαο. Οη ηζρπξηζκνί WSS10 και WSS11 δεκηνπξγήζεθαλ θπξίσο γηα λα πξνζδηνξίδνπλ πφηε νη δηαθνκηζηέο πξέπεη λα πξνζπειαχλνπλ ηηο αλαθνξέο φπσο ηηο External URI References θαη Key Identifier References. Δλψ νη ηζρπξηζκνί ηχπνπ Trust10 θαζνξίδνπλ πφηε ν client θαη ν server ζα ελεξγνχλ αλάινγα κε ηηο απαηηήζεηο ηνπ ηζρπξηζκνχ, φπσο γηα παξάδεηγκα πφηε ε εληξνπία ηνπ δηαθνκηζηή απαηηείηαη κε ηε κνξθή ελφο θιεηδηνχ (Mihindukulasooriya, 2008). ΢πγθεληξσηηθά ην WS-Security Policy Framework απνηειεί έλα ηδαληθφ πξφηππν γηα λα εθαξκνζηεί ζε επηρεηξεκαηηθέο δηαδηθαζίεο BPEL κηαο θαη κπνξεί λα θαιχςεη κεγάιν εχξνο ζελαξίσλ πνιηηηθψλ αζθάιεηαο. Σα δχν βαζηθά πιενλεθηήκαηα ηνπ είλαη ε κεγάιε επειημία θαη ε δηαιεηηνπξγηθφηεηα πνπ πξνζθέξεη κεηαμχ ησλ δηαθνξεηηθψλ πνιηηηθψλ αζθάιεηαο πνπ ρξεζηκνπνηνχλ νη επηρεηξεκαηηθέο δηαδηθαζίεο BPEL. Δπίζεο, ε εχθνιε επαλαρξεζηκνπνίεζε ησλ λενδεκηνπξγεζέλησλ πνιηηηθψλ είλαη έλα αθφκε ζεηηθφ ζηνηρείν. Οη απεηιέο

΢ει. 128 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

αζθάιεηαο

θαη

ζε

απηφ

ην

πξφηππν

κπνξνχλ

λα

αληηκεησπηζηνχλ

ρξεζηκνπνηψληαο ηηο XMLDSIG θαη ηηο XMLENC.

5.3 WS-Trust

Η γιψζζα WS-Trust ρξεζηκνπνηεί ην κεραληζκφ αζθάιεηαο ησλ κελπκάησλ WS-Security γηα λα νξίζεη επηπξφζζεηεο επεθηάζεηο γηα ηελ αληαιιαγή ηεθκεξίσλ αζθάιεηαο. Έρεη σο ζθνπφ λα θαηαζηήζεη εθηθηή ηελ έθδνζε θαη ηελ αληαιιαγή ησλ δηαπηζηεπηεξίσλ ζηνπο δηαθνξεηηθνχο ηνκείο εκπηζηνζχλεο (trust domains) δηαθνξεηηθψλ ππεξεζηψλ ηζηνχ. Γηα λα δηαζθαιηζηεί ε αζθαιήο επηθνηλσλία κεηαμχ δχν πιεπξψλ, απαηηείηαη νη δχν πιεπξέο λα αληαιιάμνπλ ηα δηαπηζηεπηήξηα αζθάιεηαο είηε κε άκεζν ή έκκεζν ηξφπν. Χζηφζν, θάζε πιεπξά ρξεηάδεηαη λα θαζνξίζεη αλ κπνξεί λα εκπηζηεπηεί ηα δηαπηζηεπηήξηα ηεο άιιεο πνπ ηηο πεξηζζφηεξεο θνξέο είλαη εληειψο άγλσζηεο κεηαμχ ηνπο θαη δελ έρνπλ ζπλεξγαζηεί μαλά.

΢ρήκα 5.3.1 Σν κνληέιν αζθάιεηαο WS-Trust [2]

΢ει. 129 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Η πξνδηαγξαθή WS-Trust νξίδεη έλα κνληέιν (ζρήκα 5.3.1) γηα λα παξέρεη αζθαιή

αληαιιαγή

δηαπηζηεπηεξίσλ

θαη

δηαιεηην��ξγηθφηεηα

κεηαμχ

ησλ

δηαθνξεηηθψλ ηνκέσλ εκπηζηνζχλεο. Σν κνληέιν απηφ βαζίδεηαη ζηελ αίηεζε αμηψζεσλ (claims) απφ κία ππεξεζία ηζηνχ πξνο ηα εηζεξρφκελα κελχκαηα SOAP. ΢ηελ πεξίπησζε πνπ δελ παξέρνληαη θαη δελ απζεληηθνπνηνχληαη νη αμηψζεηο απηέο ην κήλπκα απνξξίπηεηαη απφ ηελ ππεξεζία. Η πξνδηαγξαθή ρξεζηκνπνηεί έλα κεραληζκφ αίηεζεο-απφθξηζεο (request-response) φπσο θαη ε SAML γηα ηελ απφθηεζε ησλ ηεθκεξίσλ αζθάιεηαο (Nadalin et.all, 2007). ΢ην ζρήκα 5.3.1 ζην νξζνγψλην κε ην γθξη θφλην παξνπζηάδεηαη ε Τπεξεζία Σεθκεξίσλ Αζθάιεηαο (Security Token Service) πνπ είλαη έλαο κεζίηεο εκπηζηνζχλεο. ΢θνπφο απηήο ηεο ππεξεζίαο είλαη λα απνθαζίδεη θαη λα δηαπηζηψλεη αλ ηα δηαπηζηεπηήξηα πνπ ζηέιλεη ν αηηνχκελνο είλαη άμηα εκπηζηνζχλεο γηα ηελ ππεξεζία πάξνρν. Γηα λα πξνζδηνξίζεη ν αηηνχκελνο πνηα πηζηνπνηεηηθά αζθάιεηαο ρξεηάδεηαη λα ζπκπεξηιάβεη ζηα κελχκαηά ηνπ, πιεξνθνξείηαη κέζσ ηεο ππεξεζίαο ηεθκεξίσλ εκπηζηνζχλεο, κε ηε ρξήζε ηνπ ζηνηρείνπ <RequestSecurityToken> (ζρήκα 5.3.2). Η ππεξεζία απηή πιεξνθνξείηαη γηα ηελ πνιηηηθή αζθάιεηαο πνπ απαηηεί ε ππεξεζία θαη ελεκεξψλεη ηνλ αηηνχκελν πεξηιακβάλνληαο ηηο απαξαίηεηεο πιεξνθνξίεο ζην ζηνηρείν <RequestSecurityTokenResponse> (ζρήκα 5.3.3). Ύζηεξα, ν αηηνχκελνο ζηέιλεη ην κήλπκα SOAP ζηελ ππεξεζία κε ηηο απαξαίηεηεο αμηψζεηο θαη ηεθκήξηα αζθάιεηαο. Παξαθάησ παξνπζηάδνληαη ηα βήκαηα πνπ εθηεινχληαη απφ ηελ κεραλή εκπηζηνζχλεο ηεο ππεξεζίαο: 

Βεβαηψλεη φηη νη αμηψζεηο πνπ βξίζθνληαη ζηα ηεθκήξηα είλαη επαξθείο γηα ηε ζπκκφξθσζε κε ηελ πνιηηηθή θαη φηη ην κήλπκα είλαη ζχκθσλν κε ηελ πνιηηηθή.

Βεβαηψλεη φηη ηα ραξαθηεξηζηηθά ησλ αμηψζεσλ απνδεηθλχνληαη κέζσ ησλ XMLDSIG. ΢ηα κνληέια δηακεζνιάβεζεο εκπηζηνζχλεο (brokered trust models) ε ππνγξαθή δελ κπνξεί λα εμαθξηβψζεη ηελ ηαπηφηεηα ηνπ ελάγνληνο. Οπφηε, δχλαηαη λα ειεγρηεί ε ηαπηφηεηα ηνπ ελδηάκεζνπ, πνπ κπνξεί λα πξνβάιεη απιά ηελ ηαπηφηεηα ηνπ αηηνχληνο. Έηζη, νη αμηψζεηο είηε

απνδεηθλχνληαη,

είηε

δελ

ζπκθσλνχλ

κε

΢ει. 130 από 195

ηελ

πνιηηηθή

θαη


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

απνξξίπηνληαη. 

Βεβαηψλεη φηη νη εθδφηεο ησλ ηεθκεξίσλ αζθάιεηαο (ζπκπεξηιακβαλνκέλνπ φισλ ησλ ζπζρεηηδφκελσλ εθδνηψλ ηεθκεξίσλ αζθάιεηαο) είλαη αμηφπηζηνη γηα λα εθδψζνπλ ηνπο ηζρπξηζκνχο. Η κεραλή εκπηζηνζχλεο κπνξεί λα ρξεηαζηεί λα πηζηνπνηήζεη ή λα δηακεζνιαβήζεη γηα ηα ηεθκήξηα εμσηεξηθά (Nadalin et.all, 2007).

Αλ νη ζπλζήθεο απηέο θαιχπηνληαη θαη ν αηηνχκελνο είλαη εμνπζηνδνηεκέλνο λα εθηειέζεη ηελ ιεηηνπξγία, ηφηε ε ππεξεζία ηξέρεη ην αίηεκα πνπ ηεο δεηήζεθε. ΢ην ζρήκα 5.3.2 παξνπζηάδεηαη ε δνκή ελφο αηηήκαηνο ηεθκεξίσλ απφ κία ππεξεζία

ηεθκεξίσλ

αζθάιεηαο.

΢ην

εζσηεξηθφ

ηνπ

ζηνηρείνπ

ξίδα

<wst:RequestSecurityToken> βξίζθνληαη ηα ζηνηρεία παηδηά ηνπ φπσο ην <wst:TokenType>,

ην

<wst:RequestType>

θαη

ην

<wsp:AppliesTo>

πνπ

πξνζδηνξίδνπλ ηνλ ηχπν ηνπ ηεθκεξίνπ, ηνλ ηχπν ηνπ αηηήκαηνο θαη ην αληηθείκελν πνπ εθαξκφδνληαη αληίζηνηρα. Σα πξναηξεηηθά ζηνηρεία <wst:Entropy> θαη <wst:Lifetime> πξνζδηνξίδνπλ ηελ εληξνπία γηα λα ρξεζηκνπνηεζεί ζηε δεκηνπξγία ηνπ θιεηδηνχ θαη ηελ δηάξθεηα δσήο πνπ πξέπεη λα έρεη ην ηεθκήξην αληίζηνηρα.

΢ρήκα 5.3.2 Η δνκή ηνπ ζηνηρείνπ <RequestSecurityToken> [15]

΢ην

ζρήκα

5.3.3

παξνπζηάδεηαη

ε

δνκή

΢ει. 131 από 195

ηνπ

ζηνηρείνπ


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

<wst:RequestSecurityTokenResponse> πνπ πιεξνθνξεί ηνλ αηηνχκελν γηα ηα ηεθκήξηα αζθάιεηαο θαη ηηο αμηψζεηο πνπ ρξεηάδεηαη λα ζπκπεξηιάβεη ζηα κελχκαηα επηθνηλσλίαο κε ηελ ππεξεζία πάξνρν. Η δνκή ηνπ είλαη παξαπιήζηα ηνπ ζηνηρείνπ <wst:RequestSecurityToken> θάηη πνπ είλαη αλακελφκελν κηαο θαη ηα κελχκαηα είλαη ηχπνπ request/response.

΢ρήκα 5.3.2 Η δνκή ηνπ ζηνηρείνπ <RequestSecurityToken> [15]

΢πγθεληξσηηθά, παξαηεξείηαη φηη ην κνληέιν WS-Trust ζπκπιεξψλεη θαη επεθηείλεη ην πξφηππν WS-Security απνηειψληαο έλα αθφκε εξγαιείν γηα ηε δεκηνπξγία ελφο πςεινχ επηπέδνπ αζθάιεηαο ζηηο ππεξεζίεο ηζηνχ θαη ηηο επηρεηξεκαηηθέο δηαδηθαζίεο BPEL. Δίλαη απφιπηα ζπκβαηφ κε ηα πξφηππα πνπ πεξηγξάθεθαλ έσο ηψξα θαη κπνξεί λα ρξεζηκνπνηεζεί κε ηε BPEL γηα λα εμαζθαιίζεη

ηε

δηαιεηηνπξγηθφηεηα

κεηαμχ

ησλ

δηαθνξεηηθψλ

πιεπξψλ

επηθνηλσλίαο πνπ έρνπλ δηαθνξεηηθνχο ηνκείο εκπηζηνζχλεο (trust domains). Οη απεηιέο αζθάιεηαο φπσο man-in-the-middle attack πνπ κπνξεί λα δερηεί απηή ε πξνδηαγξαθή κπνξεί λα αληηκεησπηζηνχλ κε ηηο ςεθηαθέο ππνγξαθέο θαη ηελ θξππηνγξάθεζε XML.

΢ει. 132 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.4 WS-Privacy

Η πξνδηαγξαθή WS-Privacy δελ έρεη αθφκε πξνηππνπνηεζεί ψζηε λα ζπκπιεξψζεη ηε ζηνίβα ησλ πξφηππσλ WS-Security. Χζηφζν, φηαλ δεκνζηεπζεί ν ζθνπφο ηνπ ζα είλαη λα επηηξέπεη ζηνπο παξφρνπο ππεξεζηψλ ηζηνχ θαη ηνπο αηηνχκελνπο απηψλ, λα θαζνξίδνπλ ηηο πξνηηκήζεηο ηδησηηθφηεηαο. Οη πιεξνθνξίεο γηα ην πξφηππν απηφ πεγάδνπλ απφ ηελ W3C θαη ην The Platform for Privacy Preferences 1.0 (P3P 1.0) πνπ δεκηνπξγήζεθε ζηηο 16 Απξηιίνπ ηνπ 2002. Αξρηθά ε πιαηθφξκα απηή ζρεδηάζηεθε γηα ηελ ηδησηηθφηεηα ησλ δηαδηθηπαθψλ εθαξκνγψλ.

Δπηηξέπεη

ζηνπο

νξγαληζκνχο

λα

θαζνξίδνπλ

ηελ

πνιηηηθή

ηδησηηθφηεηαο ηνπο κε έλα δνκεκέλν ηξφπν θαη λα ηελ ηνπνζεηνχλ ζε έλα web server. Ύζηεξα, έλαο P3P-browser πνπ ππνζηεξίδεη ηελ αλάγλσζε ησλ πνιηηηθψλ ηδησηηθφηεηαο, δηαβάδεη θαη ζπγθξίλεη ηελ πνιηηηθή ηδησηηθφηεηαο ηνπ νξγαληζκνχ θαη ηελ πνιηηηθή ηδησηηθφηεηαο ηνπ ρξήζηε πνπ έρεη θαζνξίζεη ζην δηθφ ηνπ browser. Με απηφ ηνλ ηξφπν ν ρξήζηεο κπνξεί λα ελεκεξσζεί απηφκαηα αλ ε δηθή ηνπ πνιηηηθή ηδησηηθφηεηαο ζπκβαδίδεη κε απηή ηεο δηαδηθηπαθήο εθαξκνγήο. Με ηελ ίδηα αθξηβψο ινγηθή έλαο ρξήζηεο ή κηα νληφηεηα ζα ελεκεξψλεηαη γηα ην αλ ε δηθή ηνπ πνιηηηθή ηδησηηθφηεηαο ζπκβαδίδεη κε ηελ πνιηηηθή ηδησηηθφηεηαο ηεο ππεξεζίαο ηζηνχ ή ηεο επηρεηξεκαηηθήο δηαδηθαζίαο BPEL. Έλα απιφ παξάδεηγκα ρξήζεο είλαη λα κελ επηηξέπεη έλαο ρξήζηεο ζε κία επηρεηξεκαηηθή δηαδηθαζία BPEL λα ρξεζηκνπνηνχληαη νη πξνζσπηθέο πιεξνθνξίεο ηνπ, φπσο ε γιψζζα πνπ έρεη πξνεπηιέμεη ή αθφκε θαη ε απηφκαηε ζπκπιήξσζε θνξκψλ κε ηα ζηνηρεία ηνπ.

5.5 WS-Secure Conversation

Σν πξφηππν WS-SecurityConversation είλαη απνηέιεζκα ζπλεξγαζίαο ησλ εηαηξηψλ IBM, Microsoft, RSA, θαη VeriSign. Απηή ηε ζηηγκή απνηειεί πξφηππν ηεο OASIS θαη βξίζθεηαη ζηελ έθδνζε 1.4. Η πξνδηαγξαθή απηή βξίζθεηαη ζην

΢ει. 133 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ηειεπηαίν επίπεδν ηεο ζηνίβαο ησλ πξνηχπσλ WS-Security θαη ν ζθνπφο ηεο είλαη λα επηηξέπεη ηελ εθαξκνγή ελφο αζθαινχο πεξηβάιινληνο θαη ηε δηακνίξαζή ηνπ θαζψο θαη ηελ αζθαιή εγθαηάζηαζε ζπλεδξηψλ θαη ηελ παξαγσγή θιεηδηψλ. Ο ζθνπφο ηνπ ζπκίδεη ην πξσηφθνιιν SSL κνλφ πνπ ε ζπγθεθξηκέλε πξνδηαγξαθή εθαξκφδεηαη end-to-end θαη φρη point-to-point. Σν πξφηππν WS-Security ζηνρεχεη θαη επηθεληξψλεηαη ζηελ αζθάιεηα ησλ κελπκάησλ SOAP. Χζηφζν, πνιιέο ζπλνκηιίεο κεηαμχ ππεξεζηψλ ηζηνχ γίλνληαη κε πνιιαπιά κελχκαηα κεηαμχ πνιιαπιψλ πιεπξψλ. Μελχκαηα πνπ έρνπλ ίδην παξαιήπηε θαη ίδην απνζηνιέα ρξεηάδεηαη λα απζεληηθνπνηεηζνχλ θάζε θνξά, απμάλνληαο ην ππνινγηζηηθφ θφζηνο. Σν πξφηππν έρεη δεκηνπξγεζεί ψζηε λα δηαζθαιίζεη ηελ εκπηζηεπηηθφηεηα θαη ηελ αθεξαηφηεηα ησλ ζπλνκηιηψλ απηψλ. Γηα λα ην πεηχρεη απηφ εγθαζηζηά έλα αζθαιέο πεξηβάιινλ (Security Context) πνπ πεξηέρεη έλα δηακνηξαδφκελν θνηλφ κπζηηθφ. Σν κπζηηθφ απηφ είηε θξππηνγξαθείηαη, είηε ππνγξάθεηαη απφ ηηο πιεπξέο πνπ ζπλνκηινχλ θαηά ηε δηάξθεηα κηαο ζπλφδνπ (session). Σν WS-SecureConverstion, φπσο θαη ην SSL, ρξεζηκνπνηεί ηδησηηθφ θιεηδί γηα ηελ θξππηνγξάθεζε ηεο εγθαηάζηαζεο ηνπ θνηλνχ κπζηηθνχ θαη ζηελ ζπλέρεηα ζπκκεηξηθφ κε ζθνπφ ηελ αχμεζε ηεο απνδνηηθφηεηαο. Γειαδή, ην ίδην ζπκκεηξηθφ θιεηδί ρξεζηκνπνηείηαη γηα ηελ θξππηνγξάθεζε θαη ηελ απνθξππηνγξάθεζε κηαο ζεηξάο κελπκάησλ πνπ βξίζθνληαη ζηελ ίδηα ζχλνδν. Έλα πεξηβάιινλ αζθάιεηαο εγθαζίζηαληαη κε ηε ρξήζε ηνπ ζηνηρείνπ <SecurityContextToken> (ζρήκα 5.5.1).

΢ρήκα 5.5.1 Γνκή ζηνηρείνπ SecurityContextToken [2]

΢ει. 134 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Σν ζηνηρείν παηδί <wsc:Identifier> πξνζδηνξίδεη κνλαδηθά ην SCT κε έλα κνλαδηθφ απφιπην URI. Κάζε SCT πξνηείλεηαη λα έρεη έλα κνλαδηθφ αλαγλσξηζηηθφ ζην ρψξν θαη ζην ρξφλν πνπ ζα είλαη γλσζηφ κφλν ζηηο πιεπξέο κηαο ζπλνκηιίαο θαηά ηε δηάξθεηα κηαο ζπλφδνπ. Σν ζηνηρείν <wsc:Identifier> ρξεζηκνπνηείηαη γηα λα πξνζδηνξίζεη ην λέν θιεηδί πνπ δεκηνπξγείηαη φηαλ αλαλεψλεηαη έλα STC, ψζηε λα δηαθνξνπνηείηαη απφ ην παιηφ ρσξίο λα ην απνθαιχπηεη. Σα ζηνηρεία <Created> θαη <Expires> ππνδειψλνπλ ηε ρξνληθφ δηάζηεκα πνπ ηζρχεη ε ζχλνδνο. Σν πξναηξεηηθφ ζηνηρείν <wsse:Keys> κπνξεί λα ρξεζηκνπνηεζεί θαηά ηελ πξψηε ρξήζε ηνπ ηεθκεξίνπ θαη πεξηιακβάλεη πιεξνθνξίεο γηα ην θνηλφ κπζηηθφ θιεηδί. Μπνξεί σζηφζν λα παξαιεθζεί αλ ην θνηλφ θιεηδί είλαη ήδε γλσζηφ κεηαμχ ησλ πιεπξψλ ηεο ζπλνκηιίαο. Σν ID ηνπ θιεηδηνχ απηνχ κπνξεί λα θξππηνγξαθεζεί κε ην ζηνηρείν <xenc:EncryptedKey/@Id>. Γηα

λα

εγθαηαζηαζεί

έλα

πεξηβάιινλ

αζθάιεηαο

ππάξρνπλ

ηξείο

δηαθνξεηηθνί ηξφπνη. 

Security Context Token Created by a Security Token Service: Έλα STC κπνξεί λα δεκηνπξγεζεί απφ κία ππεξεζία αζθάιεηαο ηεθκεξίσλ. Ο πξψηνο απνζηνιέαο ελφο κελχκαηνο SOAP κπνξεί λα αηηεζεί έλα STC ζηέιλνληαο

έλα

αίηεκα

ρξεζηκνπνηψληαο

ην

κεραληζκφ

<RequestSecurityToken> ηεο πξνδηαγξαθήο WS-Trust. H STS δεκηνπξγεί έλα STC θαη απνθξίλεηαη κε ηνλ αληίζηνηρν κεραληζκφ ηεο πξνδηαγξαθήο WS-Trust

<RequestSecurityTokenResponse>.

΢ην

ζηνηρεηφ

απηφ

πεξηιακβάλνληαη δχν αλαθνξέο ε <SecurityTokenReference> θαη ε <ProofTokenReference> πνπ παξαπέκπνπλ ζην STC θαη ην θιεηδί αληίζηνηρα. 

Security Context Token Created by One of the Communicating Parties and Propagated with a Message: ΢ην δεχηεξν ηξφπν κία έκπηζηε πιεπξά κπνξεί λα δεκηνπξγήζεη θαη λα δηακνηξάζεη ζηηο ππφινηπεο έλα STC.

Security

Context

Token

Created

Through

Negotiation:

Όηαλ

νη

ζπκκεηέρνπζεο πιεπξέο κηαο ζπλνκηιίαο ρξεηάδεηαη λα δηαπξαγκαηεπηνχλ

΢ει. 135 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ην πεξηερφκελν ελφο STC, ηφηε ρξεζηκνπνηείηαη ν ηξίηνο ηξφπνο δεκηνπξγίαο ηνπ. Ο ηξφπνο απηφο επηηξέπεη ζηηο ζπκκεηέρνπζεο πιεπξέο λα αληαιιάμνπλ πιεξνθνξίεο ψζηε λα θαηαιήμνπλ ζε έλα θνηλφ πεξηβάιινλ αζθάιεηαο (Nadalin et al., 2009). Η ζπγθεθξηκέλε πξνδηαγξαθεί απνηειεί κηα πνιχ ζεκαληηθή επέθηαζε ηνπ WS-Security πξνζζέηνληαο έλα ζεκαληηθφ εξγαιείν αζθάιεηαο ζηελ SOA θαη ζηελ BPEL. Η επειημία πνπ πξνζθέξεη είλαη κνλαδηθή θαζψο αλαπαξηζηά ζηελ νπζία ηε ιεηηνπξγία ηνπ SSL ζε end-to-end επηθνηλσλίεο. Μπνξεί λα ρξεζηκνπνηεζεί δεκηνπξγψληαο έλα πνιχ πςειφ επίπεδν αζθάιεηαο ζην επίπεδν εθαξκνγήο (OSI), θάηη πνπ κπνξεί λα ζπλδπαζηεί ηδαληθά κε ηηο επηρεηξεκαηηθέο δηαδηθαζίεο BPEL πνπ πνιιέο θνξέο δελ είλαη απνδεθηφ λα ππάξρεη ππνςία απεηιήο αζθάιεηαο. Χζηφζν, ε πξνδηαγξαθή απφ κφλε ηεο δελ κπνξεί λα δψζεη θακία εγγχεζε αζθάιεηαο πξνο ηηο απεηιέο αλ δελ ρξεζηκνπνηεζεί νξζά ζε ζπλδπαζκφ κε ηηο πξνδηαγξαθέο WS-Security θαη WS-Trust.

5.6 WS-Federation

Σν πξφηππν WS-Federation απνηειεί απνηέιεζκα ζπλεξγαζίαο εηαηξεηψλ φπσο ε BEA Systems, BMC Software, CA,IBM, Layer 7 Technologies, Microsoft, Novell, θαη VeriSign. Απηή ηε ζηηγκή βξίζθεηαη ζηελ έθδνζε 1.2 θαη απνηειεί πξφηππν ηεο OASIS. Ο ζθνπφο ηεο νκνζπνλδηαθήο πξνδηαγξαθήο είλαη λα θαζνξίδεη θαη λα θαηαζηήζεη εθηθηή ηελ νκνζπνλδηαθή εκπηζηνζχλε (federated trust), ηελ νκνζπνλδία ηαπηφηεηαο, ηεο απζεληηθνπνίεζεο (SSO) θαη πιεξνθνξηψλ εμνπζηνδφηεζεο κεηαμχ ππεξεζηψλ ηζηνχ, ρξεζηκνπνηψληαο ηα πξφηππα WSSecurity, WS-Policy, WS-Trust, θαη WS-SecureConversation. Απηφ ζεκαίλεη φηη κηα νκάδα ππεξεζηψλ ηζηνχ ή κία νκάδα επηρεηξεκαηηθψλ δηαδηθαζηψλ BPEL, κπνξνχλ λα επηθνηλσλνχλ κεηαμχ ηνπο κε έλα ζχλνιν εληαίσλ πξνηχπσλ θαη πνιηηηθψλ γηα ηελ πηζηνπνίεζε ησλ νληνηήησλ, κε ζθνπφ ηε κεηαηξνπή ελφο ηχπνπ ηεθκεξίσλ αζθάιεηαο κηαο νληφηεηαο ζε δηαθνξεηηθφ ηχπν. Γηα παξάδεηγκα

΢ει. 136 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ην πξφηππν απηφ κπνξεί λα δηεπζεηήζεη ην πξφβιεκα κεηαμχ δηαθνξεηηθψλ ηεθκεξίσλ αζθάιεηαο δχν επηρεηξεκαηηθψλ πξνδηαγξαθψλ πνπ ε κία ρξεζηκνπνηεί ην Χ.509 Security Token Profile θαη ε άιιε ην Kerberos Security Token Profile. Η πξνδηαγξαθή WS-Trust θαη WS-Policy ρξεζηκνπνηνχληαη γηα λα πξνζδηνξίδνπλ πνηα ηεθκήξηα παξέρνληαη θαη πψο λα εθαξκνζηνχλ γηα λα επηθνηλσλήζνπλ κε εμσηεξηθέο ππεξεζίεο. Η βαζηθή πξνζέγγηζε ηεο WS-Federation ζε κία ππεξεζηνζηξεθήο αξρηηεθηνληθή είλαη λα κπνξεί λα ελζσκαηψζεη ηηο ππάξρνπζεο ππνδνκέο θαη λα είλαη ηθαλή λα ηηο δηαρεηξίδεηαη ρσξίο λα δεκηνπξγήζεη λέεο βαζηθέο ππνδνκέο. Καηά ζπλέπεηα, έλα ππεξεζηνζηξεθέο ζχζηεκα πξέπεη λα επηηξέπεη ζηελ WS-Federation ηελ δηαρείξηζε ησλ δηαθνξεηηθψλ πνιηηηθψλ αζθάιεηαο. Οη απαηηήζεηο ηεο πξνδηαγξαθήο είλαη νη εμήο: 

Δλεξγνπνίεζε ηεο θαηάιιειεο δηακνίξαζεο ηεο ηαπηφηεηαο (identity federation) , ηεο απζεληηθνπνίεζεο θαη ηεο εμνπζηνδφηεζεο ησλ δεδνκέλσλ ρξεζηκνπνηψληαο δηαθνξεηηθνχο ή παξφκνηνπο κεραληζκνχο.

Να

επηηξέπεη

νκνζπνλδία

ρξεζηκνπνηψληαο

δηαθνξεηηθνχο

ηχπνπο

ηεθκεξίσλ αζθάιεηαο, ηνπνινγίεο εκπηζηνζχλεο θαη ππνδνκέο αζθάιεηαο. 

Να δηεπθνιχλεη ηελ δηακεζνιάβεζε εκπηζηνζχλεο θαη ηελ αληαιιαγή ησλ ηεθκεξίσλ αζθάιεηαο κέζσ ησλ κελπκάησλ SOAP θαη ησλ Web Browsers ρξεζηκνπνηψληαο ηνπο θνηλνχο κεραληζκνχο θαη ηε ζεκαζηνινγία πνπ δηέπνπλ ηηο ππάξρνπζεο ππνδνκέο.

Να εθθξάδεη ηα νκνζπνλδηαθά κεηαδεδνκέλα γηα λα δηεπθνιχλεη ηελ επηθνηλσλία θαη ηε δηαιεηηνπξγηθφηεηα κεηαμχ ησλ ζπκκεηερφλησλ κηαο ππεξεζηνζηξεθήο πεξηνρήο.

Να επηηξέπεη ηελ ραξηνγξάθεζε ηαπηφηεηαο ψζηε λα είλαη δηαζέζηκε ζε θάζε αηηνχληα, θάζε ππεξεζία ζηφρν ε νπνηαδήπνηε IP/STS.

Να παξέρεη ππνζηήξημε ραξηνγξάθεζεο ηαπηφηεηαο ζηελ πεξίπησζε πνπ ε

΢ει. 137 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ππεξεζία ζηφρνο επηιέμεη λα δηαηεξήζεη πξναηξεηηθά ηνπηθέο ηαπηφηεηεο ρσξίο λα απαηηεί ηνπηθέο ηαπηφηεηεο. 

Να επηηξέπεη ζηα δηαθνξεηηθά επίπεδα ηδησηηθφηεηαο λα αλαγλσξίδνπλ πιεξνθνξίεο θαη ζηνηρεία.

Να επηηξέπεη ηελ απζεληηθνπνίεζε αιιά θαη ηελ αλψλπκε νκνζπνλδία παξάιιεια (Goodner et al., 2009). ΢ην ζρήκα 5.6.1 παξνπζηάδεηαη ε δηαδηθαζία Single-Sign-On πνπ

ρξεζηκνπνηείηαη απφ ηελ WS-Federation γηα λα επηηξέςεη ζε έλα ρξήζηε λα απνθηήζεη πξφζβαζε ζε δηαθνξεηηθέο ππεξεζίεο κε δηαθνξεηηθά trust domains. Σν SSO

ρξεζηκνπνηείηαη

επξέσο

ζηηο

ππεξεζηνζηξεθήο

αξρηηεθηνληθέο

πνπ

ζπλζέηνληαη κε ηελ BPEL. Η δηαδηθαζία έρεη νθηψ βήκαηα: 1) Αλ ε αηηνχκελε ππεξεζία δελ γλσξίδεη ηελ πνιηηηθή αζθάιεηαο ηεο επηρεηξεκαηηθήο δηαδηθαζίαο BPEL κπνξεί λα ηελ αλαθηήζεη κε ηελ αλάγλσζε ησλ κεηαδεδνκέλσλ, κέζσ ηεο ρξήζεο ηνπ κεραληζκνχ αλάγλσζεο κεηαδεδνκέλσλ ηνπ πξνηχπνπ WS-MetadataExchange, πνπ έρνπλ νξηζηεί ζην αξρείν WSDL. Μπνξεί αθφκε λα ρξεζηκνπνηήζεη κηα ππεξεζία UDDI πνπ παξέρεη ζρεηηθέο πιεξνθνξίεο ζε φπνηεο ππεξεζίεο ηηο ρξεηάδνληαη. 2) Η πνιηηηθή αζθάιεηαο γίλεηαη γλσζηή ζηελ αηηνχκελε ππεξεζία κέζσ ηνπ κεραληζκνχ ηεο πξνδηαγξαθήο WS-MetadataExchange. 3) Η αηηνχκελε ππεξεζία ζηέιλεη έλα αίηεκα ηεθκεξίνπ αζθάιεηαο ζηελ δηθή ηνπ ππεξεζία IP/STS κέζσ ηνπ κεραληζκνχ <RequestSecurityToken> πνπ αλήθεη ζην πξφηππν WS-Trust. Απηφ γίλεηαη γηα λα απζεληηθνπνηεζεί αξρηθά ν ρξήζηεο ζην δηθφ ηνπ trust domain. 4) Η ππεξεζία IP/STS ζπληάζζεη θαη επηζηξέθεη έλα ηεθκήξην αζθάιεηαο καδί κε νπνηεζδήπνηε πιεξνθνξίεο απνδεηθλχνπλ ηελ θαηνρή ηνπ, κέζσ ησλ κεραληζκψλ

<RequestSecurityTokenResponse>

΢ει. 138 από 195

θαη


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

<RequestedProofToken>. 5) Η αηηνχκελε ππεξεζία δεκηνπξγεί έλα αίηεκα ηεθκεξίνπ αζθάιεηαο γηα ηελ ππεξεζία IP/STS ηεο επηρεηξεκαηηθήο δηαδηθαζίαο BPEL, κε ηε ρξήζε πάιη ηνπ κεραληζκνχ <RequestSecurityToken>. 6) Η ππεξεζία IP/STS ηεο ππεξεζίαο BPEL αληαπνθξίλεηαη ζην αίηεκα επηζηξέθνληαο

έλα

ηεθκήξην

ζπκπεξηιακβάλνληαο

ηα

απαξαίηεηεο

πιεξνθνξίεο ζην κεραληζκφ <RequestSecurityTokenResponse>. 7) Η αηηνχκελε ππεξεζία ζηέιλεη ζηελ επηρεηξεκαηηθή δηαδηθαζία BPEL έλα αίηεκα αζθάιεηαο, φπσο πξφζβαζε ζε έλα πφξν, ρξεζηκνπνηψληαο ην πξφηππν WS-Security γηα λα πξνζηαηέςεη ην κήλπκα SOAP απφ ηηο πηζαλέο απεηιέο. 8) Η ππεξεζία BPEL ζπληάζζεη κηα απάληεζε βάζε ηνπ ηεθκεξίνπ ηνπ αηηνχκελνπ (Goodner et.al., 2009). ΢πγθεληξσηηθά, ε ζπγθεθξηκέλε πξνδηαγξαθή απνηειεί αλαπφζπαζην θνκκάηη κηαο ππεξεζηνζηξεθήο αξρηηεθηνληθήο εμαζθαιίδνληαο ηελ θνξεηφηεηα ηεο ηαπηφηεηαο θαη ηελ νκνζπνλδία ησλ δηαθνξεηηθψλ ηνκέσλ εκπηζηνζχλεο κεηαμχ δηαθνξεηηθψλ ππεξεζηψλ ηζηνχ. Χζηφζν, ρξεηάδεηαη ηδηαίηεξε πξνζνρή ζηελ αληαιιαγή ησλ κελπκάησλ SOAP θαη ηελ εθαξκνγή ησλ πνιηηηθψλ αζθάιεηαο ψζηε λα πξνζηαηεπηεί θαζνιηθά έλα ππεξεζηνζηξεθέο ζχζηεκα.

΢ρήκα 5.6.1 WS-Federation κεηαμύ δηαθνξεηηθώλ trust domains [2]

΢ει. 139 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

5.7 WS-Authorization

Ο ζθνπφο ηεο πξνδηαγξαθήο WS-Authorization είλαη λα πεξηγξάθεη πσο νη πνιηηηθέο αζθάιεηαο κηαο ππεξεζίαο ηζηνχ θαζνξίδνληαη θαη δηαρεηξίδνληαη. ΢ηφρνο ηεο είλαη λα πεξηγξάθεη ηνλ ηξφπν πνπ νη αμηψζεηο κπνξνχλ λα θαζνξηζηνχλ κέζα ζηα δηάθνξα ηεθκήξηα αζθάιεηαο θαη ην ηξφπν πνπ κπνξνχλ λα γίλνπλ θαηαλνεηά απφ ηελ νληφηεηα πνπ έρνπλ σο ζηφρν εθαξκνγήο. Η WS-Authorization επεθηείλεη ηηο δπλαηφηεηεο ησλ πξνηχπσλ WS-Security θαη WS-Trust νξίδνληαο επηπιένλ ζηνηρεία γηα ηελ αζθαιή δεκηνπξγία, αληαιιαγή θαη δηακνίξαζε ησλ ηεθκεξίσλ αζθάιεηαο ζε δηάθνξνπο ηνκείο εκπηζηνζχλεο. Χζηφζν, δελ έρεη πξνηππνπνηεζεί αθφκε ε πξνδηαγξαθή απηή θαζψο ρξεζηκνπνηείηαη γηα ηνλ ίδην ζθνπφ κε πνιχ κεγάιε επηηπρία ε XACML (βιέπε παξάγξαθν 3.5) (Bertino et al., 2009).

Δπίινγνο

Η νηθνγέλεηα πξνηχπσλ WS-Security έρεη δεκηνπξγεζεί γηα λα παξέρεη έλα πςειφ επίπεδν αζθάιεηαο ζηελ αληαιιαγή κελπκάησλ SOAP κεηαμχ κηαο αηηνχκελεο ππεξεζίαο θαη κηαο ππεξεζίαο πάξνρν. Μπνξεί λα εθαξκνζηεί ζε ππεξεζηνθεληξηθέο

αξρηηεθηνληθέο

πνπ

ρξεζηκνπνηνχλ

ηελ

BPEL

σο

ελνξρεζηξσηή, κεηψλνληαο ζε κεγάιν βαζκφ ηα ηξσηά ηνπο ζεκεία. Σα πξφηππα αιιεινζπκπιεξψλνληαη θαη ε νξζή ιεηηνπξγία ηνπ ελφο πξνυπνζέηεη ηελ χπαξμε ηεο νξζήο ιεηηνπξγίαο ηνπ άιινπ. Η WS-Trust δεκηνπξγεί έλα κπινθ γηα λα βαζηζηνχλ νη ζρέζεηο εκπηζηνζχλεο κεηαμχ ησλ ππεξεζηψλ θαη νξίδεη κεραληζκνχο γηα ηε δεκηνπξγία ηεθκεξίσλ αζθάιεηαο. Η WS-SecureConversation ρξεζηκνπνηεί απηνχο ηνπο κεραληζκνχο γηα λα ππνζηεξίμεη κε απνδνηηθφ ηξφπν, κέζσ ζπλφδσλ,

ηελ

αληαιιαγή

πνιιαπιψλ

κελπκάησλ

κεηαμχ

ησλ

πιεπξψλ

ζπλνκηιίαο. Η WS-Federation επεθηείλεη ηελ WS-Trust δίλνληαο ηελ δπλαηφηεηα ζπλεξγαζίαο ζε δηάθνξεο ππεξεζίεο θαη επηρεηξεκαηηθέο δηαδηθαζίεο κε ην SingleSign-On. To WS-Policy framework πξνζδηνξίδεη ηηο πνιηηηθέο αζθάιεηαο κέζσ ησλ

΢ει. 140 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ηζρπξηζκψλ πνπ πεξηγξάθνπλ ηηο απαηηήζεηο θαη ηηο ηθαλφηεηεο θάζε ππεξεζίαο ηζηνχ. Η WS-Privacy θαη WS-Authorization δελ έρνπλ αθφκε δεκνζηεπζεί σο standard, σζηφζν ζθνπφο ηνπο είλαη λα αληηπξνζσπεχνπλ ηηο απαηηήζεηο ηδησηηθφηεηαο θαη λα δηαρεηξίδνληαη ηηο πνιηηηθέο αζθάιεηαο αληίζηνηρα. ΢ην επφκελν θεθάιαην παξνπζηάδεηαη κία πεξίπησζε ρξήζεο γηα λα θαηαλνεζεί θαιχηεξα ν ηξφπνο ρξήζεο ηεο WS-Security.

΢ει. 141 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Κεθάιαην 6o : Πεξίπησζε Υξήζεο BPEL κε WSSecurity

Δηζαγσγή

΢ην θεθάιαην απηφ πεξηγξάθεηαη θαη αλαιχεηαη έλα ζελάξην ρξήζεο ηεο BPEL κε ηελ πξνδηαγξαθή WS-Security θαη WS-Policy. Δπίζεο, παξνπζηάδνληαη ηα εξγαιεία δεκηνπξγίαο ηνπ ζελαξίνπ.

6.1 Δξγαιεία Αλάπηπμεο Πεξίπησζεο Υξήζεο

6.1.1 Eclipse

Σν eclipse είλαη έλαο νινθιεξσκέλνο editor γηα ηελ αλάπηπμε ινγηζκηθνχ θαζψο ππνζηεξίδεη πιεζψξα γισζζψλ πξνγξακκαηηζκνχ θαη επεθ��άζεσλ (plugins).

Παξέρεη

(debugging),

ηελ

δειαδή

εξγαιεία

εγθαηάζηαζε

γηα ηελ δεκηνπξγία,

(deployment)

θαη

ηελ

ηελ

δηφξζσζε

εθηέιεζε

θψδηθα.

Υξεζηκνπνηείηαη ζε κεγάιν βαζκφ απφ developers είηε απηνί είλαη αλεμάξηεηνη, είηε εξγάδνληαη ζε θάπνηα εηαηξία αλάπηπμεο ινγηζκηθνχ. Δίλαη δσξεάλ (freeware) αιιά θαη αλνηρηνχ πεγαίνπ θψδηθα (open source software). Αθφκε, έρεη πιήξε ζπκβαηφηεηα κε ηα ηξία ηειεπηαία ιεηηνπξγηθά MS-Windows 32-64Bit. Χζηφζν, έρνπλ δεκηνπξγεζεί δηαλνκέο γηα Linux θαη MacOS έρνληαο αθξηβψο ην ίδην εχρξεζην γξαθηθφ πεξηβάιινλ ρξήζεο (GUI). Η έθδνζε πνπ ρξεζηκνπνηήζεθε γηα ηελ αλάπηπμε ηνπ ζελαξίνπ ρξήζεο είλαη ε eclipse-Helios 3.6 IDE for SOA developers

πνπ

βξίζθεηαη

ζηελ

ειεθηξνληθή

΢ει. 142 από 195

δηεχζπλζε


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

http://www.eclipse.org/downloads/. Η ζπγθεθξηκέλε έθδνζε ππνζηεξίδεη ηελ αλάπηπμε ππεξεζηψλ ηζηνχ (ζρήκα 6.1.1.1) θάηη πνπ ζεκαίλεη φηη παξέρεη επηπιένλ

εξγαιεία

φπσο

ην

BPMN

(ζρήκα

6.1.1.2)

πνπ

κνληεινπνηεί

επηρεηξεκαηηθέο δηαδηθαζίεο θαη παξάγεη απηφκαηα XML – BPEL θψδηθα θαη ην STP Policy Editor πνπ ρξεζηκνπνηείηαη γηα ηελ δεκηνπξγία πνιηηηθψλ αζθάιεηαο.

΢ρήκα 6.1.1.1 Γεκηνπξγία λέαο ππεξεζίαο ηζηνύ κε ην eclipse.

6.1.2

Eclipse BPEL Designer

Μηα πνιχ ρξήζηκε επέθηαζε ηνπ eclipse είλαη ην BPEL Designer plugin πνπ

΢ει. 143 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

κπνξεί πνιχ εχθνια λα εγθαηαζηαζεί απφ ηελ επηινγή Help Install New Software

Add

κέζσ

ηεο

http://download.eclipse.org/technology/bpel/update-site/.

Με

δηεχζπλζεο ην

ζπγθεθξηκέλν

plugin δίλεηαη ε δπλαηφηεηα λα δεκηνπξγεζνχλ λέα BPEL projects κέζα απφ έλα πνιχ εχρξεζην γξαθηθφ πεξηβάιινλ.

΢ρήκα 6.1.1.2 Γηάγξακκα ΒPMN κε ην BPMN tool ηνπ eclipse

Γηα λα δεκηνπξγήζνπκε έλα λέν BPEL project επηιέγνπκε File New Other BPEL 2.0 BPEL Project (ζρήκα 6.1.2.1). Ύζηεξα εηζάγνπκε ην φλνκα ηνπ project θαη επηιέγνπκε Finish. ΢ηελ αξηζηεξή πιεπξά ηνπ eclipse βξίζθεηαη ν project explorer. Απφ εθεί επηιέγνπκε ην project πνπ κφιηο δεκηνπξγήζεθε θαη κε δεμί θιηθ επηιέγνπκε New Other BPEL 2.0 New BPEL Process File. Ο designer παξάγεη κηα βαζηθή δνκή κηαο δηαδηθαζίαο BPEL πνπ απεηθνλίδεηαη σο workflow, αιιά παξάγεη απηφκαηα θαη ηνλ BPEL θψδηθα πνπ εκθαλίδεηαη επηιέγνληαο ηελ θαξηέια Source. Γηα λα εηζάγνπκε δξαζηεξηφηεηεο ζηε δηαδηθαζία αξθεί λα επηιέμνπκε δεμί θιηθ add θαη εκθαλίδεηαη άκεζα κία ιίζηα κε φιεο ηηο δξαζηεξηφηεηεο ηεο BPEL (ζρήκα 6.1.2.2). H ιίζηα απηή είλαη ζηελ νπζία κηα παιέηα απφ δξαζηεξηφηεηεο θαη κπνξεί λα εκθαληζηεί κφληκα ζηελ δεμηά πιεπξά

΢ει. 144 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ηνπ eclipse κε ηελ επηινγή Show Palette in Palette View. ΢ηελ δεμηά πιεπξά ηνπ eclipse

εκθαλίδεηαη

κηα

παιέηα

πνπ

πεξηέρεη

δηάθνξεο

επηινγέο

φπσο

εηζαγσγή/δηαγξαθή Partner Links, Variables, Correlation Sets και Message Exchange.

΢ρήκα 6.1.2.1 Γεκηνπξγία BPEL project.

Μέζα απφ ηελ θαξηέια properties πνπ βξίζθεηαη θάησ απφ ην ρψξν ζρεδίαζεο, δίλεηαη ε δπλαηφηεηα πξνζδηνξηζκνχ ησλ ξπζκίζεσλ ηεο δηαδηθαζίαο. Μπνξεί δειαδή λα πξνζδηνξηζηνχλ ηα Partner Links (ζρήκα 6.1.2.3) νη ηχπνη ησλ κεηαβιεηψλ θαη ε δηαρείξηζή ηνπο, αιιά κπνξνχκε λα εηζάγνπκε (ζρήκα 6.1.2.4). Καηά ηε δηάξθεηα δεκηνπξγίαο ηεο δηαδηθαζίαο BPEL δεκηνπξγείηαη απηφκαηα ην αξρείν .wsdl ηεο πεξηγξαθήο ηεο θαη ηνπνζεηείηαη ζην project πνπ έρνπκε δεκηνπξγήζεη. Σν αξρείν απηφ κπνξνχκε λα ην δνχκε επηιέγνληαο δηπιφ θιηθ. Δκθαλίδεηαη είηε ζε γξαθηθφ πεξηβάιινλ είηε ζε θψδηθα XML επηιέγνληαο αληίζηνηρα Design/Source (ζρήκα 6.1.2.5). Γηα λα δεκηνπξγήζνπκε έλα web

΢ει. 145 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 6.1.2.2 Πεξηβάιινλ ζρεδίαζεο BPEL δηαδηθαζίαο.

΢ρήκα 6.1.2.3 Γεκηνπξγία Partner Link.

΢ει. 146 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 6.1.2.4 Γηαρείξηζε κεηαβιεηώλ.

΢ρήκα 6.1.2.5 Αξρείν πεξηγξαθήο .wsdl δηαδηθαζίαο BPEL.

΢ει. 147 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 6.1.2.6 Γεκηνπξγία web service binding.

service binding απφ ηελ design view ηνπ αξρείνπ .wsdl, επηιέγνπκε δεμί θιηθ ζηνλ θελφ ρψξνAdd Binding. Ύζηεξα, απφ ηηο ξπζκίζεηο δίλνπκε ην φλνκα ηνπ binding θαη επηιέγνπκε Generate Binding Content. Έηζη εκθαλίδεηαη ην wizard ηνπ ζρήκαηνο 6.1.2.6. Δπηιέγνπκε ην Port-Type θαζψο, ην SOAP σο πξσηφθνιιν θαη παηάκε Finish. Η δηαδηθαζία BPEL είλαη έηνηκε γηα λα εθηειεζηεί αιιά πξέπεη πξψηα λα γίλεη deploy κέζσ ηνπ αληίζηνηρνπ αξρείνπ deploy.xml. ΢ην αξρείν απηφ ζπκπεξηιακβάλνληαη ε ιίζηα κε ηηο δηαδηθαζίεο θαη ηηο ππεξεζίεο πνπ επξφθεηην λα εθηειεζηνχλ απφ ηνλ server Apache Tomcat. Γηα λα δεκηνπξγήζνπκε απηφ ην αξρείν επηιέγνπκε ην project καο δεμί θιηθ New Other BPEL 2.0 Apache ODE Deployment Descriptor Finish. Μεηά απφ απηήλ ηελ επηινγή εκθαλίδεηαη ην πεξηερφκελν

ηνπ

ζρήκαηνο

6.1.2.7.

Δπηιέγνπκε

απφ

ηα

Inbound

Interfaces(Services) Associated Port γηα ηνλ client ηελ αληίζηνηρε πφξηα. H πφξηα απηή είλαη ζηελ νπζία ε πχιε εηζφδνπ πξνο ηελ δηαδηθαζία. Γηα λα ξπζκίζνπκε ηελ πχιε εμφδνπ απφ ηελ δηαδηθαζία επηιέγνπκε απφ Outbound Interfaces(Invokes)

΢ει. 148 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 6.1.2.7 Γεκηνπξγία αξρείνπ deploy.xml.

ηελ ππεξεζία ζπλεξγάηε γηα ηελ δηαδηθαζία καο θαη κε απηφ ηνλ ηξφπν έρεη πεξαησζεί ε δεκηνπξγία ηνπ αξρείνπ deploy.xml. Γηα λα δνθηκάζνπκε ηε ιεηηνπξγία ηεο δηαδηθαζίαο επαλεθθηλνχκε ην Eclipse θαη απφ ηελ θαξηέια ησλ servers επηιέγνπκε δεμί θιηθ ζηνλ Ode v1.x Server at localhost, πνπ έρνπκε ήδε εγθαηαζηήζεη, ψζηε λα εηζάγνπκε ηελ δηαδηθαζία γηα λα γίλεη deploy.

Αθνχ

εηζάγνπκε ην Project καο ζηελ ιίζηα ησλ configured επηιέγνπκε Finish θαη εθθηλνχκε ηνλ ODE server. Γηα λα ηεζηάξνπκε ηελ δηαδηθαζία κπνξνχκε είηε λα πάκε

ζηε

δηεχζπλζε

http://localhost:8080/ode/process/WS_invocation

κέζσ

νπνηνπδήπνηε browser είηε κέζσ ηνπ Eclipse θαη ηνπ Web Services Explorer

΢ει. 149 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

επηιέγνληαο δεμί θιηθ ζην αξρείν .wsdl ηεο δηαδηθαζίαο καο Web Services Test with Web Services Explorer.

΢ρήκα 6.1.2.8 Ο Web Services Explorer ηνπ Eclipse.

6.1.3 Java

H Java ρξεζηκνπνηήζεθε σο γιψζζα αλάπηπμεο επεηδή είλαη γξήγνξε, εχθνιε θαη παξέρεη έηνηκεο ζπλαξηήζεηο. Έρεη ηελ δπλαηφηεηα λα επεθηαζεί πνιχ εχθνια κε ηελ εηζαγσγή αξρείσλ .jar ζην project, δίλνληαο κε απηφ ηνλ ηξφπν πεξηζζφηεξεο

θιάζεηο

ζηνλ

πξνγξακκαηηζηή.

Δπίζεο,

΢ει. 150 από 195

νη

servers

πνπ


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ρξεζηκνπνηήζεθαλ (Apache Tomcat, Apache Axis2) έρνπλ απφιπηε ζπκβαηφηεηα κε ηελ ζπγθεθξηκέλε γιψζζα.

6.1.4 Apache Tomcat v7.0

O Tomcat είλαη έλαο server πνπ έρεη ηελ δπλαηφηεηα λα εθηειεί servlets αξρεία java. Δίλαη open source θαη freeware ινγηζκηθφ θαη κπνξεί εχθνια λα απνθηεζεί απφ ηελ ζειίδα http://tomcat.apache.org. Η εγθαηάζηαζή ηνπ είλαη πνιχ απιή. Σν κφλν πνπ ρξεηάδεηαη είλαη απνζπκπίεζε ησλ αξρείσλ ηνπ.

6.1.5 Apache Axis2 θαη Apache Rampart Module

Ο Apache Axis2 είλαη κηα κεραλή εθηέιεζεο Web Services, SOAP και WSDL. ΢ην ζελάξην ρξήζεο πνπ παξνπζηάδεηαη παξαθάησ ρξεζηκνπνηείηαη σο κεραλή SOAP θαζψο ππνζηεξίδεη φιεο ηηο πξνδηαγξαθέο αζθάιεηαο WS-Security.

΢ρήκα 6.1.5 Απνζηνιή θαη παξαιαβή κελπκάησλ SOAP [21].

΢ει. 151 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Ο Axis παξέρεη ηηο εμήο ιεηηνπξγίεο: 

Απνζηνιή κελπκάησλ SOAP.

Παξαιαβή θαη επεμεξγαζία κελπκάησλ SOAP.

Γεκηνπξγία κηαο ππεξεζίαο ηζηνχ κέζσ κίαο ππάξρνπζαο Java θιάζεο.

Γεκηνπξγία θιάζεσλ κέζσ ησλ αξρείσλ WSDL ηνπ client θαη ηνπ server.

Δχθνιε αλάθηεζε ηεο πεξηγξαθήο WSDL κηαο ππεξεζίαο

Απνζηνιή θαη παξαιαβή κελπκάησλ SOAP κε επηζπλαπηφκελα.

Γεκηνπξγία ππεξεζηψλ πνπ ππνζηεξίδνπλ ηε ζηνίβα πξνδηαγξαθψλ WS* (Apache Software Foundation, 2010).

΢ην ζρήκα 6.1.5 παξνπζηάδεηαη ν ηξφπνο απνζηνιήο θαη παξαιαβήο κελπκάησλ SOAP. Αξρηθά ν απνζηνιέο δεκηνπξγεί ην κήλπκα. Οη “ρεηξηζηέο” ηνπ Axis (Axis “handlers) εθηεινχλ ηηο απαξαίηεηεο δξαζηεξηφηεηεο φπσο ηελ εηζαγσγή ππνγξαθήο, θξππηνγξάθεζεο ή νπνπδήπνηε άιιε δηαδηθαζία πνπ έρεη λα θάλεη κε ηελ αζθάιεηα θαη ηελ πξνδηαγξαθή WS-Security. Ύζηεξα, ην κήλπκα απνζηέιιεηαη απφ ην επίπεδν απνζηνιήο (OSI). Η πιεπξά ηνπ δέθηε δέρεηαη ην κήλπκα θαη κέζσ ηνπ αθξναηή κεηαθνξάο πνπ βξίζθεηαη ζην αληίζηνηρν επίπεδν κεηαβηβάδεηαη ζηνπο Axis ρεηξηζηέο. Οη ρεηξηζηέο επεμεξγάδνληαη ην κήλπκα θαη ην παξαδίδνπλ ζηελ θαηάιιειε εθαξκνγή (Apache Software Foundation, 2010). Η εγθαηάζηαζε ηνπ Axis2 είλαη ζρεηηθά απιή. Αξρηθά θαηεβάδνπκε κηα έθδνζε

.war

απφ

ηελ

http://axis.apache.org/axis2/java/core/download.cgi.

Ύζηεξα,

δηεχζπλζε βάδνπκε

ην

αληηγξάθνπκε ην αξρείν απηφ ζην θάθειν webapps ηνπ Tomcat γηα λα γίλεη deploy κνιηο εθθηλήζνπκε ηνλ Tomcat. O axis δηαζέηεη επίζεο έλα module γηα λα παξαθνινπζνχκε ηα κελχκαηα SOAP θαη κπνξεί λα απνθηεζεί απφ ηελ δηεχζπλζε

΢ει. 152 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

http://axis.apache.org/axis2/java/core/modules/index.html. Σν Apache Rampart module είλαη έλα module πνπ έρεη δεκηνπξγεζεί γηα λα ζπλεξγάδεηαη απφιπηα κε ηνλ Axis2. ΢θνπφο ηνπ είλαη ε ππνζηήξημε ηεο αζθάιεηαο βάζε ηεο νηθνγέλεηαο πξνδηαγξαθψλ WS-Security. Μπνξεί λα απνθηεζεί απφ ηελ δηεχζπλζε

http://axis.apache.org/axis2/java/rampart/download.html

θαη

λα

εγθαηαζηαζεί εχθνια αληηγξάθνληαο ηα δχν module ζηνλ αληίζηνηρν θάθειν ηνπ Axis2, αιιά θαη φια ηα αξρεία .jar απφ ηνλ θάθειν Rampart/lib ζηνλ αληίζηνηρν θάθειν ηνπ Axis2.

6.2 Πεξηγξαθή Πεξίπησζεο Υξήζεο

Η πεξίπησζε ρξήζεο αλαθέξεηαη ζε κηα ππεξεζία ηζηνχ ελφο ειεθηξνληθνχ θαηαζηήκαηνο πνπ δηαρεηξίδεηαη ηηο παξαγγειίεο θαζψο θαη ηελ πιεξσκή ηνπο.

΢ρήκα 6.2.1 Πεξηγξαθή πεξίπησζεο ρξήζεο

΢ει. 153 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Ο πειάηεο φηαλ νινθιεξψζεη ηηο αγνξέο ηνπ επηιέγεη απνζηνιή παξαγγειίαο ζπκπιεξψλνληαο ηα ζηνηρεία ηνπ γηα ηελ απνζηνιή ηεο παξαγγειίαο. Η ππεξεζία πνπ δέρεηαη ηελ παξαγγειία ππνινγίδεη ην θφζηνο απνζηνιήο ηεο παξαγγειίαο θαζψο θαη ην ρξνληθφ δηάζηεκα απνζηνιήο ηεο. Ύζηεξα, ελεκεξψλεηαη ν ρξήζηεο γηα ην ζπλνιηθφ πνζφ ηεο παξαγγειίαο θαη ηνπ δεηείηαη λα δψζεη ηα ζηνηρεία ηεο πηζησηηθήο ηνπ θάξηαο γηα λα δηεθπεξαησζεί ε πιεξσκή. Ο ρξήζηεο ζπκπιεξψλεη ηα ζηνηρεία ηνπ ζε κηα θφξκα θαη ε ππεξεζία δηαρείξηζεο παξαγγειηψλ ηα θξππηνγξαθεί θαη ηα ππνγξάθεη απηφκαηα αθνινπζψληαο ηελ πνιηηηθή αζθάιεηαο ηεο ππεξεζίαο PaymentService. Η επηθνηλσλία κεηαμχ ησλ ππεξεζηψλ γίλεηαη κέζσ κελπκάησλ SOAP θαη γηα λα πξνζηαηεπηεί ζην επίπεδν κεηαθνξάο ρξεζηκνπνηείηαη ην πξσηφθνιιν SSL. Η ππεξεζία πιεξσκήο ειέγρεη ηα ζηνηρεία ηεο πηζησηηθήο κέζσ ηεο αληίζηνηρεο ηξάπεδαο θαη αλάινγά κε ηελ εγθπξφηεηα ηνπο νινθιεξψλεη ηελ ζπλαιιαγή ή ελεκεξψλεη ηελ ππεξεζία γηα ηνίρσλ πξνβιήκαηα. ΢ηελ ζπλέρεηα ε ππεξεζία δηαρείξηζεο παξαγγειηψλ ελεκεξψλεη ηνλ πειάηε γηα ηελ εμέιημε ηεο πιεξσκήο (ζρήκα 6.2.1). Σν ζπγθεθξηκέλν ζελάξην ζπλαληάηαη πνιχ ζπρλά ζηα ειεθηξνληθά θαηαζηήκαηα θαη θπζηθά απνηειεί ην θξηζηκφηεξν ζεκείν ησλ ειεθηξνληθψλ αγνξψλ.

6.3 Αλάιπζε Κώδηθα Πεξίπησζεο Υξήζεο

6.3.1 Τπεξεζία Γηαρείξηζεο Παξαγγειηώλ – Τπεξεζία πιεξσκήο

Η ππεξεζία δηαρείξηζεο παξαγγειηψλ αξρηθά δέρεηαη ηελ παξαγγειία κέζσ ηεο πφξηαο εηζφδνπ – portType="lns:purchaseOrderPT". Ύζηεξα, ε δξαζηεξηφηεηα flow εθθηλεί ηελ εθηέιεζε ησλ εζσηεξηθψλ αθνινπζηψλ Invoicing, Shipping θαη Scheduling. Οη ηξείο απηέο αθνινπζίεο δξαζηεξηνηήησλ είλαη αιιεινεμαξηψκελεο θαζψο γηα λα νινθιεξσζεί ν ππνινγηζκφο ηνπ θφζηνπο απνζηνιήο ρξεηάδεηαη λα επηιερζεί ν απνζηνιέο κέζσ ηεο αθνινπζίαο Shipping θαη λα θαζνξηζηεί ε δηαζεζηκφηεηα ησλ πξντφλησλ γηα ηελ απνζηνιή ηνπο κέζσ ηεο αθνινπζίαο

΢ει. 154 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Scheduling. Οη αιιειεμαξηήζεηο δειψλνληαη κέζσ Links πνπ πξνζδηνξίδνπλ ηε πεγή (source) ηεο εμάξηεζεο θαη ηνλ ζηφρν (target - ζτήμα 6.3.1). Οπφηε, πξψηε εθηειείηαη ε αθνινπζία Shipping θαη ε δξαζηεξηφηεηα assign- prepareShipping (ζτήμα 6.3.2). Η δξαζηεξηφηεηα απηή δηνρεηεχεη ηα ζηνηρεία ηνπ πειάηε απφ ηε κεηαβιεηή ηνπ εηζεξρφκελνπ κελχκαηνο ζηε κεηαβιεηή πνπ ζα απνζηαιεί καδί κε ηε δξαζηεξηφηεηα Invoke-SendShippingPrice. Μέζσ ηεο

΢ρήκα 6.3.1 Τπεξεζία δηαρείξηζεο παξαγγειηώλ

΢ει. 155 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

πφξηαο- portType="lns:shippingPT" θαιείηαη ε δξαζηεξηφηεηα RequestShipping πνπ επηιέγεη εηαηξία απνζηνιήο θαη θαζνξίδεη ηελ ηηκή απνζηνιήο. Δπίζεο κέζσ ηεο δξαζηεξηφηεηαο ReceivingScheduling επηζηξέθεηαη ην ρξνλνδηάγξακκα απνζηνιήο ηεο παξαγγειίαο.

΢ρήκα 6.3.2 Γξαζηεξηόηεηα assign- prepareShipping.

Η

αθνινπζία

Invoicing

πεξαηψλεηαη

αθνχ

ελεκεξσζεί

γηα

ην

ρξνλνδηάγξακκα ζπγθέληξσζεο ησλ πξντφλησλ κέζσ ηεο δξαζηεξηφηεηαο ReceiveInvoice. Απηφ πξνυπνζέηεη ηελ εθηέιεζε ησλ δηαδηθαζηψλ ηεο αθνινπζίαο Scheduling. Αλ ε δηαδηθαζία έρεη νινθιεξσζεί κε ηνλ αλακελφκελν ηξφπν, ε ππεξεζία ελεκεξψλεη ηνλ πειάηε γηα ην ρξνλνδηάγξακκα απνζηνιήο θαη ην ζπλνιηθφ πνζφ πιεξσκήο κε ηελ δξαζηεξηφηεηα reply-SendPurchaseOrder. ΢ηελ πεξίπησζε πνπ θάπνηα ζηνηρεία είλαη ιαλζαζκέλα ή πξφεθπςε θάπνην ζθάικα, ηφηε

ν

Fault

Handler

δηαρεηξίδεηαη

ην

ζθάικα

αλαγλσξίδνληαο

ην

θαη

ελεκεξψλνληαο ηνλ πειάηε. Ύζηεξα, δεηείηαη απφ ηνλ πειάηε λα ζπκπιεξψζεη ηα ζηνηρεία ηεο πηζησηηθήο ηνπ θάξηαο κέζσ ηεο δξαζηεξηφηεηαο ReceiveCreditCard. Η δξαζηεξηφηεηα assign-prepareElements αληηγξάθεη ηα ζηνηρεία ζηε κεηαβιεηή πνπ ζα απνζηαιεί καδί κε ηε δξαζηεξηφηεηα θιήζεο ηεο ππεξεζίαο πιεξσκήο (InvokePaymentService). Η ππεξεζία πιεξσκήο ιακβάλεη ηα ζηνηρεία ηνπ πειάηε θαη χζηεξα αλαγλσξίζεη ηελ αληίζηνηρε ηξάπεδα κέζσ ηνπ αξηζκνχ ηεο πηζησηηθήο θάξηαο. ΢ηελ ζπλέρεηα πξνεηνηκάδεη ηα ζηνηρεία ηεο πηζησηηθήο γηα λα ηα ζπκπεξηιάβεη ζηελ θιήζε ηεο ππεξεζίαο ηεο ηξάπεδαο ψζηε λα γίλεη ε ζπλαιιαγή (δξαζηεξηφηεηεο Assign – Invoke). Αλ νινθιεξσζεί ε ζπλαιιαγή επηηπρψο

΢ει. 156 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

επηζηξέθεη ην θαηάιιειν κήλπκα ζηελ ππεξεζία δηαρείξηζεο παξαγγειηψλ δηαθνξεηηθά ν fault handler ελεκεξψλεη ηελ ππεξεζία γηα ηνίρσλ πξνβιήκαηα φπσο γηα παξάδεηγκα ππέξβαζε πηζησηηθνχ νξίνπ. Σέινο, ε ππεξεζία δηαρείξηζεο παξαγγειηψλ ελεκεξψλεη ηνλ πειάηε γηα ηελ έθβαζε ηεο πιεξσκήο.

΢ρήκα 6.3.3 Τπεξεζία πιεξσκήο

Οη ζπλεξγαδφκελεο πιεπξέο partnerLinks παξνπζηάδνληαη ζην ζρήκα 6.3.5. Γηα

΢ει. 157 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

θάζε parnerLink νξίδεηαη ην φλνκα, ε ηνπνζεζία ηνπ αξρείνπ .wsdl, ν ηχπνο ηνπ ζπλεξγάηε θαη ν ξφινο ηνπ. ΢ην ζρήκα 6.3.6 παξνπζηάδεηαη ε δήισζε ησλ partnerLinkTypes ζην αξρείν PurchaseOrderArtifacts.wsdl πνπ πεξηγξάθεη ηελ ππεξεζία. Γηα θάζε partnerLinkType νξίδεηαη ην φλνκα θαη ν ξφινο ηνπ. Δπίζεο γηα θάζε ξφιν νξίδεηαη θαη ν ηχπνο ηεο πφξηαο επηθνηλσλίαο ηνπ.

΢ρήκα 6.3.5 Partner Links αξρείνπ PurchaseOrder.bpel

΢ην ζρήκα 6.3.7 ηεο ζειίδαο 160 παξνπζηάδνληαη νη πφξηεο επηθνηλσλίαο ηεο ππεξεζίαο δηαρείξηζεο παξαγγειηψλ. ΢πλνιηθά είλαη ηέζζεξεηο πνπ ε

κία

αληηζηνηρεί ζηελ επηθνηλσλία κε ηνλ client, δχν κε ηηο εζσηεξηθέο δηαδηθαζίεο θαη ε ηειεπηαία κε ηελ ππεξεζία πιεξσκήο. ΢ε θάζε ηχπν ζχξαο πξνζδηνξίδεηαη έλα φλνκα, ε ιεηηνπξγία πνπ εθηειείηαη θαζψο θαη ν ηχπνο ησλ κελπκάησλ αληαιιαγήο. Αθφκε, αλαθέξεηαη ν ρεηξηζηήο ζθαικάησλ ζε φπνηα ζχξα ππάξρεη. ΢ην ζρήκα 6.3.6 παξνπζηάδεηαη ν ηξφπνο εηζαγσγήο ησλ αξρείσλ πεξηγξαθήο ησλ δχν ππεξεζηψλ. ΢ε θάζε αξρείν αλαθέξεηαη ε ηνπνζεζία ηνπ, ε νλνκαηνινγία ηνπ θαζψο θαη ν ηχπνο ηνπ.

΢ει. 158 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 6.3.5 H ιίζηα ησλ ζπλεξγαδόκελσλ-ππεξεζηώλ- αξρείν PurchaseOrderArtifacts.wsdl

΢ρήκα 6.3.6 Δηζαγσγή ησλ αξρείσλ .wsdl ζην αξρείν PurchaseOrder.bpel

΢ει. 159 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 6.3.7 Λίζηα ησλ portTypes ηεο ππεξεζίαο δηαρείξηζεο παξαγγειηώλ.

6.3.2 Δθαξκνγή XMLDSIG θαη XMLENC κεηαμύ ησλ δύν ππεξεζηώλ

Η αζθάιεηα ζηηο ειεθηξνληθέο ζπλαιιαγέο ησλ ππεξεζηψλ ηζηνχ, κπνξεί λα εμαζθαιηζηεί

ρξεζηκνπνηψληαο

ηηο

ςεθηαθέο

ππνγξαθέο

XML

θαη

ηελ

θξππηνγξάθεζε XML. Με ηελ ρξήζε ηεο θξππηνγξάθεζεο XML ζε έλα κήλπκα

΢ει. 160 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

SOAP πνπ πεξηέρεη ηα ζηνηρεία ηεο πηζησηηθήο θάξηαο ελφο πειάηε, πξνζηίζεηαη έλα κπινθ αζθάιεηαο θαζψο ηα ζηνηρεία δελ γίλνληαη νξαηά ζε φπνηνλ δελ γλσξίδεη ην ζπκκεηξηθφ θιεηδί ηεο απνθξππηνγξάθεζεο. Με ηε ρξήζε ησλ ςεθηαθψλ ππνγξαθψλ εμαζθαιίδεηαη ε αθεξαηφηεηα ηνπ κελχκαηνο θαζψο ζηελ πεξίπησζε πνπ δελ επηθπξσζεί ε ππνγξαθή απφ ηνλ παξαιήπηε ζεκαίλεη φηη ην κήλπκα έρεη αιινησζεί. ΢ην παξαπάλσ ζελάξην πνπ πεξηγξάθεθε ζα εθαξκνζηεί κηα πνιίηηθή αζθάιεηαο ζηελ ππεξεζία πιεξσκψλ πνπ απαηηεί απφ ηελ ππεξεζία δηαρείξηζεο παξαγγειηψλ λα ππνγξάςεη θαη χζηεξα λα θξππηνγξαθήζεη ην κήλπκα SOAP κε ηε ρξήζε ησλ ςεθηαθψλ πηζηνπνηεηηθψλ X.509. Σα θιεηδηά θξππηνγξάθεζεο απνζεθεχνληαη

πνπ ζε

ζα

αξρεία

ρξεζηκνπνηεζνχλ .keystores.

Σα

ζην

ζπγθεθξηκέλν

αξρεία

απηά

ζελάξην πεξηέρνπλ

θξππηνγξαθεκέλα ηα θιεηδηά θαη γηα λα πξνζπειαζηεί ρξεηάδεηαη έλα θσδηθφ. Σα αξρεία απηά κπνξεί λα ηα δηαρεηξηζηεί ε JAVA κε επθνιία θαζψο ππνζηεξίδνληαη απφ ηελ JVM. Η πνιηηηθή αζθάιεηαο παξνπζηάδεηαη ζην ζρήκα 6.3.2.1 θαη αξρίδεη κε ηνλ ηειεζηή <ExactlyOne> πνπ ζεκαίλεη φηη πξέπεη λα εθαξκνζηεί κφλν έλαο ηζρπξηζκφο αζθάιεηαο απφ απηνχο πνπ ζα αθνινπζήζνπλ. Χζηφζν, ζηελ ζπλέρεηα κέζσ ηνπ ηειεζηή <All> πξνζδηνξίδεηαη φηη πξέπεη λα εθαξκνζηνχλ φινη νη ηζρπξηζκνί πνπ πεξηέρνληαη εληφο ηνπ ηειεζηή. Οπφηε δελ ππάξρνπλ ελαιιαθηηθέο πνιηηηθέο. ΢ηελ ζπλέρεηα ηα επφκελα δχν ζηνηρεία <policy> πνπ εκθαλίδνληαη θαζνξίδνπλ φηη ν απνζηνιέαο αιιά θαη ν παξαιήπηεο πξέπεη λα ρξεζηκνπνηήζνπλ ηα ςεθηαθά πηζηνπνηεηηθά X509. Γειαδή ην WS-Security Token Profile X509. ΢ηελ ζπλέρεηα

νξίδνληαη

νη

αιγφξηζκνη

θξππηνγξάθεζεο

κέζα

ζην

ζηνηρείν

<sp:AlgorithmSuite>. Γηα ηελ θξππηνγξάθεζε ζα ρξεζηκνπνηεζεί ν TripleDes πνπ είλαη έλαο ζπκκεηξηθφο θαη γξήγνξνο, ελψ γηα ηελ ππνγξαθή ηνπ κελχκαηνο ζα ρξεζηκνπνηεζεί ν Rsa15 πνπ είλαη αζχκκεηξνο. Ύζηεξα, δειψλεηαη φηη ε πνιηηηθή πξέπεη λα εθαξκνζηεί ξεηά κέζσ ηνπ ζηνηρείνπ <wsp:Policy>/<Strict/>. Δπίζεο κέζσ

ηνπ

ζηνηρείνπ

<sp:IncludeTimestamp>

ζα

ζπκπεξηιεθζεί

κία

ρξνλνζθξαγίδα ζην κήλπκα ψζηε λα πξνζηαηεπηεί απφ επηζέζεηο Replay. ΢ηελ ζπλέρεηα νξίδεηαη φηη ζα πξέπεη λα ππνγξάθνληαη νη θεθαιίδεο θαη ην ζψκα ησλ

΢ει. 161 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

κελπκάησλ SOAP θαη λα θξππηνγξαθείηαη ην ζψκα ηνπ θεηκέλνπ.

΢ρήκα 6.3.2.1 Πνιηηηθή αζθάιεηαο ππεξεζία PaymentService [22]

Σν αξρείν απηφ ζηελ ζπλέρεηα θαζνξίδεη ηηο ξπζκίζεηο ηνπ rampart πνπ πξέπεη λα έρεη ε ππεξεζία, γηα λα πξνζπειάζεη ηo αξρείo .keystore

΢ει. 162 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

πξνζδηνξίδνληαο ηελ ηνπνζεζία ηνπ (ζρήκα 6.3.2.3). Η πνιηηηθή αζθάιεηαο ζπζρεηίδεηαη (binding) κε ην αξρείν PaymentServiceArtifacts.wsdl (ζρήκα 6.3.2.2) νξίδνληαο έλα ζηνηρείν Binding, ην φλνκά ηνπ, ηνλ ηχπν ηνπ, ηελ ηνπνζεζία ηνπ αξρείνπ θαζψο θαη ηνλ ηξφπν κεηαθνξάο ηνπ. Δπνκέλσο, ε ππεξεζία PurchaseOrder ζα αθνινπζήζεη ηελ πνιηηηθή απηή κηαο θαη γλσξίδεη ηελ πεξηγξαθή PaymentServiceArtifacts.wsdl.

΢ρήκα 6.3.2.2 Policy binding κε ην αξρείν PaymentService.wsdl

΢ρήκα 6.3.2.3 Ρπζκίζεηο γηα ην Rampart ζην αρξείν stricted.xml

΢ην ζρήκα 6.3.2.4 παξνπζηάδεηαη ε κέζνδνο signSOAPEnveloope πνπ ππνγξάθεη ην ζψκα ηνπ κελχκαηνο SOAP ζχκθσλα κε ην θσδηθφ ηεο ππεξεζίαο δηαρείξηζεο παξαγγειηψλ θαη ην ςεθηαθφ πηζηνπνηεηηθφ πνπ βξίζθεηαη ζην αξρείν .keystore.

Αληίζηνηρα,

ζην

ζρήκα

6.3.2.4

παξνπζηάδεηαη

ε

κέζνδνο

encryptSOAPEnvelope πνπ θξππηνγξαθεί ην ζψκα ηνπ κελχκαηνο SOAP.

΢ει. 163 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 6.3.2.4 Μέζνδνο Java γηα ηελ ππνγξαθή ηνπ κελύκαηνο SOAP.

΢ρήκα 6.3.2.4 Μέζνδνο Java γηα ηελ θξππηνγξάθεζε ηνπ κελύκαηνο SOAP.

΢ει. 164 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Δπίινγνο

΢ην θεθάιαην απηφ πεξηγξάθεηαη έλα ζελάξην ρξήζεο ειεθηξνληθήο πιεξσκήο κε πηζησηηθή θάξηα. Γηα ηελ πξνζηαζία ησλ ζηνηρείσλ ηεο θάξηαο ηνπ πειάηε ρξεζηκνπνηείηαη κηα απζηεξή πνιηηηθή αζθάιεηαο πνπ επηβάιεη ζηηο δχν ππεξεζίεο λα ππνγξάςνπλ θαη λα θξππηνγξαθήζνπλ ηα ζψκα ησλ κελπκάησλ SOAP. Δπίζεο, γηα ηελ επίηεπμε ηεο αθεξαηφηεηαο θαη εκπηζηεπηηθφηεηαο ζε επίπεδν κεηαθνξάο ζπκβάιεη ε ρξήζε ηνπ πξσηφθνιινπ SSL κέζσ ηνπ Java Secure Socket Extension (JSSE). Σν ζελάξην ρξήζεο δελ είλαη νινθιεξσκέλν θαη δελ κπνξεί λα εθηειεζηεί. Χζηφζν, δίλεηαη κηα μεθάζαξε πεξηγξαθή ηνπ ηξφπνπ εθαξκνγήο ησλ πξνηχπσλ WS-Securtiy ζε ζπλδπαζκφ κε ηελ BPEL. Σν επφκελν θεθάιαην είλαη ην ηειεπηαίν θαη παξνπζηάδνληαη ηα ζπκπεξάζκαηα ηεο πηπρηαθήο εξγαζίαο θαζψο θαη νη εξεπλεηηθέο πξνεθηάζεηο.

΢ει. 165 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Κεθάιαην 7ν : ΢πκπεξάζκαηα θαη Δξεπλεηηθέο Πξνεθηάζεηο

7.1

΢πκπεξάζκαηα

Με βάζε ηα πξνεγνχκελα θεθάιαηα κπνξνχκε λα ζπκπεξάλνπκε φηη ε νηθνγέλεηα πξνηχπσλ WS-Security κπνξεί λα ζπλδπαζηεί εχθνια κε ηηο επηρεηξεκαηηθέο δηαδηθαζίεο BPEL θαη ηελ ππεξεζηνζηξεθή αξρηηεθηνληθή, δεκηνπξγψληαο έλα πςειφ επίπεδν αζθάιεηαο. Σα πξφηππα ηεο νηθνγέλεηαο WSSecurity κπνξνχλ λα θαιχςνπλ επαξθψο ηηο αξρέο αζθάιεηαο πνπ απαηηείηαη λα πιεξεί κία ππεξεζία ηζηνχ BPEL. Η εκπηζηεπηηθφηεηα ησλ επαίζζεησλ δεδνκέλσλ κπνξεί λα εμαζθαιηζηεί κε ηελ θξππηνγξάθεζε XML θαη ε αθεξαηφηεηα κε ηηο ςεθηαθέο ππνγξαθέο XML. Δπίζεο κηα γηα κηα ππεξεζία BPEL κπνξεί λα δεκηνπξγεζεί κηα πνιηηηθή αζθάιεηαο πνπ λα ππνζηεξίδεη δηαθνξεηηθά ηεθκήξηα θαη ηζρπξηζκνχο αζθάιεηαο ζηνρεχνληαο ζηελ δηαιεηηνπξγηθφηεηα κε άιιεο ππεξεζίεο ηζηνχ. Απηφ επηηπγράλεηαη κε ην WS-Security framework πνπ θαζνξίδεη ηνπο θαλφλεο δεκηνπξγίαο κηαο πνιηηηθήο αζθάιεηαο αιιά θαη ηνλ ηξφπν ζπζρέηηζήο (binding) ηνπο κε ηηο ππεξεζίεο κέζσ ηνπ WS-Attachment. Η επαλαρξεζηκνπνίεζε θαη ε επειημία πνπ παξέρνπλ νη πνιηηηθέο αζθάιεηαο, ηηο θαζηζηνχλ ηδαληθέο γηα λα ζπλδπαζηνχλ κε ππεξεζίεο ηζηνχ

BPEL. Βέβαηα, ηα πξνεγνχκελα δχν

ραξαθηεξηζηηθά ίζσο λα κελ ππήξραλ ή λα πεξηνξίδνληαλ αλ ηα πξφηππα δελ βαζίδνληαλ ζηελ XML. Tα πξφηππα WS-Trust θαη WS-Federation ζπκπιεξψλνπλ ηελ νηθνγέλεηα ησλ πξνηχπσλ, δηεπζεηψληαο πξνβιήκαηα δηαιεηηνπξγηθφηεηαο, θνξεηφηεηαο ηεο ηαπηφηεηαο θαη εκπηζηεπηηθφηεηαο κεηαμχ δηαθνξεηηθψλ ππεξεζηψλ ηζηνχ. Αθφκε, απνηεινχλ

ζεκαληηθά

θνκκάηηα

ζηελ

αζθάιεηα

κηαο

ππεξεζηνθεληξηθήο

αξρηηεθηνληθήο θαη θάλνπλ πην εχθνιε ηε δεκηνπξγία ηεο θαη ηελ αζθαιή ιεηηνπξγία ηεο. Σν πξφηππν WS-SecureConversation θαηαθέξλεη λα πξνζεκεηψζεη ηε

΢ει. 166 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

ιεηηνπξγία ηνπ πξσηφθνιινπ SSL ζε έλα end-to-end δίαπιν επηθνηλσλίαο ζην επίπεδν

εθαξκνγψλ

(Application

Level-OSI).

Δπνκέλσο,

απνηειεί

έλα

επηπξφζζεην εξγαιείν αζθάιεηαο πνπ κπνξεί λα ρξεζηκνπνηεζεί γηα ηελ αζθαιή επηθνηλσλία κεηαμχ ππεξεζηψλ ηζηνχ BPEL δεκηνπξγψληαο ζπλεδξίεο. Σα πξφηππα WS-Privacy θαη WS-Authorization δελ έρνπλ πξνηππνπνηεζεί αθφκε σζηφζν ην θελφ γηα ηελ αζθαιή εμνπζηνδφηεζε κπνξνχλ λα θαιχςνπλ νη γιψζζεο XACML θαη SAML. Σα παξαπάλσ πξφηππα έρνπλ θαη ηελ αξλεηηθή ηνπο πιεπξά. Ναη κελ κπνξεί λα είλαη πνιχ επέιηθηα θαιχπηνληαο κηα πιεζψξα ζελαξίσλ ρξήζεο, αιιά κπνξνχλ λα γίλνπλ πνιχπινθα θαη ηειηθά δχζρξεζηα. Δπίζεο, ζα πξέπεη λα ρξεζηκνπνηνχληαη κε ηνπο πξνηεηλφκελνπο ηξφπνπο (best practices) θαζψο νη απεηιέο αζθάιεηαο είλαη πνιιέο γηα ηελ γιψζζα XML θαη ην θάζε πξφηππν. Έλα αθφκε ζεκείν πνπ ρξεηάδεηαη πξνζνρή είλαη ν ζσζηφο ζρεδηαζκφο θαη εθαξκνγή ησλ πξνηχπσλ αλάινγα κε ην ζελάξην ρξήζεο θαη ηελ επαηζζεζία ησλ δεδνκέλσλ, θαζψο ν ζπλδπαζκφο ηνπο κπνξεί λα θαζπζηεξήζεη ηελ απφθξηζε θαη λα απμήζεη ην κέγεζνο ησλ SOAP κελπκάησλ. Γηα παξάδεηγκα ζην ζελάξην πνπ

΢ρήκα 7.1.1 Υξνληθό δηάγξακκα ζύγθξηζεο πξνηύπσλ WS-Security-SSL [23]

΢ει. 167 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

παξνπζηάζηεθε ζην πξνεγνχκελν θεθάιαην, είλαη αλαγθαίν λα εθαξκφζνπκε ηα πξφηππα XMLDSIG θαη XMLENC ζην κήλπκα SOAP πνπ ζα κεηαθέξεη ηα ζηνηρέηα ηεο πηζησηηθήο θάξηαο ηνπ πειάηε ζηελ ππεξεζία πιεξσκήο. ΢ηα κελχκαηα SOAP πνπ κεηαθέξνπλ ηελ παξαγγειία θαη ηα ζηνηρεία απνζηνιήο ηνπ πειάηε, δελ ζα ήηαλ ππξβνιή λα ρξεζηκνπνηεζεί ε ίδηα πνιηηηθή αζθάιεηαο θαζψο απιή ρξήζε ηνπ SSL κπνξεί λα θαιχςεη ηηο αλάγθεο ηνπ ειεθηνξληθνχ θαηαζηήκαηνο. Η αίηεζε γίλεηαη απφ ηνλ client πξνο ησλ server θαη δελ κεηαβηβάδεηαη ζε άιινπο servers, νπφηε ν αξηζκφο ησλ απεηιψλ κεηψλεηαη ζεκαληηθά. ΢ην ζρήκα 7.1 βιέπνπκε φηη ε ρξήζε κφλν ηνπ SSL δίλεη πνιχ κηθξνχο ρξφλνπο απφθξηζεο θαη κηθξφ κέγεζνο κπλήκαηνο (ζρήκα 7.2). Δλψ ν ζπλδπζκφο XMLDSIG θαη XMLENC έρεη ηελ αξγφηεξε απφθξηζε θαη ην δεχηεξν κεγαιχηεξν κήλπκα SOAP κεηά απφ ηα κελήκαηα ηνπ πξνηχπνπ WS-SecureConversation (Sosnoski, 2009).

΢ρήκα 7.1.2 Μέγεζνο κελπκάησλ SOAP κε ηελ εθαξκνγή WS-Security [23]

΢ει. 168 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

7.2 Δξεπλεηηθέο Πξνεθηάζεηο

΢ην θεθάιαην πέληε πεξηγξάθεηαη έλα ζελάξην ρξήζεο κηαο ειεθηξνληθήο ζπλαιιαγήο κε πηζησηηθή θάξηα. Σν ζελάξην απηφ κπνξεί λα επεθηαζεί ζχκθσλα κε ηελ θηινζνθία ηεο ππεξεζηνζηξεθήο αξρηηεθηνληθήο πνπ έρεη σο ζπλδεηηθφ θξίθν ηελ BPEL. Σν ειεθηξνληθφ θαηάζηεκα ζα κπνξνχζε λα έρεη κηα ππεξεζία πνπ λα ειέγρεη θαη λα αλαλεψλεη απηφκαηα ηελ δηαζεζηκφηεηα ησλ πξντφλησλ πνπ βξίζθνληαη ζηελ απνζήθε, κε θάζε παξαγγειία πνπ πεξαηψλεηαη. Οπφηε γλσξίδνληαο φηη ε δηαζεζηκφηεηα ησλ πξντφλησλ πεξηνξίδεηαη λα εηδνπνηεί ηνλ δηαρεηξηζηή ηεο γηα δεκηνπξγία λέαο παξαγγειίαο. Σν ζχζηεκα ησλ παξαγγειηψλ ζα κπνξεί λα ζπλδέεηαη κέζσ κηαο ππεξεζίαο ηζηνχ κε ην αληίζηνηρν ζχζηεκα παξαγγειηψλ ηνπ πξνκεζεπηή ησλ πξντφλησλ δηεπθνιχλνληαο θαηά πνιχ ηελ δηαρείξηζή ηνπο. Αθφκε, ζα κπνξνχζε λα δεκηνπξγεζεί κηα ππεξεζία πνπ δηαρεηξίδεηαη ηα ειεθηξνληθά ηηκνιφγηα θαη λα ζπλδέεηαη κε αληίζηνηρε ππεξεζία ηεο εθνξίαο. Απφ ηελ ππεξεζία ηεο εθνξίαο ζα ελεκεξψλεηαη ε εηαηξία γηα ηηο ζπλνιηθέο αγνξέο θαη πσιήζεηο πνπ έρεη θάλεη, φπσο θαη ν πειάηεο ζα είρε πξφζβαζε ζηα ζπγθεληξσηηθά ζηνηρεία αγνξψλ ηνπ. Οη ππεξεζίεο απηέο (ζρήκα 7.2) ζα εθαξκφδνπλ ηελ νηθνγέλεηα πξνηχπσλ WS-Security γηα ηελ αζθάιεηα επαίζζεησλ δεδνκέλσλ θαζψο θαη γηα ηελ δηαρείξηζή ηνπο φπσο γηα παξάδεηγκα ηελ θνξεηφηεηα ηεο ηαπηφηεηαο απφ ππεξεζία ζε ππεξεζία ηνπ δηεπζπληή ηεο εηαηξίαο πνπ έρεη ην ειεθηξνληθφ θαηάζηεκα.

΢ει. 169 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

΢ρήκα 7.2 Γηαζύλδεζε ππεξεζηνζηξεθώλ ζπζηεκάησλ

΢ει. 170 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Βηβιηνγξαθηθέο Αλαθνξέο Διιεληθέο:

Γεκεηξίνπ Θενράξεο, 2007, Πηπρηαθή εξγαζία κε ζέκα: Web Services θαη SOAP, αλάθηεζε απφ : http://www.it.uom.gr/project/soap/

Καιηνληδφγινπ Ι.΢. Αιέμαλδξνο, 2006, Γηδαθηνξηθή Γηαηξηβή κε ζέκα: Αζθαιείο, δηαιεηηνπξγηθέο θαη αλνηρηέο αξρηηεθηνληθέο ππεξεζηψλ – Αζθαιείο επηρεηξεκαηηθέο ππεξεζίεο e-ζπλαιιαγψλ, αλάθηεζε απφ: http://artemis.cslab.ntua.gr/Dienst/UI/1.0/Download/artemis.ntua.ece/PD200 6-0046, ζειίδεο 310, 313, 314.

Λαηάλεο Κσλζηαληίλνο, 2009, Γηπισκαηηθή εξγαζία κε ζέκα: Αλαζθφπεζε Τθηζηάκελνπ Δπηπέδνπ Γλψζεο θαη Αμηνιφγεζε Σερλνινγηψλ-Σερληθψλ ζε ζέκαηα ΢ρεδηαζκνχ Μνληέισλ Ηιεθηξνληθψλ ΢πλαιιαγψλ, αλάθηεζε απφ: http://artemis.cslab.ntua.gr/Dienst/UI/1.0/Download/artemis.ntua.ece/DT200 9-0047, ζειίδεο 98,99,100.

Μάγθνο Κ., Νημαξιίδεο Α., 2009, Γηπισκαηηθή εξγαζία κε ζέκα: Αζθάιεηα ζην

Γηαδίθηπν,

αλάθηεζε

απφ:

http://www.islab.demokritos.gr/gr/html/ptixiakes/kostasaris_ptyxiakh/Phtml/kruptografia.htm.

Αγγιηθέο:

Apache Software Foundation, 2010-12-23, Apache Axis2 User's Guide,

΢ει. 171 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

recovered form: http://axis.apache.org/axis2/java/core/docs/userguide.html#underhood. 

Bartel Mark, John Boyer, Barb Fox , Brian LaMacchia , Ed Simon Editors: Donald Eastlake, Joseph Reagle, David Solo, Frederick Hirsch, Thomas Roessler, W3C Recommendation 10 June 2008, XML Signature Syntax and Processing (Second Edition), αλάθηεζε απφ: http://www.w3.org/TR/xmldsig-core/#sec-Manifest . Bertino Elisa, Martino D Lorenzo, Paci Federica,·Squicciarini C Anna, 2009, Security for Web Services and Service-Oriented Architectures, page 59.

DeMartini Thomas, Nadalin Anthony, Kaler Chris, Monzillo Ronald, HallamBaker Phillip, OASIS Standard: 1 February 2006, Web Services Security Rights Expression Language (REL) Token Profile 1.1, recovered from: http://www.oasis-open.org/committees/download.php/16687/oasis-wss-reltoken-profile-1.1.pdf, pages 12-18.

Gajek Sebastian, Meiko Jensen, Lijun Liao, and Jorg Schwenk Horst G¨ortz Institute for IT Security, Ruhr University Bochum, Germany, 7 April, 2002, Analysis of Signature Wrapping Attacks and Countermeasures, recovered from: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5175871.

Goodner Marc, Nadalin Anthony , OASIS Standard 22 May 2009, Web Services Federation Language (WS-Federation) Version 1.2, recovered from: http://docs.oasis-open.org/wsfed/federation/v1.2/os/ws-federation-1.2spec-os.html#_Toc223174926 , Page 8, 127.

Hill Brad – iSEC Partners , A Taxonomy of Attacks against XML Digital Signatures

&

Encryption,

recovered

from:

https://www.isecpartners.com/storage/whitepapers/iSEC_HILL_AttackingXMLSecurity_Handout.pdf, pages 2-11. 

Hill Bradley W., Command Injection in XML Signatures and Encryption Information

Security

Partners,

12

July

2007,

recovered

from:

https://www.isecpartners.com/files/XMLDSIG_Command_Injection.pdf, pages 2-3. 

Hirsch Frederick, Pratik Datta, W3C Working Draft August 2010, XML

΢ει. 172 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Signature Best Practices, recovered from: http://www.w3.org/TR/xmldsigbestpractices/#prevent-replay-attacks. 

IBM (2007), New to SOA and Web services, recovered from: http://www128.ibm.com/developerworks/webservices/newto/websvc.html .

Juric B. Matjaz, Mathew Benny, Sarang Poornachabdra, January 2006, Business Proccess Execution Language for Web Services Second Edition, page 39, 83.

Lawrence Kelvin, Chris Kaler, 1 February 2006, Web Services Security: SAML Token Profile 1.1, recovered from: http://www.oasisopen.org/committees/download.php/16768/wss-v1.1-spec-osSAMLTokenProfile.pdf, page 17

Lawrence Kelvin, Chris Kaler, Editors: Anthony Nadalin, Chris Kaler, Ronald Monzillo, Phillip Hallam-Baker, Web Services Security: SOAP Message Security 1.1, 1 February 2006, recovered from: http://www.oasisopen.org/committees/download.php/16790/wss-v1.1-spec-osSOAPMessageSecurity.pdf , page 8.

Lindstrom Pete, January 2004, Attacking and Defending Web Services, recovered form:http://www.forumsys.com/resources/resources/whitepapers/Attacking_ and_Defending_WS.pdf, pages 9,10. Mihindukulasooriya Nadana, Mon, 28th Jan, 2008, Understanding WS – Security Policy Language, recovered from: http://wso2.org/library/3132#a03. Nadalin Anthony, Goodner Marc, Gudgin Martin, Barbir Abbie, Granqvist Hans, OASIS Standard 19 March 2007, WS-Trust 1.3, recovered from: http://docs.oasis-open.org/ws-sx/ws-trust/200512/ws-trust-1.3-os.pdf , page 13.

Nadalin Anthony, Goodner Marc, Gudgin Martin, Barbir Abbie, Granqvist Hans, OASIS Standard 2 February 2009, WS-SecureConversation 1.4, recovered from: http://docs.oasis-open.org/ws-sx/wssecureconversation/v1.4/os/ws-secureconversation-1.4-spec-os.pdf, page 13.

΢ει. 173 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

O'Neill Mark et al, 2003, Web Services Security, pages 128,129.

Papazoglou Michael P., 2008, Web Services: Principles and Technology, recovered from:http://www.google.com/books?id=0qLX9nl87EwC&printsec=frontcover &hl=el#v=onepage&q&f=false, pages 4-8.

Rosenberg Jothy, Jonathan B. Rosenberg, David L. Remy (2004) , Securing Web Services with WS-Security, paragraphs 1.4, 2.4, 4.1, 4.3, 6.1, 7.3, 8.1, 9.3.

Sanjiva Weerawarana, Francisco Curbera, Frank Leymann, Tony Storey, Donald F. Ferguson, 2005, Web Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More, paragraphs 1.1-1.4.

Sosnoski Dennis, 7 July 2009, Java Web services: The high cost of (WS-) Security, recovered from: http://www.ibm.com/developerworks/java/library/jjws6/index.html.

Vedamuthu Asir S, Orchard David, Hirsch Frederick, Hondo Maryann, Yendluri Prasad, Boubez Toufic, Yalçinalp Ümit, W3C Recommendation 04 September 2007, Web Services Policy 1.5 – Framework, recovered from: http://www.w3.org/TR/ws-policy/#rPolicy_Assertion.

Weerawarana Sanjiva, Francisco Curbera, Frank Leymann, Tony Storey, Donald F. Ferguson, 2005, Web Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More, Paragraph 14.1.1.

΢ει. 174 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Βηβιηνγξαθία Αγγιηθή

Bartel Mark, John Boyer, Barb Fox , Brian LaMacchia , Ed Simon Editors: Donald Eastlake, Joseph Reagle, David Solo, Frederick Hirsch, Thomas Roessler, W3C Recommendation 10 Ινπλίνπ 2008, XML Signature Syntax and Processing (Second Edition), αλάθηεζε απφ: http://www.w3.org/TR/xmldsig-core/ .

Cantor Scott, John Kemp, Rob Philpott, Eve Maler, 2 December 2009, «SAML Specifications», αλάθηεζε απφ: http://www.oasisopen.org/committees/download.php/35711/sstc-saml-core-errata-2.0-wd06-diff.pdf .

Hallam Phillip -Baker – Verisign, Shivaram H. Mysore, W3C Working Draft 18 April 2003, « XML Key Management Specification (XKMS 2.0)», αλάθεζε απφ: http://www.w3.org/TR/xkms2/.

Imamura Takeshi, Blair Dillaway , Ed Simon. Editors: Donald Eastlake, Joseph Reagle, W3C Recommendation 10 December 2002, XML Encryption Syntax and Processing, recovered from: http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/.

Jordan Diane, Evdemon John, 11 April 2007, Web Services Business Process Execution Language Version 2.0, recovered from: http://docs.oasis-open.org/wsbpel/2.0/wsbpel-v2.0.pdf .

Lawrence Kelvin, Chris Kaler, 1 February 2006, Web Services Security: SAML Token Profile 1.1, recovered from: http://www.oasisopen.org/committees/download.php/16768/wss-v1.1-spec-osSAMLTokenProfile.pdf.

Lawrence Kelvin, Kaler Chris, 1 February 2006, Web Services Security: SAML Token Profile 1.1, recovered from: http://www.oasisopen.org/committees/download.php/16785/wss-v1.1-spec-osx509TokenProfile.pdf.

Matjaz B. Juric, Benny Mathew, Poornachandra Sarang, January 2006, Business Process Execution Language for Web Services, Second Edition.

΢ει. 175 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Mihindukulasooriya Nandana, 26 March 2008, Web Services Security with Apache Rampart – Part 2 (Message-Level Security), recovered from: http://wso2.org/library/3415#step_7.

Nadalin Anthony, Phil Griffin, Chris Kaler, Phillip Hallam-Baker, Ronald Monzillo, March 2004, Web Services Security Username Token Profile 1.0, recoverd from: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssusername-token-profile-1.0.pdf.

Nadalin Anthony, Phil Griffin, Chris Kaler, Phillip Hallam-Baker, Ronald Monzillo, 1 February 2006, Web Services Security Kerberos Token Profile 1.1, recoverd from: http://www.oasisopen.org/committees/download.php/16788/wss-v1.1-spec-osKerberosTokenProfile.pdf.

Nadalin Anthony, Phil Griffin, Chris Kaler, Phillip Hallam-Baker, Ronald Monzillo, 1 February 2006, Web Services Security X.509 Certificate Token Profile 1.1, recovered from: http://docs.oasis-open.org/wss/v1.1/wss-v1.1spec-os-x509TokenProfile.pdf.

Nadalin Anthony, Phil Griffin, Chris Kaler, Phillip Hallam-Baker, Ronald Monzillo, OASIS Standard 1 July 2007, WS-SecurityPolicy 1.2, recoverd from: http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/wssecuritypolicy-1.2-spec-os.pdf.

O'Neill Mark et al, 2003, Web Services Security.

Reagle Joseph Jr., W3C Working Draft 14 October 1999, XML-Signature Requirements, αλάθηεζε απφ: http://www.w3.org/TR/xmldsig-requirements.

Rissanene Eric, August 2010, «eXtensible Access Control Markup Language (XACML) Version 3.0», αλάθηεζε απφ: http://docs.oasisopen.org/xacml/3.0/xacml-3.0-core-spec-cs-01-en.pdf.

Rosenberg Jothy, Jonathan B. Rosenberg, David L. Remy (2004), Securing Web Services with WS-Security.

Siddiqui B., “Exploring XML Encryption, Part 1,2”, IBM DeveloperWorks, March 2002, recovered from: http://www128.ibm.com/developerworks/xml/library/x-encrypt.

Sosnoski Dennis, 16 Jun 2009, Java Web services: Axis2 WS-Security signing and encryption, recovered from:

΢ει. 176 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

http://www.ibm.com/developerworks/java/library/j-jws5/. 

Weerasiri Denis, 11 August 2009, Writing a simple WS-BPEL process for WSO2 BPS and Apache ODE, recovered from: http://wso2.org/library/articles/writing-simple-ws-bpel-process-wso2-bpsapache-ode.

Weerawarana Sanjiva , Francisco Curbera, Frank Leymann, Tony Storey, Donald F. Ferguson, 2005, Web Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More.

Βηβιηνγξαθία ΢ρεκάησλ

[1] Mark Bartel, John Boyer, Barb Fox , Brian LaMacchia , Ed Simon Editors: Donald Eastlake, Joseph Reagle, David Solo, Frederick Hirsch, Thomas Roessler, W3C Recommendation 10 June 2008, XML Signature Syntax and Processing (Second

Edition),

recovered

from:

http://www.w3.org/Signature/Drafts/WD-

xmldsig-core-20000114/#sec-o-Signature. [2] Jothy Rosenberg, Jonathan B. Rosenberg, David L. Remy (2004) , Securing Web Services with WS-Security. [3] Sebastian Gajek, Meiko Jensen, Lijun Liao, and Jorg Schwenk Horst G¨ortz Institute for IT Security, Ruhr University Bochum, Germany, April 7, 2002 , Analysis of Signature Wrapping Attacks and Countermeasures, page 2. [4] Imamura Takeshi, Blair Dillaway , Ed Simon. Editors: Donald Eastlake, Joseph Reagle, W3C Recommendation 10 December 2002, XML Encryption Syntax and Processing,

recovered

from:

http://www.w3.org/TR/2002/REC-xmlenc-core-

20021210/Overview.html#sec-Overview. [5] Mark O'Neill et al, 2003, Web Services Security. [6] Kelvin Lawrence, Chris Kaler, Editors: Anthony Nadalin, Chris Kaler, Ronald

΢ει. 177 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Monzillo, Phillip Hallam-Baker, 1 February 2006, Web Services Security: SOAP Message

Security

1.1,

recovered

from:

http://www.oasis-

open.org/committees/download.php/16790/wss-v1.1-spec-osSOAPMessageSecurity.pdf , ζει 10. [7] Dieter Koenig, March 2007, WS-BPEL Technical Overview for Developers and Architects Part 1, recovered from: http://www.oasisopen.org/committees/download.php/23068/WSBPEL%20Technical%20Overview%20for%20Developers%20and%20Architects% 20-%20Part%201%20%28Frank%20Ryan%29.pdf. [8] Sanjiva Weerawarana, Francisco Curbera, Frank Leymann, Tony Storey, Donald F. Ferguson, 2005, Web Services Platform Architecture: SOAP, WSDL, WS-Policy, WS-Addressing, WS-BPEL, WS-Reliable Messaging, and More. [9] Γξ. Πνιέκε, Γξ. Καξαληδηάο, 2008, Αζθάιεηα Πιεξνθνξηαθψλ ΢πζηεκάησλ, αλάθηεζε απφ: http://athina.cs.unipi.gr/site-ergastirio/asfaleia/Web%20Services.ppt. [10] Borja Sotomayor, 2005, The Globus Toolkit 4 Programmer's Tutorial, recovered from: http://gdp.globus.org/gt4-tutorial/multiplehtml/ch01s02.html . [11] Jordan Diane, Evdemon John, 11 April 2007, Web Services Business Process Execution Language Version 2.0, recovered from: http://docs.oasisopen.org/wsbpel/2.0/wsbpel-v2.0.pdf . [12] Nadalin Anthony, Phil Griffin, Chris Kaler, Phillip Hallam-Baker, Ronald Monzillo, March 2004, Web Services Security Username Token Profile 1.0, recoverd from: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssusername-token-profile-1.0.pdf . [13] Vedamuthu Asir S, Orchard David, Hirsch Frederick, Hondo Maryann, Yendluri Prasad, Boubez Toufic, Yalçinalp Ümit, W3C Working Group Note 12 November 2007 ,Web Services Policy 1.5 - Guidelines for Policy Assertion Authors, recovered from : http://www.w3.org/TR/ws-policyguidelines/#comparison. [14] Vedamuthu Asir S, Orchard David, Hirsch Frederick, Hondo Maryann, Yendluri Prasad, Boubez Toufic, Yalçinalp Ümit, W3C Recommendation 04 September 2007, Web Services Policy 1.5 – Framework, recovered from http://www.w3.org/TR/2007/REC-ws-policy-20070904/. [15] Nadalin Anthony, Marc Goodner, Martin Gudgin, Abbie Barbir, Hans Granqvist, OASIS Standard 19 March 2007, WS-Trust 1.3, recovered from: http://docs.oasis-open.org/ws-sx/ws-trust/200512/ws-trust-1.3-

΢ει. 178 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

os.html#_Toc162064946. [16] Nadalin Anthony, Chris Kaler, Ronald Monzillo, Phillip Hallam-Baker, OASIS Standard Specification, 1 February 2006, Web Services Security X.509 Certificate Token Profile 1.1, recovered from: http://docs.oasis-open.org/wss/v1.1/wss-v1.1spec-os-x509TokenProfile.pdf. [17] Monzillo Ronald, Kaler Chris, Anthony Nadalin, Phillip Hallam-Baker, OASIS Standard, 1 February 2006, Web Services Security: SAML Token Profile 1.1, recovered from: http://www.oasis-open.org/committees/download.php/16768/wssv1.1-spec-os-SAMLTokenProfile.pdf. [18] Monzillo Ronald, Kaler Chris, Anthony Nadalin, Phillip Hallam-Baker, OASIS Standard, 1 February 2006, Web Services Security Kerberos Token Profile 1.1, recovered from: http://www.oasis-open.org/committees/download.php/16788/wssv1.1-spec-os-KerberosTokenProfile.pdf. [19] DeMartini Thomas, Monzillo Ronald, Kaler Chris, Anthony Nadalin, Phillip Hallam-Baker, OASIS Standard: 19 December 2004, Web Services Security 2 Rights Expression Language (REL)Token Profile. Recovered from: http://docs.oasis-open.org/wss/oasis-wss-rel-token-profile-1.0.pdf. [20] Juric B. Matjaz, Mathew Benny, Sarang Poornachabdra, January 2006, Business Proccess Execution Language for Web Services Second Edition. [21] Apache Axis Foundation, 23-12-2010, Apache Axis2 User's Guide, recovered from: http://axis.apache.org/axis2/java/core/docs/userguide.html#underhood. [22] Sosnoski Dennis, 16 Jun 2009, Java Web services: Axis2 WS-Security signing and encryption, recovered from: http://www.ibm.com/developerworks/java/library/j-jws5/. [23] Sosnoski Dennis, 7 July 2009, Java Web services: The high cost of (WS-) Security, recovered from: http://www.ibm.com/developerworks/java/library/jjws6/index.html.

΢ει. 179 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Παξάξηεκα: Αξρεία ΢ελαξίνπ Υξήζεο 5νπ Κεθαιαίνπ

Αξρείν purchaseOrderArtifacts.wsdl

<?xml version="1.0" encoding="UTF-8"?> <definitions targetNamespace="http://manufacturing.org/wsdl/purchase" xmlns:sns="http://manufacturing.org/xsd/purchase" xmlns:pos="http://manufacturing.org/wsdl/purchase" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"> <plnk:partnerLinkType name="purchasingLT"> <plnk:role name="purchaseService"> <plnk:portType name="pos:purchaseOrderPT" /> </plnk:role> <plnk:role name="getCredentials"> <plnk:portType name="pos:purchaseOrderPT" /> </plnk:role> </plnk:partnerLinkType> <plnk:partnerLinkType name="invoicingLT"> <plnk:role name="invoiceService"> <plnk:portType name="pos:computePricePT" /> </plnk:role> <plnk:role name="invoiceRequester"> <plnk:portType name="pos:invoiceCallbackPT" /> </plnk:role> </plnk:partnerLinkType> <plnk:partnerLinkType name="shippingLT"> <plnk:role name="shippingService"> <plnk:portType name="pos:shippingPT" /> </plnk:role> <plnk:role name="shippingRequester"> <plnk:portType name="pos:shippingCallbackPT" /> </plnk:role> </plnk:partnerLinkType> <plnk:partnerLinkType name="schedulingLT"> <plnk:role name="schedulingService"> <plnk:portType name="pos:schedulingPT" /> </plnk:role> </plnk:partnerLinkType> <plnk:partnerLinkType name="paymentServiceLT"> <plnk:role name="paumentService">

΢ει. 180 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

<plnk:portType name="ns0:paymentPT" /> </plnk:role> </plnk:partnerLinkType> <types> <xsd:schema> <xsd:import namespace="http://manufacturing.org/xsd/purchase" schemaLocation="purchase.xsd" /> </xsd:schema> </types> <message name="POMessage"> <part name="customerInfo" type="sns:customerInfo" /> <part name="purchaseOrder" type="sns:purchaseOrder" /> </message> <message name="InvMessage"> <part name="IVC" type="sns:Invoice" /> </message> <message name="orderFaultType"> <part name="problemInfo" element="sns:problemInfo" /> </message> <message name="shippingRequestMessage"> <part name="customerInfo" type="sns:customerInfo" /> </message> <message name="shippingInfoMessage"> <part name="shippingInfo" type="sns:shippingInfo" /> </message> <message name="scheduleMessage"> <part name="schedule" type="sns:scheduleInfo" /> </message> <message name="requestCCCRedentials"> <part name="creditCardInfo" type="sns:creditCardInfo"></part> </message> <message name="sendCredentialsToPaymentService"> <part name="sendingCreditCardInfo" type="sns:sendCredentials"/> </message> <message name="receivePaymentState"> <part name="receivePaymentState"type="sns:receivePaymentState"></part> </message> <message name="replyToCustomer"> <part name="replyToCustomer" type="sns:replyToCustomer"></part> </message> <!-- portTypes supported by the purchase order process --> <portType name="purchaseOrderPT"> <operation name="sendPurchaseOrder"> <input message="pos:POMessage" /> <output message="pos:InvMessage" /> <fault name="cannotCompleteOrder" message="pos:orderFaultType" /> </operation> <operation name="getCreditCardCredentials"> <input message="pos:requestCCCRedentials"></input> <output message="pos:receivePaymentState" /> <fault name="cannotCompletePayment" message="pos:orderFaultType" /> </operation>

΢ει. 181 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

</portType> <portType name="invoiceCallbackPT"> <operation name="sendInvoice"> <input message="pos:InvMessage" /> </operation> </portType> <portType name="shippingCallbackPT"> <operation name="sendSchedule"> <input message="pos:scheduleMessage" /> </operation> </portType> <portType name="paymentService"> <operation name="payment"> <input message="pos:requestCCCRedentials"></input> <output message="pos:receivePaymentState" /> <fault name="cannotCompletePayment" message="pos:orderFaultType" /> </operation> </portType> <!-- portType supported by the invoice services --> <portType name="computePricePT"> <operation name="initiatePriceCalculation"> <input message="pos:POMessage" /> </operation> <operation name="sendShippingPrice"> <input message="pos:shippingInfoMessage" /> </operation> </portType> <!-- portType supported by the shipping service --> <portType name="shippingPT"> <operation name="requestShipping"> <input message="pos:shippingRequestMessage" /> <output message="pos:shippingInfoMessage" /> <fault name="cannotCompleteOrder" message="pos:orderFaultType" /> </operation> </portType> <!-- portType supported by the production scheduling process --> <portType name="schedulingPT"> <operation name="requestProductionScheduling"> <input message="pos:POMessage" /> </operation> <operation name="sendShippingSchedule"> <input message="pos:scheduleMessage" /> </operation> </portType> <binding name="NewBinding" type="pos:purchaseOrderPT"></binding> <binding name="NewBinding1" type="pos:paymentService"></binding> <service name="PurchaseOrder">

΢ει. 182 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

<port name="PurchaseOdrerHttp Port" binding="pos:NewBinding"> <http:address location="http://localhost:8080/ode/processes/PurchaseOrder"/></port> </service> <service name="PaymentService"> <port name="PaymentServiceSOAP12port_SSL" binding="pos:NewBinding1"> <soap:address location="" /> </port> <port name="PaymentServiceSOAP11port_SSL" binding="pos:NewBinding1"> <soap:address location="http://www.PaymentService.com" /> </port> </service> </definitions>

Αξρείν PurchaseOrder.bpel

<!-- PurchaseOrder BPEL Process [Generated by the Eclipse BPEL Designer] --> <!-- Date: Mon Jan 24 14:50:33 EET 2011 --> <bpel:process name="PurchaseOrder" targetNamespace="http://PurchaseOrder.bpel" suppressJoinFailure="yes" xmlns:tns="http://PurchaseOrder" xmlns:bpel="http://docs.oasisopen.org/wsbpel/2.0/process/executable" xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <!-- Import the client WSDL --> <bpel:import location="PurchaseOrderArtifacts.wsdl" namespace="http://PurchaseOrder" importType="http://schemas.xmlsoap.org/wsdl/" /> <bpel:import location="PaymentServiceArtifacts.wsdl" namespace="http://PaymentService" importType="http://schemas.xmlsoap.org/wsdl/" /> <!-- partnerLinks of Service --> <patrtnerLinks> <partnerLink name="ReceiveOrder" xmlns:tns="http://PurchaseOrderArtifacts.wsdl" partnerLinkType="lns:ReceiveOrder" myRole="receivingOrderServiceLT"> </partnerLink> <partnerLink name="Invoicing" xmlns:tns="http://PurchaseOrderArtifacts.wsdl" partnerLinkType="lns:invoicingLT" myRole="invoiceRequester" partnerRole="invoiceService">

΢ει. 183 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

</partnerLink> <partnerLink name="shipping" xmlns:tns="http://PurchaseOrderArtifacts.wsdl" partnerLinkType="lns:shippingLT" myRole="shippingRequester" partnerRole="shippingService"> </partnerLink> <partnerLink name="scheduling" xmlns:tns="http://PurchaseOrderArtifacts.wsdl" partnerLinkType="lns:schedulingLT" myRole="schedulingService"> </partnerLink> <partnerLink name="PaymentService" xmlns:tns="http://PaymentServiceArtifacts.wsdl" partnerLinkType="ns0:paymentLT" partnerRole="paymentService"> </partnerLink> </patrtnerLinks> <!-- variables of service --> <variables> <variable name="PO" messageType="lns:POMessage" ></variable> <variable name="Invoice" messageType="lns:InvMessage" ></variable> <variable name="POFault" messageType="lns:orderFaultType" ></variable> <variable name="shippingRequest" messageType="lns:shippingRequestMessage" ></variable> <variable name="shippingInfo" messageType="lns:shippingInfoMessage" ></variable> <variable name="shippingSchedule" messageType="lns:scheduleMessage" ></variable> <variable name="creditCardCredentials" messageType="sns:creditCardInfo"></variable> <variable name="CredentialsToPaymentService" messageType="sns:sendCredentials"></variable> <varianle name="replyFromPaymentService" messageType="sns:receivePaymentState"></varianle> <variable name="getPaymentState" messageType="sns:receivePaymentState"></variable> </variables> <!-================================================================= --> <!-- ORCHESTRATION LOGIC --> <!-- Set of activities coordinating the flow of messages across the --> <!-- services integrated within this business process --> <!-================================================================= --> <bpel:faultHandlers> <bpel:catch><bpel:sequence><bpel:compensate></bpel:compensate><bpel:rethr ow></bpel:rethrow> <bpel:reply name="Reply">

΢ει. 184 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

</bpel:reply> </bpel:sequence> </bpel:catch> </bpel:faultHandlers> <bpel:sequence name="Main"> <bpel:receive name="ReceivePurchaseOrder" partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO" createInstance="yes"> </bpel:receive> <bpel:flow> <bpel:sequence name="Shipping"> <bpel:assign name="PrepareShipping"> <copy> <from variable="PO" part="customerInfo" /> <to variable="shippingRequest" part="customerInfo" /> </copy> </bpel:assign> <bpel:invoke name="RequestShipping" partnerLink="shipping" portType="lns:shippingPT" operation="requestShipping" inputVariable="shippingRequest" outputVariable="shippingInfo"> <bpel:targets> <bpel:target linkName="link2"></bpel:target> </bpel:targets> </bpel:invoke> <bpel:receive name="ReceiveSchedule" partnerLink="shipping" portType="lns:shippingCallbackPT" operation="sendSchedule" variable="shippingSchedule"> <source linkName="ship-to-scheduling" /> </bpel:receive> </bpel:sequence> <bpel:sequence name="Invoicing"> <bpel:invoke name="InitiatePriceCalculation" partnerLink="invoicing" portType="lns:computePricePT" operation="initiatePriceCalculation" inputVariable="PO" /> <bpel:invoke name="SendShippingPrice" partnerLink="invoicing" portType="lns:computePricePT" operation="sendShippingPrice" inputVariable="shippingInfo"> <bpel:sources> <bpel:source linkName="link2"></bpel:source> </bpel:sources> </bpel:invoke> <bpel:receive name="ReceiveInvoice" partnerLink="invoicing" portType="lns:invoiceCallbackPT" operation="sendInvoice" variable="Invoice"> <bpel:sources> <bpel:source linkName="link1"></bpel:source> </bpel:sources> </bpel:receive> </bpel:sequence>

΢ει. 185 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

<bpel:sequence name="Scheduling"> <bpel:invoke name="RequestScheduling" partnerLink="scheduling" portType="lns:schedulingPT" operation="requestProductionScheduling" inputVariable="PO"> </bpel:invoke> <bpel:invoke name="SendShippingSchedule" partnerLink="scheduling" portType="lns:schedulingPT" operation="sendShippingSchedule" inputVariable="shippingSchedule"> <bpel:targets> <bpel:target linkName="link1"></bpel:target> </bpel:targets> </bpel:invoke> </bpel:sequence> <bpel:links> <bpel:link name="link1"></bpel:link> <bpel:link name="link2"></bpel:link> </bpel:links> </bpel:flow> <bpel:reply name="SendPurchaseOrder" partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="Invoice"> </bpel:reply> <bpel:receive name="ReceiveCreditCard" partnerLink="invoicing" portType="lns:invoiceCallbackPT" operation="sendInvoice" variable="creditCardCredentials"> </bpel:receive> <bpel:assign validate="yes" name="PrepareElements"> <bpel:copy ignoreMissingFromData="no"> <bpel:from variable="creditCardCredentials"></bpel:from> <bpel:to variable="replyToCustomer"></bpel:to> </bpel:copy> </bpel:assign> <bpel:invoke name="InvokePaymentService" partnerLink="paymentServiceLT" portType="lns:schedulingPT" operation="payment" inputVariable="PO" outputVariable="replyFromPaymentService"> </bpel:invoke> <bpel:reply name="ReplyToCustomer" partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="getCreditCardCredentials" variable="replyFromPaymentService"> </bpel:reply> </bpel:sequence> </bpel:process>

΢ει. 186 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Αξρείν PaymentServiceArtifacts.wsdl

<?xml version="1.0"?> <definitions name="PaymentService" targetNamespace="http://PaymentService" xmlns:ns0="http://PaymentService" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsp="http://" xmlns:p="http://www.w3.org/2001/XMLSchema"> <plnk:partnerLinkType name="clientServiceLT"> <plnk:role name="sentCCC"> <plnk:portType name="pos:sendCCCPT" /> </plnk:role> </plnk:partnerLinkType> <plnk:partnerLinkType name="BankServiseLT"> <plnk:role name="sentCCCToBank"> <plnk:portType name="pos:BankPT" /> </plnk:role> </plnk:partnerLinkType> <types><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://PaymentService"> <xsd:element name="NewOperation"> <xsd:complexType> <xsd:sequence> <xsd:element name="in" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="NewOperationResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="out" type="xsd:string"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element></xsd:schema></types> <message name="getCCCFromClient"> <part name="getCCC" type="getCCC"/> </message> <message name="sendCCCToBankService"> <part name="sendingCCCToBankService" type="sendCCC"/> </message> <message name="getPaymentSatusFromBankService"> <part name="getSatus" type="getStatusFromBankService"/> </message> <message name="sendReplyToClientService"> <part name="sendingReplyToBankService" type="sendReply"/> </message>

΢ει. 187 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

<!-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SERVICE DEFINITION - A service groups a set of ports into a service unit. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <message name="NewOperationRequest"> <part name="parameters" element="ns0:NewOperation"></part> </message> <message name="NewOperationResponse"> <part name="parameters" element="ns0:NewOperationResponse"></part> </message> <message name="NewOperationRequest1"> <part name="NewOperationRequest1" type="p:string"></part> </message> <message name="NewOperationResponse1"> <part name="NewOperationResponse1" type="p:string"></part> </message> <portType name="clientServicePT"> <operation name="getingCCC"> <input message="ns0:getCCCFromClient" /> <output message="ns0:sendReplyToClientService" /> <fault name="bpel:conflictingRequest" message="ns0:serviceFaultType" /> </operation> </portType> <portType name="BankServicePT"> <operation name="sendingCCC"> <input message="ns0:sendCCCToBankService" /> <output message="ns0:getPaymentSatusFromBankService" name="getStatus"/> <fault name="bpel:conflictingRequest" message="ns0:serviceFaultType" /> </operation> </portType> <binding name="policyBinding" type="ns0:partOrderPortType"> <wsp:PolicyReference URI="http://www.paymentservice.com/policies/stricted"/> <soap:binding style="document" transport="http://shemas.xmlsoap.org/soap/http"/> <binding> </definitions>

΢ει. 188 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Aξρείν PaymentService.Bpel

<!-- PaymentService BPEL Process [Generated by the Eclipse BPEL Designer] --> <!-- Date: Mon Jan 24 15:14:20 EET 2011 --> <bpel:process name="PaymentService" targetNamespace="http://PaymentService" suppressJoinFailure="yes" xmlns:ns0="http://PaymentService" xmlns:bpel="http://docs.oasisopen.org/wsbpel/2.0/process/executable" > <!-- Import the client WSDL --> <bpel:import namespace="http://PurchaseOrder" location="PurchaseOrderArtifacts.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"> </bpel:import> <bpel:import location="PaymentServiceArtifacts.wsdl" namespace="http://PaymentService" importType="http://schemas.xmlsoap.org/wsdl/"> </bpel:import> <bpel:import namespace="http://BankCreditCartPAymentService" location="BankCreditCartPAymentServiceArtifacts.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"> </bpel:import> <!-================================================================= --> <!-- ORCHESTRATION LOGIC --> <!-- Set of activities coordinating the flow of messages across the --> <!-- services integrated within this business process --> <!-================================================================= --> <!-- partnerLinks of Service --> <patrtnerLinks> <partnerLink name="ReceiveCCCFromClientService" xmlns:tns="http://PaymentServiceArtifacts.wsdl" partnerLinkType="ns0:clientServiceLT" myRole="receivingCCC"> </partnerLink> <partnerLink name="ReceiveCreditCardPL" xmlns:tns="http://PurchaseOrderArtifacts.wsdl" partnerLinkType="ns0:ReceiveOrder" partnerRole="receivingOrderServiceLT"> </partnerLink> <partnerLink name="bankservise" xmlns:tns="http://BankService.wsdl" partnerLinkType="ns0:BankServiseLT" partnerRole="sendPaymentRequester"> </partnerLink>

΢ει. 189 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

</patrtnerLinks> <bpel:variables> <bpel:variable name="receiveCreditCardCredentials" messageType=""></bpel:variable> <bpel:variable name="sendCCCToBank" messageType=""</bpel:variable> <bpel:variable name="getPaymentStatus" messageType=""></bpel:variable> <bpel:variable name="ReplytoClient" messageType=""></bpel:variable> </bpel:variables> <bpel:faultHandlers> <bpel:catch faultName="bpel:conflictingRequest" faultVariable="conflictMessage"><bpel:sequence> <bpel:compensate></bpel:compensate> <bpel:rethrow></bpel:rethrow></bpel:sequence></bpel:catch> </bpel:faultHandlers> <bpel:sequence name="PaymentService"> <bpel:receive name="ReceiveCreditCard" partnerLink="ReceiveCreditCardPL" portType="clientService" operation="receivingCreditCard" inputVariable="receiveOrder" createInstance="yes"></bpel:receive> <bpel:assign validate="yes" name="Assign"> <bpel:copy ignoreMissingFromData="no"> <bpel:from variable="receiveCreditCardCredentials"></bpel:from> <bpel:to variable="sendCCCToBank"></bpel:to> </bpel:copy> </bpel:assign> <bpel:invoke name="Invoke" partnerLink="bankservise" portType="ns0:BankServicePT" operation="sendingCCC" inputVariable="sendCCCToBank" outputVariable="getPaymentStatus"> </bpel:invoke> <bpel:assign validate="no" name="Assign1"> <bpel:copy ignoreMissingFromData="no"> <bpel:from variable="getPaymentStatus"></bpel:from> <bpel:to variable="ReplytoClient"></bpel:to> </bpel:copy> </bpel:assign> <bpel:reply name="ReplyToService" partnerLink="ReceiveCreditCardPL" portType="ns0:clientServicePT" operation="receivingCreditCard" variable="ReplytoClient"> </bpel:reply> </bpel:sequence> </bpel:process>

΢ει. 190 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Αξρείν stricted.xml

<?xml version="1.0" encoding="UTF-8"?> <!-- Server policy for first signing and then encrypting all messages, with the certificate included in the message from client to server but only a thumbprinton messages from the server to the client. --> <wsp:Policy wsu:Id="SignEncr" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> <wsp:ExactlyOne> <wsp:All> <sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/wssx/ws-securitypolicy/200702"> <wsp:Policy> <sp:InitiatorToken> <wsp:Policy> <sp:X509Token sp:IncludeToken="http://docs.oasisopen.org/ws-sx/wssecuritypolicy/200702/IncludeToken/ AlwaysToRecipient"/> </wsp:Policy> </sp:InitiatorToken> <sp:RecipientToken> <wsp:Policy> <sp:X509Token sp:IncludeToken="http://docs.oasisopen.org/ws-sx/ws-securitypolicy/ 200702/IncludeToken/Never"> <wsp:Policy> <sp:RequireThumbprintReference/> </wsp:Policy> </sp:X509Token> </wsp:Policy> </sp:RecipientToken> <sp:AlgorithmSuite> <wsp:Policy> <sp:TripleDesRsa15/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> <wsp:Policy> <sp:Strict/> </wsp:Policy> </sp:Layout> <sp:IncludeTimestamp/> <sp:OnlySignEntireHeadersAndBody/> </wsp:Policy> </sp:AsymmetricBinding> <sp:SignedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/wssecuritypolicy/200702"> <sp:Body/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/wssecuritypolicy/200702">

΢ει. 191 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

<sp:Body/> </sp:EncryptedParts> <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy"> <ramp:user>serverkey</ramp:user> <ramp:encryptionUser>clientkey</ramp:encryptionUser> <ramp:passwordCallbackClass>com.panos.ws.library.adb.PWCBHandler</ramp:pa sswordCallbackClass> <ramp:signatureCrypto> <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS </ramp:property> <ramp:property name="org.apache.ws.security.crypto.merlin.file">server.keystore</ramp:pr operty> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">nosecret</r amp:property> </ramp:crypto> </ramp:signatureCrypto> <ramp:encryptionCrypto> <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin"> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:prope rty> <ramp:property name="org.apache.ws.security.crypto.merlin.file">server.keystore</ramp:pr operty> <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">nosecret</r amp:property> </ramp:crypto> </ramp:encryptionCrypto> </ramp:RampartConfig> </wsp:All> </wsp:ExactlyOne> </wsp:Policy>

΢ει. 192 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

Αξρείν WSSecuriy.java

import import import import import import import import import import import import import import import import import import import import import

org.apache.axis.Message; org.apache.axis.MessageContext; org.apache.axis.SOAPPart; org.apache.axis.client.AxisClient; org.apache.axis.configuration.NullProvider; org.apache.axis.message.SOAPEnvelope; org.apache.axis.utils.XMLUtils; org.apache.ws.axis.security.util.AxisUtil; org.apache.ws.security.components.crypto.Crypto; org.apache.ws.security.components.crypto.CryptoFactory; org.apache.ws.security.message.WSSignEnvelope; org.apache.ws.security.message.WSEncryptBody; org.apache.ws.security.message.WSSAddUsernameToken; org.apache.ws.security.message.token.SecurityTokenReference; org.apache.ws.security.message.token.Reference; org.apache.ws.security.WSSecurityEngine; org.apache.ws.security.WSConstants; org.apache.ws.security.WSSConfig; org.apache.ws.security.util.WSSecurityUtil; org.w3c.dom.Document; org.w3c.dom.Element;

import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.PrintWriter; public class WSSecuritySample { public Message signSOAPEnvelope(SOAPEnvelope unsignedEnvelope) throws Exception { // WSSignEnvelope signs a SOAP envelope according to the // WS Specification (X509 profile) and adds the signature data // to the envelope. WSSignEnvelope signer = new WSSignEnvelope(); String alias = "16c73ab6-b892-458f-abf5-2f875f74882e"; String password = "security"; signer.setUserInfo(alias, password); Document doc = unsignedEnvelope.getAsDocument(); // The "crypto" parameter is the object that implements // access to the keystore and handling of certificates. // A default implementation is included: // org.apache.ws.security.components.crypto.Merlin Document signedDoc = signer.build(doc, crypto); // Convert the signed document into a SOAP message. Message signedSOAPMsg = (org.apache.axis.Message)AxisUtil.toSOAPMessage(signedDoc);

΢ει. 193 από 195


Δθαξκνγή ηεο BPEL ζηνλ νξηζκφ WS-Security

return signedSOAPMsg; } public Message encryptSOAPEnvelope(SOAPEnvelope unsignedEnvelope, Message axisMessage) throws Exception { WSEncryptBody encrypt = new WSEncryptBody(); encrypt.setUserInfo("16c73ab6-b892-458f-abf5-2f875f74882e"); // Before Encryption Document doc = unsignedEnvelope.getAsDocument(); Document encryptedDoc = encrypt.build(doc, crypto); // Convert the document into a SOAP message. Message encryptedMsg = (Message) AxisUtil.toSOAPMessage(encryptedDoc); String soapPart = encryptedMsg.getSOAPPartAsString(); ((SOAPPart)axisMessage.getSOAPPart()).setCurrentMessage(soapPart, SOAPPart.FORM_STRING); encryptedDoc = axisMessage.getSOAPEnvelope().getAsDocument(); // Convert the document into a SOAP message. Message encryptedSOAPMsg = (Message)AxisUtil.toSOAPMessage(encryptedDoc); return encryptedSOAPMsg; } }

΢ει. 194 από 195


Apply BPEL to WSS