When I am writing a web service that needs authentication, I usually have to choose between two options:
- I can have a dedicated authentication call that creates a session. All subsequent calls are authenticated over a cookie. This is exactly how you would do authentication in a classic web site. This is not hard to write, but is not stateless. 
- I can send authentication information (such as credentials, a token, whatever) on each single request. This way it's stateless, but there is more overhead. 
Are there suggested best practices which way you should go? Why?
