Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as...

25
Secure Web Services with Apache Rampart/C

Transcript of Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as...

Page 1: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

Secure Web Services with

Apache Rampart/C

Page 2: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

2

Why to secure web services?

The world is not nice, as it seems !!!

Page 3: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

3

Threats

Common to distributed systems Specific to web services

Page 4: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

4

Common threats

Message replays Identity spoofing DOS attacks Message alteration/Integrity Confidentiality issues

Page 5: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

5

Threats on web services

Public disclosure UDDI, WSDL SOAP bound to HTTP/SMTP can easily pass

through firewalls Unpredictable order of service invocation Less human scrutiny Limitations of SOAP

Origin verification Integrity, confidentiality

Page 6: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

6

That's why...

WS-Security*

Page 7: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

7

Transport Level Vs Message Level Security

Page 8: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

8

Why Message Level Security? Multiple intermediaries

Operations to messages Observation

Security even after the safe delivery Non-repudiation Secure specific parts of the message

?

Page 9: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

9

Rampart/C Features

Timestamps Username Token Profile X509 Token Profile SOAP message encryption SOAP message signature WS-Security Policy Support Replay detection

Page 10: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

10

Overview

Page 11: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

11

Detailed Architecture

Page 12: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

12

OMXMLSecurity

Page 13: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

13

Apache Axis2/C deployment

Client axis2.xml [Engage] policy.xml [Policy]

Service services.xml [Engage + Policy] axis2.xml [Engage : optional]

Page 14: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

14

Apache Axis2/C deployment

Page 15: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

15

An Encrypted Message

Page 16: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

16

Rampart/C usages

WSF/C WSF/PHP WSF/Ruby

Page 17: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

17

Security in WSF/PHP

Page 18: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

18

Secured WSF/PHP Client

1.Create an array of security properties

2.Creating a policy object populated with the above security property array

3.Creating a WSSecutiyToken object4.Creating a WSClient object 5.Request

Page 19: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

19

$rec_cert = ws_get_cert_from_file('../keys/bob_cert.cert'); $pvt_key = ws_get_key_from_file('../keys/alice_key.pem');

$reqMessage = new WSMessage($reqPayloadString, array("to"=>"http://localhost/samples/security/encryption/encrypt_service.php", "action" => "http://php.axis2.org/samples/echoString"));

$sec_array = array("encrypt"=>TRUE, "algorithmSuite" => "Basic256Rsa15", "securityTokenReference" => "EmbeddedToken");

$policy = new WSPolicy(array("security"=>$sec_array)); $sec_token = new WSSecurityToken(array("privateKey" => $pvt_key, "receiverCertificate" => $rec_cert));

$client = new WSClient(array("useWSA" => TRUE, "policy" => $policy, "securityToken" => $sec_token));

$resMessage = $client->request($reqMessage);

PHP Client example

Page 20: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

20

Secured WSF/PHP Service

1.Create an array of security properties

2.Creating a policy object populated with the above security property array

3.Creating a WSSecutiyToken object4.Creating a WSService object 5.Reply

Page 21: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

21

PHP Service example$pub_key = ws_get_cert_from_file("/your/path/to/cert.cert");$pvt_key = ws_get_key_from_file("/your/path/to/key.pem");

$operations = array("echoString" => "echoFunction");

$sec_array = array("encrypt" => TRUE, "algorithmSuite" => "Basic256Rsa15", "securityTokenReference" => "IssuerSerial");

$actions = array("http://php.axis2.org/samples/echoString" => "echoString");

$policy = new WSPolicy(array("security"=>$sec_array));$sec_token = new WSSecurityToken(array("privateKey" => $pvt_key, "receiverCertificate" =>$pub_key));

$svr = new WSService(array("actions" => $actions, "operations" => $operations, "policy" => $policy, "securityToken" => $sec_token));

$svr->reply();

Page 22: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

22

Would Rampart/C be enough? NO...!!!

There are threats that cannot be addressed by WS-Security* alone e.g. XML bombs, SQL injection

Design your services carefully and use Rampart/C

Page 23: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

23

What's ahead?

WS-Secure Conversation WS-Trust WS-Federation

Page 24: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

24

Questions?

Page 25: Secure Web Services with Apache Rampart/C. 2 Why to secure web services? The world is not nice, as it seems !!!

25

More readings...

http://wso2.org/library/2814 http://wso2.org/library/2917 http://wso2.org/library/2702