OASIS Web Services Security
describes how to use SAML with SOAP web services. The signed SAML
Assertion should be added to the SOAP header... and so on. However,
there is no specification that describes how to add SAML to REST web
services. The reason that there is no such specification is simple:
REST is not a standard, but it's an architectural style. So it's
impossible to define standard that is not based on standard.
And
still we would like to support SAML for our REST web services. Why? The
same reason we support SAML for SOAP web services: it's a standard,
it's convenient, many frameworks start to support it and so on.
The
solution is quite simple. Since REST web services are based on HTTP
protocol we can use the HTTP Redirect Binding (see SAML Bindings, 3.4)
to send the Unsolicited Responses (see SAML Profiles, 4.1.5). Since
there is no problem to add the necessary query parameters to any HTTP
method, the HTTP Redirect Binding with Unsolicited Responses covers the
same scenario we have with SOAP without defining the additional
standards.
The only concern I have
about this solution is the url length. Theoretically the url length is
infinite, but of cause it cannot be supported. Each vendor limits the
url length in its way and if the SAML Response will be very long, it
may cause the url to be truncated. Which will cause failure to parse or
validate the SAML Response.
Read the complete article at Tarlog.