Isenção de responsabilidade: sou novo na escola de pensamento REST e estou tentando entender isso.
Portanto, estou lendo esta página, Common REST Mistakes , e descobri que estou completamente confuso com a seção sobre as sessões que são irrelevantes. É o que a página diz:
Não deve haver necessidade de um cliente "fazer login" ou "iniciar uma conexão". A autenticação HTTP é feita automaticamente em todas as mensagens. Os aplicativos clientes são consumidores de recursos, não de serviços. Portanto, não há nada para fazer login! Digamos que você esteja reservando um voo em um serviço da web REST. Você não cria uma nova conexão de "sessão" com o serviço. Em vez disso, você pede ao "objeto criador do itinerário" para criar um novo itinerário para você. Você pode começar a preencher os espaços em branco, mas depois obter um componente totalmente diferente em outro lugar na Web para preencher outros espaços em branco. Não há sessão, portanto não há problema em migrar o estado da sessão entre clientes. Também não há problema de "afinidade de sessão"
Ok, entendi que a autenticação HTTP é feita automaticamente em todas as mensagens - mas como? O nome de usuário / senha é enviado a cada solicitação? Isso não apenas aumenta a área de ataque? Sinto que estou perdendo parte do quebra-cabeça.
Seria ruim ter um serviço REST, por exemplo, /session
que aceite uma solicitação GET, onde você passaria um nome de usuário / senha como parte da solicitação e retornaria um token de sessão se a autenticação fosse bem-sucedida, que poderia ser passado junto com solicitações subsequentes? Isso faz sentido do ponto de vista do REST ou está faltando esse ponto?