I am building a RESTful web service using ASP.NET web API. I’ve read that it isn’t very RESTful to use session authentication since a “login” request is required before any other request can be successfully made. In addition, it requires the client to maintain state.
My original design was to have the client call a “login” request using basic HTTP authentication over SSL. The web service would then verify the credentials and respond with a session key. The client then uses that session key to sign all subsequent requests. When the web service receives any of these requests it looks up the session key, signs the request in the same way, and checks if the two signatures are equal.
Is it possible to avoid this session authentication without having to send the username/password with each request? The credential verification does not happen within the web service (it is routed to another server that maintains users). I’m concerned that performance will be affected if I need to validate each request.
It’s not possible. You either store the state or get the credentials with each request. The second option is what you would want with your HTTP API.