REST security is transport dependent
while SOAP security is not.
REST inherits security measures from
the underlying transport while SOAP defines its own via WS-Security.
When we talk about REST, over HTTP -
all security measures applied HTTP are inherited and this is known as transport
level security.
Transport level security, secures
your message only while its on the wire - as soon as it leaves the wire, the
message is no more secured.
But, with WS-Security, its message
level security - even though the message leaves the transport channel it will
be still protected. Also - with message level security you can partly encrypt
the message [not the entire message, but only the parts you want] - but with
transport level security you can't do it.
WS-Security has measures for
authentication, integrity, confidentiality and non-repudiation while SSL
doesn't support non repudiation [with 2-legged OAuth it does].
In performance-wise SSL is very much
faster than WS-Security.
REST permits many different data formats where as SOAP only permits XML
REST has better performance
and scalability. REST reads can be cached, SOAP based reads cannot be cached.
WS-Security
While SOAP supports SSL (just like
REST) it also supports WS-Security which adds some enterprise security
features. Supports identity through intermediaries, not just point to point
(SSL). It also provides a standard implementation of data integrity and data
privacy. Calling it “Enterprise” isn’t to say it’s more secure, it simply
supports some security tools that typical internet services have no need for,
in fact they are really only needed in a few “enterprise” scenarios.
WS-AtomicTransaction
Need ACID Transactions over a
service, you’re going to need SOAP. While REST supports transactions, it isn’t
as comprehensive and isn’t ACID compliant. Fortunately ACID transactions almost
never make sense over the internet. REST is limited by HTTP itself which can’t
provide two-phase commit across distributed transactional resources, but SOAP
can. Internet apps generally don’t need this level of transactional
reliability, enterprise apps sometimes do.
WS-ReliableMessaging
Rest doesn’t have a standard
messaging system and expects clients to deal with
communication failures by retrying.
SOAP has successful/retry logic built in and provides end-to-end reliability
even through SOAP intermediaries.
HTTPS prevents attackers from eavesdropping on the communication between two systems. It also verifies that the host system (server) is actually the host system the user intends to access.
WS-Security prevents unauthorized applications (users) from accessing the system.
In point-to-point situations confidentiality and
data integrity can also be enforced on Web services through the use of
Transport Layer Security (TLS), for example, by sending messages over https.
WS-Security however addresses the
wider problem of maintaining integrity and confidentiality of messages until
after a message was sent from the originating node, providing so called end to
end security.
That is:
- HTTPS is a transport layer (point-to-point) security mechanism
- WS-Security is an application layer (end-to-end) security mechanism.
SSL (HTTP/s) is only one layer
ensuring:
- The server being connected to presents a certificate proving its identity (though this can be spoofed through DNS poisoning).
- The communications layer is encrypted (no eavesdropping).
WS-Security and related
standards/implementations use PKI that:
- Prove the identity of the client.
- Prove the message was not modified in-transit (MITM).
- Allows the server to authenticate/authorize the client.
The last point is important for
service requests when the identity of the client (caller) is paramount to knowing
IF they should be authorized to receive such data from the service. Standard
SSL is one-way (server) authentication and does nothing to identify the client.
No comments:
Post a Comment